{"abstract":"The exact exact tridiagonal solve result violates the stated contract at back substitution.","category":"Numerics","checks":8,"contract":"Input [lower,diag,upper,rhs] integer tridiagonal system with nonzero Thomas pivots; return rational solution [p,q] per coordinate.","contract_signature":"x","evaluation_group":"s3-numerics-exact-tridiagonal-solve","failed_approach":"The partial repair r[i]-r[i+1] still violates the back substitution invariant.","family":"s3-numerics-exact-tridiagonal-solve-back-substitution","id":"FA-15436","implementations":{"attempt":{"sha256":"e6183c1be84a98b4926e4b8b80ba43ccb2657fc2bb3e793292877a7d568ed4d3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport itertools\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    low,d,up,b=x;n=len(d)\n    c=list(map(Fraction,up));r=list(map(Fraction,b));den=Fraction(d[0])\n    if not den:return None\n    if c:c[0]=c[0]/den\n    r[0]=r[0]/den\n    for i in range(1,n):\n     den=d[i]-low[i-1]*c[i-1]\n     if not den:return None\n     if i<n-1:c[i]/=den\n     r[i]=(r[i]-low[i-1]*r[i-1])/den\n    for i in range(n-2,-1,-1):r[i]=r[i]-r[i+1]\n    return [[v.numerator,v.denominator] for v in r]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[2], [6, 6], [2], [2, 2]], [[1, 4], [1, 4]]), ([[2], [6, 6], [-1], [-5, 3]], [[-27, 38], [14, 19]]), ([[1], [6, 6], [-1], [-5, -5]], [[-35, 37], [-25, 37]]), ([[1], [6, 6], [0], [-2, 4]], [[-1, 3], [13, 18]]), ([[1], [6, 6], [2], [-1, 4]], [[-7, 17], [25, 34]]), ([[-1], [6, 6], [-1], [4, 5]], [[29, 35], [34, 35]])], [([[2], [6, 6], [2], [2, 2]], [[1, 4], [1, 4]]), ([[1], [6, 6], [-1], [-5, -5]], [[-35, 37], [-25, 37]]), ([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[2], [6, 6], [2], [2, 3]], [[3, 16], [7, 16]]), ([[-2], [6, 6], [2], [1, 1]], [[1, 10], [1, 5]]), ([[0], [6, 6], [1], [0, -1]], [[1, 36], [-1, 6]]), ([[-1], [6, 6], [1], [5, 1]], [[29, 37], [11, 37]])], [([[2], [6, 6], [-1], [-5, 3]], [[-27, 38], [14, 19]]), ([[-1], [6, 6], [-1], [4, 5]], [[29, 35], [34, 35]]), ([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[2], [6, 6], [0], [0, 4]], [[0, 1], [2, 3]]), ([[-2], [6, 6], [0], [3, -4]], [[1, 2], [-1, 2]]), ([[0], [6, 6], [0], [1, -2]], [[1, 6], [-1, 3]]), ([[-2], [6, 6], [1], [5, 2]], [[14, 19], [11, 19]])], [([[1], [6, 6], [-1], [-5, -5]], [[-35, 37], [-25, 37]]), ([[-2], [6, 6], [0], [5, 5]], [[5, 6], [10, 9]]), ([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[0, -1], [6, 6, 6], [2, 1], [5, -2, 4]], [[217, 222], [-16, 37], [22, 37]]), ([[-1, -1], [6, 6, 6], [0, -1], [0, -3, -1]], [[0, 1], [-19, 35], [-9, 35]]), ([[-2, 0], [6, 6, 6], [0, -1], [-3, -5, 3]], [[-1, 2], [-11, 12], [1, 2]]), ([[1, 0], [6, 6, 6], [-1, 0], [-3, -3, 5]], [[-21, 37], [-15, 37], [5, 6]])], [([[1], [6, 6], [2], [-1, 4]], [[-7, 17], [25, 34]]), ([[-1], [6, 6], [2], [5, 1]], [[14, 19], [11, 38]]), ([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[-1, 2], [6, 6, 6], [-2, 1], [5, 3, -4]], [[107, 96], [27, 32], [-91, 96]]), ([[-2, 2], [6, 6, 6], [-2, 2], [2, -2, 0]], [[5, 21], [-2, 7], [2, 21]]), ([[-2, 1], [6, 6, 6], [0, 2], [4, 4, 2]], [[2, 3], [14, 17], [10, 51]]), ([[1, -1], [6, 6, 6], [-2, 0], [-5, -4, 0]], [[-1, 1], [-1, 2], [-1, 12]])]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"explicit oracle %d\" % i, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"719b16bf9e89ecb99ab87673834876e02704799dd6761acd08a14d41cbd4d8f5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport itertools\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    low,d,up,b=x;n=len(d)\n    c=list(map(Fraction,up));r=list(map(Fraction,b));den=Fraction(d[0])\n    if not den:return None\n    if c:c[0]=c[0]/den\n    r[0]=r[0]/den\n    for i in range(1,n):\n     den=d[i]-low[i-1]*c[i-1]\n     if not den:return None\n     if i<n-1:c[i]/=den\n     r[i]=(r[i]-low[i-1]*r[i-1])/den\n    for i in range(n-2,-1,-1):r[i]=r[i]+c[i]*r[i+1]\n    return [[v.numerator,v.denominator] for v in r]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[2], [6, 6], [2], [2, 2]], [[1, 4], [1, 4]]), ([[2], [6, 6], [-1], [-5, 3]], [[-27, 38], [14, 19]]), ([[1], [6, 6], [-1], [-5, -5]], [[-35, 37], [-25, 37]]), ([[1], [6, 6], [0], [-2, 4]], [[-1, 3], [13, 18]]), ([[1], [6, 6], [2], [-1, 4]], [[-7, 17], [25, 34]]), ([[-1], [6, 6], [-1], [4, 5]], [[29, 35], [34, 35]])], [([[2], [6, 6], [2], [2, 2]], [[1, 4], [1, 4]]), ([[1], [6, 6], [-1], [-5, -5]], [[-35, 37], [-25, 37]]), ([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[2], [6, 6], [2], [2, 3]], [[3, 16], [7, 16]]), ([[-2], [6, 6], [2], [1, 1]], [[1, 10], [1, 5]]), ([[0], [6, 6], [1], [0, -1]], [[1, 36], [-1, 6]]), ([[-1], [6, 6], [1], [5, 1]], [[29, 37], [11, 37]])], [([[2], [6, 6], [-1], [-5, 3]], [[-27, 38], [14, 19]]), ([[-1], [6, 6], [-1], [4, 5]], [[29, 35], [34, 35]]), ([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[2], [6, 6], [0], [0, 4]], [[0, 1], [2, 3]]), ([[-2], [6, 6], [0], [3, -4]], [[1, 2], [-1, 2]]), ([[0], [6, 6], [0], [1, -2]], [[1, 6], [-1, 3]]), ([[-2], [6, 6], [1], [5, 2]], [[14, 19], [11, 19]])], [([[1], [6, 6], [-1], [-5, -5]], [[-35, 37], [-25, 37]]), ([[-2], [6, 6], [0], [5, 5]], [[5, 6], [10, 9]]), ([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[0, -1], [6, 6, 6], [2, 1], [5, -2, 4]], [[217, 222], [-16, 37], [22, 37]]), ([[-1, -1], [6, 6, 6], [0, -1], [0, -3, -1]], [[0, 1], [-19, 35], [-9, 35]]), ([[-2, 0], [6, 6, 6], [0, -1], [-3, -5, 3]], [[-1, 2], [-11, 12], [1, 2]]), ([[1, 0], [6, 6, 6], [-1, 0], [-3, -3, 5]], [[-21, 37], [-15, 37], [5, 6]])], [([[1], [6, 6], [2], [-1, 4]], [[-7, 17], [25, 34]]), ([[-1], [6, 6], [2], [5, 1]], [[14, 19], [11, 38]]), ([[-1], [6, 6], [2], [-3, -5]], [[-4, 19], [-33, 38]]), ([[-2, -2, -1, -2, -2], [6, 6, 6, 6, 6, 6], [0, 0, 1, -2, -1], [3, -2, 5, -3, -2, -4]], [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]]), ([[-1, 2], [6, 6, 6], [-2, 1], [5, 3, -4]], [[107, 96], [27, 32], [-91, 96]]), ([[-2, 2], [6, 6, 6], [-2, 2], [2, -2, 0]], [[5, 21], [-2, 7], [2, 21]]), ([[-2, 1], [6, 6, 6], [0, 2], [4, 4, 2]], [[2, 3], [14, 17], [10, 51]]), ([[1, -1], [6, 6, 6], [-2, 0], [-5, -4, 0]], [[-1, 1], [-1, 2], [-1, 12]])]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"explicit oracle %d\" % i, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-numerics-exact-tridiagonal-solve-back-substitution","generated_at":"2026-09-29T14:39:26.713317+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Exact discrete arithmetic with observable algorithmic state; no floating point approximation is used.","root_cause":"The back substitution step uses r[i]+c[i]*r[i+1] instead of r[i]-c[i]*r[i+1].","sha256":"4c1472cc742d906dec2cf9977420c4ff1fb4fbaf6965ac390752ca5730a4206b","title":"Exact tridiagonal solve: back substitution · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":43.703,"exit_code":1,"observations":[{"actual":[[7,19],[-33,38]],"check":"explicit oracle 0","expected":[[-4,19],[-33,38]],"passed":false},{"actual":[[13392892,6120873],[-20664911,12241746],[9312310,6120873],[-4551631,6120873],[63403,165429],[-1490,1671]],"check":"explicit oracle 1","expected":[[1,2],[-1,6],[487,557],[-968,1671],[-376,557],[-1490,1671]],"passed":false},{"actual":[[1,12],[1,4]],"check":"explicit oracle 2","expected":[[1,4],[1,4]],"passed":false},{"actual":[[-179,114],[14,19]],"check":"explicit oracle 3","expected":[[-27,38],[14,19]],"passed":false},{"actual":[[-35,222],[-25,37]],"check":"explicit oracle 4","expected":[[-35,37],[-25,37]],"passed":false},{"actual":[[-19,18],[13,18]],"check":"explicit oracle 5","expected":[[-1,3],[13,18]],"passed":false},{"actual":[[-46,51],[25,34]],"check":"explicit oracle 6","expected":[[-7,17],[25,34]],"passed":false},{"actual":[[-32,105],[34,35]],"check":"explicit oracle 7","expected":[[29,35],[34,35]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit oracle 0\", \"actual\": [[7, 19], [-33, 38]], \"expected\": [[-4, 19], [-33, 38]], \"passed\": false}, {\"check\": \"explicit oracle 1\", \"actual\": [[13392892, 6120873], [-20664911, 12241746], [9312310, 6120873], [-4551631, 6120873], [63403, 165429], [-1490, 1671]], \"expected\": [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]], \"passed\": false}, {\"check\": \"explicit oracle 2\", \"actual\": [[1, 12], [1, 4]], \"expected\": [[1, 4], [1, 4]], \"passed\": false}, {\"check\": \"explicit oracle 3\", \"actual\": [[-179, 114], [14, 19]], \"expected\": [[-27, 38], [14, 19]], \"passed\": false}, {\"check\": \"explicit oracle 4\", \"actual\": [[-35, 222], [-25, 37]], \"expected\": [[-35, 37], [-25, 37]], \"passed\": false}, {\"check\": \"explicit oracle 5\", \"actual\": [[-19, 18], [13, 18]], \"expected\": [[-1, 3], [13, 18]], \"passed\": false}, {\"check\": \"explicit oracle 6\", \"actual\": [[-46, 51], [25, 34]], \"expected\": [[-7, 17], [25, 34]], \"passed\": false}, {\"check\": \"explicit oracle 7\", \"actual\": [[-32, 105], [34, 35]], \"expected\": [[29, 35], [34, 35]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.136,"exit_code":1,"observations":[{"actual":[[-15,19],[-33,38]],"check":"explicit oracle 0","expected":[[-4,19],[-33,38]],"passed":false},{"actual":[[1,2],[-1,6],[4506143,6120873],[-509072,2040291],[-56542,165429],[-1490,1671]],"check":"explicit oracle 1","expected":[[1,2],[-1,6],[487,557],[-968,1671],[-376,557],[-1490,1671]],"passed":false},{"actual":[[5,12],[1,4]],"check":"explicit oracle 2","expected":[[1,4],[1,4]],"passed":false},{"actual":[[-109,114],[14,19]],"check":"explicit oracle 3","expected":[[-27,38],[14,19]],"passed":false},{"actual":[[-80,111],[-25,37]],"check":"explicit oracle 4","expected":[[-35,37],[-25,37]],"passed":false},{"actual":[[-1,3],[13,18]],"check":"explicit oracle 5","expected":[[-1,3],[13,18]],"passed":true},{"actual":[[4,51],[25,34]],"check":"explicit oracle 6","expected":[[-7,17],[25,34]],"passed":false},{"actual":[[53,105],[34,35]],"check":"explicit oracle 7","expected":[[29,35],[34,35]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit oracle 0\", \"actual\": [[-15, 19], [-33, 38]], \"expected\": [[-4, 19], [-33, 38]], \"passed\": false}, {\"check\": \"explicit oracle 1\", \"actual\": [[1, 2], [-1, 6], [4506143, 6120873], [-509072, 2040291], [-56542, 165429], [-1490, 1671]], \"expected\": [[1, 2], [-1, 6], [487, 557], [-968, 1671], [-376, 557], [-1490, 1671]], \"passed\": false}, {\"check\": \"explicit oracle 2\", \"actual\": [[5, 12], [1, 4]], \"expected\": [[1, 4], [1, 4]], \"passed\": false}, {\"check\": \"explicit oracle 3\", \"actual\": [[-109, 114], [14, 19]], \"expected\": [[-27, 38], [14, 19]], \"passed\": false}, {\"check\": \"explicit oracle 4\", \"actual\": [[-80, 111], [-25, 37]], \"expected\": [[-35, 37], [-25, 37]], \"passed\": false}, {\"check\": \"explicit oracle 5\", \"actual\": [[-1, 3], [13, 18]], \"expected\": [[-1, 3], [13, 18]], \"passed\": true}, {\"check\": \"explicit oracle 6\", \"actual\": [[4, 51], [25, 34]], \"expected\": [[-7, 17], [25, 34]], \"passed\": false}, {\"check\": \"explicit oracle 7\", \"actual\": [[53, 105], [34, 35]], \"expected\": [[29, 35], [34, 35]], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}