FAILURE MAP
← Case archive

FA-14916 / Numerics / Open access

Pell positive solutions: unit solution seed · case 01

The exact pell positive solutions result violates the stated contract at unit solution seed.

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

ROOT CAUSE

The unit solution seed step uses 0,1 instead of 1,0.

VERIFIED REPAIR

Use 1,0 at the unit solution seed step.

Unsuccessful approach: The partial repair u,v still violates the unit solution seed invariant.

Case contract

Input [D,u,v,k], known positive fundamental solution u^2-D*v^2=1, k>=0; return first k positive solutions.

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):
    D,u,v,k=x
    a,b=0,1
    out=[]
    for _ in range(k):
     a,b=a*u+D*b*v,a*v+b*u
     out.append([a,b])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([2, 3, 2, 1], [[3, 2]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([2, 3, 2, 2], [[3, 2], [17, 12]]), ([2, 3, 2, 3], [[3, 2], [17, 12], [99, 70]]), ([2, 3, 2, 4], [[3, 2], [17, 12], [99, 70], [577, 408]]), ([2, 3, 2, 5], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]]), ([2, 3, 2, 6], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860]])], [([2, 3, 2, 2], [[3, 2], [17, 12]]), ([2, 3, 2, 4], [[3, 2], [17, 12], [99, 70], [577, 408]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([3, 2, 1, 8], [[2, 1], [7, 4], [26, 15], [97, 56], [362, 209], [1351, 780], [5042, 2911], [18817, 10864]]), ([5, 9, 4, 0], []), ([5, 9, 4, 1], [[9, 4]]), ([5, 9, 4, 2], [[9, 4], [161, 72]])], [([2, 3, 2, 3], [[3, 2], [17, 12], [99, 70]]), ([2, 3, 2, 7], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860], [114243, 80782]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([6, 5, 2, 7], [[5, 2], [49, 20], [485, 198], [4801, 1960], [47525, 19402], [470449, 192060], [4656965, 1901198]]), ([6, 5, 2, 8], [[5, 2], [49, 20], [485, 198], [4801, 1960], [47525, 19402], [470449, 192060], [4656965, 1901198], [46099201, 18819920]]), ([7, 8, 3, 0], []), ([7, 8, 3, 1], [[8, 3]])], [([2, 3, 2, 4], [[3, 2], [17, 12], [99, 70], [577, 408]]), ([3, 2, 1, 2], [[2, 1], [7, 4]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([10, 19, 6, 6], [[19, 6], [721, 228], [27379, 8658], [1039681, 328776], [39480499, 12484830], [1499219281, 474094764]]), ([10, 19, 6, 7], [[19, 6], [721, 228], [27379, 8658], [1039681, 328776], [39480499, 12484830], [1499219281, 474094764], [56930852179, 18003116202]]), ([10, 19, 6, 8], [[19, 6], [721, 228], [27379, 8658], [1039681, 328776], [39480499, 12484830], [1499219281, 474094764], [56930852179, 18003116202], [2161873163521, 683644320912]]), ([11, 10, 3, 0], [])], [([2, 3, 2, 5], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]]), ([3, 2, 1, 5], [[2, 1], [7, 4], [26, 15], [97, 56], [362, 209]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([12, 7, 2, 5], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658]]), ([12, 7, 2, 6], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658], [3650401, 1053780]]), ([12, 7, 2, 7], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658], [3650401, 1053780], [50843527, 14677262]]), ([12, 7, 2, 8], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658], [3650401, 1053780], [50843527, 14677262], [708158977, 204427888]])]]
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[[4, 3]][[3, 2]]Failed
explicit oracle 1[][]Passed
explicit oracle 2[[2340, 649], [3037320, 842401], [3942439020, 1093435849], [5117282810640, 1419278889601], [6642229145771700, 1842222905266249], [8621608313928855960, 2391203911756701601], [11190840949250509264380, 3103780835237293411849], [14525702930518847096309280, 4028705132934095091878401]][[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]Failed
explicit oracle 3[[4, 3], [24, 17]][[3, 2], [17, 12]]Failed
explicit oracle 4[[4, 3], [24, 17], [140, 99]][[3, 2], [17, 12], [99, 70]]Failed
explicit oracle 5[[4, 3], [24, 17], [140, 99], [816, 577]][[3, 2], [17, 12], [99, 70], [577, 408]]Failed
explicit oracle 6[[4, 3], [24, 17], [140, 99], [816, 577], [4756, 3363]][[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]]Failed
explicit oracle 7[[4, 3], [24, 17], [140, 99], [816, 577], [4756, 3363], [27720, 19601]][[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860]]Failed

SHA-256 / 5c3d6a1536411df490b3bb0719576ad8c0c9c21103ac17ea1f4c8bddf536b305

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):
    D,u,v,k=x
    a,b=u,v
    out=[]
    for _ in range(k):
     a,b=a*u+D*b*v,a*v+b*u
     out.append([a,b])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([2, 3, 2, 1], [[3, 2]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([2, 3, 2, 2], [[3, 2], [17, 12]]), ([2, 3, 2, 3], [[3, 2], [17, 12], [99, 70]]), ([2, 3, 2, 4], [[3, 2], [17, 12], [99, 70], [577, 408]]), ([2, 3, 2, 5], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]]), ([2, 3, 2, 6], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860]])], [([2, 3, 2, 2], [[3, 2], [17, 12]]), ([2, 3, 2, 4], [[3, 2], [17, 12], [99, 70], [577, 408]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([3, 2, 1, 8], [[2, 1], [7, 4], [26, 15], [97, 56], [362, 209], [1351, 780], [5042, 2911], [18817, 10864]]), ([5, 9, 4, 0], []), ([5, 9, 4, 1], [[9, 4]]), ([5, 9, 4, 2], [[9, 4], [161, 72]])], [([2, 3, 2, 3], [[3, 2], [17, 12], [99, 70]]), ([2, 3, 2, 7], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860], [114243, 80782]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([6, 5, 2, 7], [[5, 2], [49, 20], [485, 198], [4801, 1960], [47525, 19402], [470449, 192060], [4656965, 1901198]]), ([6, 5, 2, 8], [[5, 2], [49, 20], [485, 198], [4801, 1960], [47525, 19402], [470449, 192060], [4656965, 1901198], [46099201, 18819920]]), ([7, 8, 3, 0], []), ([7, 8, 3, 1], [[8, 3]])], [([2, 3, 2, 4], [[3, 2], [17, 12], [99, 70], [577, 408]]), ([3, 2, 1, 2], [[2, 1], [7, 4]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([10, 19, 6, 6], [[19, 6], [721, 228], [27379, 8658], [1039681, 328776], [39480499, 12484830], [1499219281, 474094764]]), ([10, 19, 6, 7], [[19, 6], [721, 228], [27379, 8658], [1039681, 328776], [39480499, 12484830], [1499219281, 474094764], [56930852179, 18003116202]]), ([10, 19, 6, 8], [[19, 6], [721, 228], [27379, 8658], [1039681, 328776], [39480499, 12484830], [1499219281, 474094764], [56930852179, 18003116202], [2161873163521, 683644320912]]), ([11, 10, 3, 0], [])], [([2, 3, 2, 5], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]]), ([3, 2, 1, 5], [[2, 1], [7, 4], [26, 15], [97, 56], [362, 209]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([12, 7, 2, 5], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658]]), ([12, 7, 2, 6], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658], [3650401, 1053780]]), ([12, 7, 2, 7], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658], [3650401, 1053780], [50843527, 14677262]]), ([12, 7, 2, 8], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658], [3650401, 1053780], [50843527, 14677262], [708158977, 204427888]])]]
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[[17, 12]][[3, 2]]Failed
explicit oracle 1[][]Passed
explicit oracle 2[[842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560], [5229256158767620191964752649, 1450334708690193406192321620]][[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]Failed
explicit oracle 3[[17, 12], [99, 70]][[3, 2], [17, 12]]Failed
explicit oracle 4[[17, 12], [99, 70], [577, 408]][[3, 2], [17, 12], [99, 70]]Failed
explicit oracle 5[[17, 12], [99, 70], [577, 408], [3363, 2378]][[3, 2], [17, 12], [99, 70], [577, 408]]Failed
explicit oracle 6[[17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860]][[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]]Failed
explicit oracle 7[[17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860], [114243, 80782]][[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860]]Failed

SHA-256 / 6076e24dd885ce01dbbf7ea05197e06a93bed2c28e77c19dc1a0395e45132b4f

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):
    D,u,v,k=x
    a,b=1,0
    out=[]
    for _ in range(k):
     a,b=a*u+D*b*v,a*v+b*u
     out.append([a,b])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([2, 3, 2, 1], [[3, 2]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([2, 3, 2, 2], [[3, 2], [17, 12]]), ([2, 3, 2, 3], [[3, 2], [17, 12], [99, 70]]), ([2, 3, 2, 4], [[3, 2], [17, 12], [99, 70], [577, 408]]), ([2, 3, 2, 5], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]]), ([2, 3, 2, 6], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860]])], [([2, 3, 2, 2], [[3, 2], [17, 12]]), ([2, 3, 2, 4], [[3, 2], [17, 12], [99, 70], [577, 408]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([3, 2, 1, 8], [[2, 1], [7, 4], [26, 15], [97, 56], [362, 209], [1351, 780], [5042, 2911], [18817, 10864]]), ([5, 9, 4, 0], []), ([5, 9, 4, 1], [[9, 4]]), ([5, 9, 4, 2], [[9, 4], [161, 72]])], [([2, 3, 2, 3], [[3, 2], [17, 12], [99, 70]]), ([2, 3, 2, 7], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860], [114243, 80782]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([6, 5, 2, 7], [[5, 2], [49, 20], [485, 198], [4801, 1960], [47525, 19402], [470449, 192060], [4656965, 1901198]]), ([6, 5, 2, 8], [[5, 2], [49, 20], [485, 198], [4801, 1960], [47525, 19402], [470449, 192060], [4656965, 1901198], [46099201, 18819920]]), ([7, 8, 3, 0], []), ([7, 8, 3, 1], [[8, 3]])], [([2, 3, 2, 4], [[3, 2], [17, 12], [99, 70], [577, 408]]), ([3, 2, 1, 2], [[2, 1], [7, 4]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([10, 19, 6, 6], [[19, 6], [721, 228], [27379, 8658], [1039681, 328776], [39480499, 12484830], [1499219281, 474094764]]), ([10, 19, 6, 7], [[19, 6], [721, 228], [27379, 8658], [1039681, 328776], [39480499, 12484830], [1499219281, 474094764], [56930852179, 18003116202]]), ([10, 19, 6, 8], [[19, 6], [721, 228], [27379, 8658], [1039681, 328776], [39480499, 12484830], [1499219281, 474094764], [56930852179, 18003116202], [2161873163521, 683644320912]]), ([11, 10, 3, 0], [])], [([2, 3, 2, 5], [[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]]), ([3, 2, 1, 5], [[2, 1], [7, 4], [26, 15], [97, 56], [362, 209]]), ([2, 3, 2, 0], []), ([13, 649, 180, 8], [[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]), ([12, 7, 2, 5], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658]]), ([12, 7, 2, 6], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658], [3650401, 1053780]]), ([12, 7, 2, 7], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658], [3650401, 1053780], [50843527, 14677262]]), ([12, 7, 2, 8], [[7, 2], [97, 28], [1351, 390], [18817, 5432], [262087, 75658], [3650401, 1053780], [50843527, 14677262], [708158977, 204427888]])]]
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[[3, 2]][[3, 2]]Passed
explicit oracle 1[][]Passed
explicit oracle 2[[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]][[649, 180], [842401, 233640], [1093435849, 303264540], [1419278889601, 393637139280], [1842222905266249, 510940703520900], [2391203911756701601, 663200639532988920], [3103780835237293411849, 860833919173116097260], [4028705132934095091878401, 1117361763886065161254560]]Passed
explicit oracle 3[[3, 2], [17, 12]][[3, 2], [17, 12]]Passed
explicit oracle 4[[3, 2], [17, 12], [99, 70]][[3, 2], [17, 12], [99, 70]]Passed
explicit oracle 5[[3, 2], [17, 12], [99, 70], [577, 408]][[3, 2], [17, 12], [99, 70], [577, 408]]Passed
explicit oracle 6[[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]][[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378]]Passed
explicit oracle 7[[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860]][[3, 2], [17, 12], [99, 70], [577, 408], [3363, 2378], [19601, 13860]]Passed

SHA-256 / 955122493c1fd09fd2db507bb1fb379535f327c80e7b7b625e285263adde8585

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

Case digest / e26bc487fac754ca06325670b283b3be0be2475444d932fed3c0d0bfa2e4259d