FA-15696 / Numerics / Open access
Binary field minimal polynomial: conjugate Frobenius successor · case 01
The exact binary field minimal polynomial result violates the stated contract at conjugate Frobenius successor.
ROOT CAUSE
The conjugate Frobenius successor step uses mul(v,a) instead of mul(v,v).
VERIFIED REPAIR
Use mul(v,v) at the conjugate Frobenius successor step.
Unsuccessful approach: The partial repair v^a still violates the conjugate Frobenius successor invariant.
Case contract
Input [a,irreducible bitmask]; return ascending 0/1 coefficients of the minimal polynomial of a over F2, through its distinct Frobenius orbit.
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):
a,poly=x;n=poly.bit_length()-1
def mul(a,b):
z=0
while b:
if b&1:z^=a
b>>=1;a<<=1
if a&(1<<n):a^=poly
return z
orbit=[];v=a
for _ in range(n+1):
if v in orbit:break
orbit.append(v);v=mul(v,a)
c=[1]
for root in orbit:
d=[0]*(len(c)+1)
for j,b in enumerate(c):
d[j]=d[j]^mul(b,root)
d[j+1]=d[j+1]^b
c=d
return c
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([2, 7], [1, 1, 1]), ([1, 7], [1, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([3, 7], [1, 1, 1]), ([0, 11], [0, 1]), ([1, 11], [1, 1]), ([2, 11], [1, 1, 0, 1])], [([3, 7], [1, 1, 1]), ([1, 11], [1, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([5, 19], [1, 1, 0, 0, 1]), ([6, 19], [1, 1, 1]), ([7, 19], [1, 1, 1]), ([8, 19], [1, 1, 1, 1, 1])], [([2, 11], [1, 1, 0, 1]), ([4, 11], [1, 1, 0, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([6, 25], [1, 1, 0, 0, 1]), ([7, 25], [1, 1, 0, 0, 1]), ([8, 25], [1, 1, 1, 1, 1]), ([9, 25], [1, 0, 0, 1, 1])], [([3, 11], [1, 0, 1, 1]), ([7, 11], [1, 0, 1, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([7, 31], [1, 1, 0, 0, 1]), ([8, 31], [1, 1, 1, 1, 1]), ([9, 31], [1, 0, 0, 1, 1]), ([10, 31], [1, 1, 0, 0, 1])], [([4, 11], [1, 1, 0, 1]), ([3, 19], [1, 1, 0, 0, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([8, 37], [1, 0, 1, 1, 1, 1]), ([9, 37], [1, 0, 0, 1, 0, 1]), ([10, 37], [1, 0, 1, 1, 1, 1]), ([11, 37], [1, 0, 0, 1, 0, 1])]]
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, 0, 0, 1] | [1, 1, 1] | Failed |
| explicit oracle 1 | [1, 1] | [1, 1] | Passed |
| explicit oracle 2 | [0, 1] | [0, 1] | Passed |
| explicit oracle 3 | [5, 17, 25, 19, 28, 19, 1] | [1, 0, 0, 1, 0, 1] | Failed |
| explicit oracle 4 | [1, 0, 0, 1] | [1, 1, 1] | Failed |
| explicit oracle 5 | [0, 1] | [0, 1] | Passed |
| explicit oracle 6 | [1, 1] | [1, 1] | Passed |
| explicit oracle 7 | [3, 2, 1, 3, 1] | [1, 1, 0, 1] | Failed |
SHA-256 / 54a93dde8c69346083b67cc28bc54071d87bdef1ec8500b7206f045288fab5aa
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):
a,poly=x;n=poly.bit_length()-1
def mul(a,b):
z=0
while b:
if b&1:z^=a
b>>=1;a<<=1
if a&(1<<n):a^=poly
return z
orbit=[];v=a
for _ in range(n+1):
if v in orbit:break
orbit.append(v);v=v^a
c=[1]
for root in orbit:
d=[0]*(len(c)+1)
for j,b in enumerate(c):
d[j]=d[j]^mul(b,root)
d[j+1]=d[j+1]^b
c=d
return c
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([2, 7], [1, 1, 1]), ([1, 7], [1, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([3, 7], [1, 1, 1]), ([0, 11], [0, 1]), ([1, 11], [1, 1]), ([2, 11], [1, 1, 0, 1])], [([3, 7], [1, 1, 1]), ([1, 11], [1, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([5, 19], [1, 1, 0, 0, 1]), ([6, 19], [1, 1, 1]), ([7, 19], [1, 1, 1]), ([8, 19], [1, 1, 1, 1, 1])], [([2, 11], [1, 1, 0, 1]), ([4, 11], [1, 1, 0, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([6, 25], [1, 1, 0, 0, 1]), ([7, 25], [1, 1, 0, 0, 1]), ([8, 25], [1, 1, 1, 1, 1]), ([9, 25], [1, 0, 0, 1, 1])], [([3, 11], [1, 0, 1, 1]), ([7, 11], [1, 0, 1, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([7, 31], [1, 1, 0, 0, 1]), ([8, 31], [1, 1, 1, 1, 1]), ([9, 31], [1, 0, 0, 1, 1]), ([10, 31], [1, 1, 0, 0, 1])], [([4, 11], [1, 1, 0, 1]), ([3, 19], [1, 1, 0, 0, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([8, 37], [1, 0, 1, 1, 1, 1]), ([9, 37], [1, 0, 0, 1, 0, 1]), ([10, 37], [1, 0, 1, 1, 1, 1]), ([11, 37], [1, 0, 0, 1, 0, 1])]]
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 | [0, 2, 1] | [1, 1, 1] | Failed |
| explicit oracle 1 | [0, 1, 1] | [1, 1] | Failed |
| explicit oracle 2 | [0, 1] | [0, 1] | Passed |
| explicit oracle 3 | [0, 31, 1] | [1, 0, 0, 1, 0, 1] | Failed |
| explicit oracle 4 | [0, 3, 1] | [1, 1, 1] | Failed |
| explicit oracle 5 | [0, 1] | [0, 1] | Passed |
| explicit oracle 6 | [0, 1, 1] | [1, 1] | Failed |
| explicit oracle 7 | [0, 2, 1] | [1, 1, 0, 1] | Failed |
SHA-256 / 898609c4609ac436c4478e1566523e6bf0808dcbccdbd5ab5ade3eaffdbb441e
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):
a,poly=x;n=poly.bit_length()-1
def mul(a,b):
z=0
while b:
if b&1:z^=a
b>>=1;a<<=1
if a&(1<<n):a^=poly
return z
orbit=[];v=a
for _ in range(n+1):
if v in orbit:break
orbit.append(v);v=mul(v,v)
c=[1]
for root in orbit:
d=[0]*(len(c)+1)
for j,b in enumerate(c):
d[j]=d[j]^mul(b,root)
d[j+1]=d[j+1]^b
c=d
return c
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([2, 7], [1, 1, 1]), ([1, 7], [1, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([3, 7], [1, 1, 1]), ([0, 11], [0, 1]), ([1, 11], [1, 1]), ([2, 11], [1, 1, 0, 1])], [([3, 7], [1, 1, 1]), ([1, 11], [1, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([5, 19], [1, 1, 0, 0, 1]), ([6, 19], [1, 1, 1]), ([7, 19], [1, 1, 1]), ([8, 19], [1, 1, 1, 1, 1])], [([2, 11], [1, 1, 0, 1]), ([4, 11], [1, 1, 0, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([6, 25], [1, 1, 0, 0, 1]), ([7, 25], [1, 1, 0, 0, 1]), ([8, 25], [1, 1, 1, 1, 1]), ([9, 25], [1, 0, 0, 1, 1])], [([3, 11], [1, 0, 1, 1]), ([7, 11], [1, 0, 1, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([7, 31], [1, 1, 0, 0, 1]), ([8, 31], [1, 1, 1, 1, 1]), ([9, 31], [1, 0, 0, 1, 1]), ([10, 31], [1, 1, 0, 0, 1])], [([4, 11], [1, 1, 0, 1]), ([3, 19], [1, 1, 0, 0, 1]), ([0, 7], [0, 1]), ([31, 37], [1, 0, 0, 1, 0, 1]), ([8, 37], [1, 0, 1, 1, 1, 1]), ([9, 37], [1, 0, 0, 1, 0, 1]), ([10, 37], [1, 0, 1, 1, 1, 1]), ([11, 37], [1, 0, 0, 1, 0, 1])]]
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, 1, 1] | Passed |
| explicit oracle 1 | [1, 1] | [1, 1] | Passed |
| explicit oracle 2 | [0, 1] | [0, 1] | Passed |
| explicit oracle 3 | [1, 0, 0, 1, 0, 1] | [1, 0, 0, 1, 0, 1] | Passed |
| explicit oracle 4 | [1, 1, 1] | [1, 1, 1] | Passed |
| explicit oracle 5 | [0, 1] | [0, 1] | Passed |
| explicit oracle 6 | [1, 1] | [1, 1] | Passed |
| explicit oracle 7 | [1, 1, 0, 1] | [1, 1, 0, 1] | Passed |
SHA-256 / 2357bf781af6692f9e88fe136b88a1075549859bea68f10269912a548a68542e
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:29.430419+00:00.
Case digest / 02cea61515f4465a0a998b146f81d6673fb84cb64b63f9ac7aafcf592c564f36