FA-14546 / Numerics / Open access
Calkin wilf successors: successor output count · case 01
The exact calkin wilf successors result violates the stated contract at successor output count.
ROOT CAUSE
The successor output count step uses range(1,x) instead of range(x).
VERIFIED REPAIR
Use range(x) at the successor output count step.
Unsuccessful approach: The partial repair range(x+1) still violates the successor output count invariant.
Case contract
Input positive count k<=50; return first k reduced positive rationals in Calkin-Wilf breadth-first order.
Why this case matters
Exact discrete arithmetic with observable algorithmic state; no floating point approximation is used.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
import itertools
from fractions import Fraction
N = 1
observations = []
def solve(x):
p,q=1,1
out=[]
for _ in range(1,x):
out.append([p,q])
if q==0:return None
a=p//q
den=(2*a+1)*q-p
p,q=q,den
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[(1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (2, [[1, 1], [1, 2]]), (3, [[1, 1], [1, 2], [2, 1]]), (4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]]), (7, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]])], [(2, [[1, 1], [1, 2]]), (4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (18, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7]]), (19, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3]]), (20, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8]]), (21, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5]])], [(3, [[1, 1], [1, 2], [2, 1]]), (7, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (35, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4]]), (36, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11]]), (37, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7]]), (38, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10]])], [(4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (10, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (2, [[1, 1], [1, 2]]), (3, [[1, 1], [1, 2], [2, 1]]), (5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]])], [(5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (13, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (19, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3]]), (20, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8]]), (21, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5]]), (22, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7]])]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("explicit oracle %d" % i, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| explicit oracle 0 | [] | [[1, 1]] | Failed |
| explicit oracle 1 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]] | Failed |
| explicit oracle 2 | [[1, 1]] | [[1, 1], [1, 2]] | Failed |
| explicit oracle 3 | [[1, 1], [1, 2]] | [[1, 1], [1, 2], [2, 1]] | Failed |
| explicit oracle 4 | [[1, 1], [1, 2], [2, 1]] | [[1, 1], [1, 2], [2, 1], [1, 3]] | Failed |
| explicit oracle 5 | [[1, 1], [1, 2], [2, 1], [1, 3]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]] | Failed |
| explicit oracle 6 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]] | Failed |
| explicit oracle 7 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]] | Failed |
SHA-256 / b9d2604e832067599109b11548b5987a253eca1a1481f0bc5e3e7e30a429e8e3
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
import itertools
from fractions import Fraction
N = 1
observations = []
def solve(x):
p,q=1,1
out=[]
for _ in range(x+1):
out.append([p,q])
if q==0:return None
a=p//q
den=(2*a+1)*q-p
p,q=q,den
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[(1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (2, [[1, 1], [1, 2]]), (3, [[1, 1], [1, 2], [2, 1]]), (4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]]), (7, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]])], [(2, [[1, 1], [1, 2]]), (4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (18, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7]]), (19, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3]]), (20, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8]]), (21, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5]])], [(3, [[1, 1], [1, 2], [2, 1]]), (7, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (35, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4]]), (36, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11]]), (37, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7]]), (38, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10]])], [(4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (10, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (2, [[1, 1], [1, 2]]), (3, [[1, 1], [1, 2], [2, 1]]), (5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]])], [(5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (13, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (19, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3]]), (20, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8]]), (21, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5]]), (22, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7]])]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("explicit oracle %d" % i, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| explicit oracle 0 | [[1, 1], [1, 2]] | [[1, 1]] | Failed |
| explicit oracle 1 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12], [12, 5]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]] | Failed |
| explicit oracle 2 | [[1, 1], [1, 2], [2, 1]] | [[1, 1], [1, 2]] | Failed |
| explicit oracle 3 | [[1, 1], [1, 2], [2, 1], [1, 3]] | [[1, 1], [1, 2], [2, 1]] | Failed |
| explicit oracle 4 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]] | [[1, 1], [1, 2], [2, 1], [1, 3]] | Failed |
| explicit oracle 5 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]] | Failed |
| explicit oracle 6 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]] | Failed |
| explicit oracle 7 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]] | Failed |
SHA-256 / dcdd80aa2a658e1d720557fce83bd32d7d721101acabf821995afb78c5f52de2
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
import itertools
from fractions import Fraction
N = 1
observations = []
def solve(x):
p,q=1,1
out=[]
for _ in range(x):
out.append([p,q])
if q==0:return None
a=p//q
den=(2*a+1)*q-p
p,q=q,den
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[(1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (2, [[1, 1], [1, 2]]), (3, [[1, 1], [1, 2], [2, 1]]), (4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]]), (7, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]])], [(2, [[1, 1], [1, 2]]), (4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (18, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7]]), (19, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3]]), (20, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8]]), (21, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5]])], [(3, [[1, 1], [1, 2], [2, 1]]), (7, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (35, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4]]), (36, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11]]), (37, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7]]), (38, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10]])], [(4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (10, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (2, [[1, 1], [1, 2]]), (3, [[1, 1], [1, 2], [2, 1]]), (5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]])], [(5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (13, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3]]), (1, [[1, 1]]), (50, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]]), (19, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3]]), (20, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8]]), (21, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5]]), (22, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7]])]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("explicit oracle %d" % i, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| explicit oracle 0 | [[1, 1]] | [[1, 1]] | Passed |
| explicit oracle 1 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2], [2, 5], [5, 3], [3, 4], [4, 1], [1, 5], [5, 4], [4, 7], [7, 3], [3, 8], [8, 5], [5, 7], [7, 2], [2, 7], [7, 5], [5, 8], [8, 3], [3, 7], [7, 4], [4, 5], [5, 1], [1, 6], [6, 5], [5, 9], [9, 4], [4, 11], [11, 7], [7, 10], [10, 3], [3, 11], [11, 8], [8, 13], [13, 5], [5, 12], [12, 7], [7, 9], [9, 2], [2, 9], [9, 7], [7, 12]] | Passed |
| explicit oracle 2 | [[1, 1], [1, 2]] | [[1, 1], [1, 2]] | Passed |
| explicit oracle 3 | [[1, 1], [1, 2], [2, 1]] | [[1, 1], [1, 2], [2, 1]] | Passed |
| explicit oracle 4 | [[1, 1], [1, 2], [2, 1], [1, 3]] | [[1, 1], [1, 2], [2, 1], [1, 3]] | Passed |
| explicit oracle 5 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]] | Passed |
| explicit oracle 6 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]] | Passed |
| explicit oracle 7 | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]] | [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]] | Passed |
SHA-256 / 9dc416be4a5678a9644a43c22f670540cf11a20cc1608313992df23e70d011aa
Verification & scope
A deterministic bounded teaching model. Inputs are restricted to the explicit contract; this is not a production algebra library. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:39:17.871538+00:00.
Case digest / 8b300c6b1fa5ee81b99782e76220ba42d3970efdc6647d5371498522cd0eaa94