FAILURE MAP
← Case archive

FA-14556 / Numerics / Open access

Calkin wilf successors: next rational denominator · case 01

The exact calkin wilf successors result violates the stated contract at next rational denominator.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The next rational denominator step uses (a+1)*q-p instead of (2*a+1)*q-p.

VERIFIED REPAIR

Use (2*a+1)*q-p at the next rational denominator step.

Unsuccessful approach: The partial repair (2*a+1)*q+p still violates the next rational denominator 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(x):
     out.append([p,q])
     if q==0:return None
     a=p//q
     den=(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 = [[(2, [[1, 1], [1, 2]]), (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]]), (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]])], [(3, [[1, 1], [1, 2], [2, 1]]), (5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (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]])], [(4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (8, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4]]), (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]])], [(5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (11, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2]]), (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]]), (6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]])], [(6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]]), (14, [[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]]), (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 fixtureActualExpectedOutcome
explicit oracle 0[[1, 1], [1, 1]][[1, 1], [1, 2]]Failed
explicit oracle 1[[1, 1]][[1, 1]]Passed
explicit oracle 2[[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 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]]Failed
explicit oracle 3[[1, 1], [1, 1], [1, 1]][[1, 1], [1, 2], [2, 1]]Failed
explicit oracle 4[[1, 1], [1, 1], [1, 1], [1, 1]][[1, 1], [1, 2], [2, 1], [1, 3]]Failed
explicit oracle 5[[1, 1], [1, 1], [1, 1], [1, 1], [1, 1]][[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]Failed
explicit oracle 6[[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]][[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]]Failed
explicit oracle 7[[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]][[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]]Failed

SHA-256 / 14e640100bc0451701679686d00f26def1ef9f4c6c731cc4cadf0cde94ac0024

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):
     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 = [[(2, [[1, 1], [1, 2]]), (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]]), (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]])], [(3, [[1, 1], [1, 2], [2, 1]]), (5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (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]])], [(4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (8, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4]]), (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]])], [(5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (11, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2]]), (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]]), (6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]])], [(6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]]), (14, [[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]]), (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 fixtureActualExpectedOutcome
explicit oracle 0[[1, 1], [1, 4]][[1, 1], [1, 2]]Failed
explicit oracle 1[[1, 1]][[1, 1]]Passed
explicit oracle 2[[1, 1], [1, 4], [4, 5], [5, 9], [9, 14], [14, 23], [23, 37], [37, 60], [60, 97], [97, 157], [157, 254], [254, 411], [411, 665], [665, 1076], [1076, 1741], [1741, 2817], [2817, 4558], [4558, 7375], [7375, 11933], [11933, 19308], [19308, 31241], [31241, 50549], [50549, 81790], [81790, 132339], [132339, 214129], [214129, 346468], [346468, 560597], [560597, 907065], [907065, 1467662], [1467662, 2374727], [2374727, 3842389], [3842389, 6217116], [6217116, 10059505], [10059505, 16276621], [16276621, 26336126], [26336126, 42612747], [42612747, 68948873], [68948873, 111561620], [111561620, 180510493], [180510493, 292072113], [292072113, 472582606], [472582606, 764654719], [764654719, 1237237325], [1237237325, 2001892044], [2001892044, 3239129369], [3239129369, 5241021413], [5241021413, 8480150782], [8480150782, 13721172195], [13721172195, 22201322977], [22201322977, 35922495172]][[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 3[[1, 1], [1, 4], [4, 5]][[1, 1], [1, 2], [2, 1]]Failed
explicit oracle 4[[1, 1], [1, 4], [4, 5], [5, 9]][[1, 1], [1, 2], [2, 1], [1, 3]]Failed
explicit oracle 5[[1, 1], [1, 4], [4, 5], [5, 9], [9, 14]][[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]Failed
explicit oracle 6[[1, 1], [1, 4], [4, 5], [5, 9], [9, 14], [14, 23]][[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]]Failed
explicit oracle 7[[1, 1], [1, 4], [4, 5], [5, 9], [9, 14], [14, 23], [23, 37]][[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1]]Failed

SHA-256 / 9d6d1ea0ab6c3e2a2d70d6947019d484bf8207eeb5b239466d4981b3d79263dd

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 = [[(2, [[1, 1], [1, 2]]), (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]]), (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]])], [(3, [[1, 1], [1, 2], [2, 1]]), (5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (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]])], [(4, [[1, 1], [1, 2], [2, 1], [1, 3]]), (8, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4]]), (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]])], [(5, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2]]), (11, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3], [3, 1], [1, 4], [4, 3], [3, 5], [5, 2]]), (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]]), (6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]])], [(6, [[1, 1], [1, 2], [2, 1], [1, 3], [3, 2], [2, 3]]), (14, [[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]]), (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 fixtureActualExpectedOutcome
explicit oracle 0[[1, 1], [1, 2]][[1, 1], [1, 2]]Passed
explicit oracle 1[[1, 1]][[1, 1]]Passed
explicit oracle 2[[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 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 / 6a8d326cd09756f6f2e37630cfb7a5c8daff307613c3e2207a707fa1bdf91632

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.968138+00:00.

Case digest / 530a27a8eea42070ff2f28963d24927b967b6d0a0451386f97c62f50ec0a80e5