check_note.py: checks for the note on pedal areas (AMR-050-0011, -0013, -0016)
python 3.13.5, mpmath 1.3.0, mp.dps = 50

(i) Theorem A on reflection-law orbits (50 digits); spreads are relative spreads over 8 phases
  [ok]   a=1.3 b=1.0 N= 4 tau=1: lam=0.628252788104, closure 2.8e-48, tangency 2.23e-48; A*A_M spread max 1.61e-47 (5 points M)
  [ok]         N = 4: A_M does not depend on M: max|A_M - A_O|/|A_O| = 8.27e-48
  [ok]   a=1.3 b=1.0 N= 8 tau=1: lam=0.1879202509, closure 1.14e-48, tangency 4.04e-49; A*A_M spread max 3.58e-49 (5 points M)
  [ok]         control: A_M/A not constant (spread min 3.1e-5)
  [ok]   a=1.3 b=1.0 N= 8 tau=3: lam=0.975497864499, closure 1.95e-47, tangency 2.12e-47; A*A_M spread max 3.34e-47 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.0168)
  [ok]   a=1.3 b=1.0 N=12 tau=1: lam=0.0861791128405, closure 1.12e-47, tangency 2.58e-48; A*A_M spread max 1.74e-48 (5 points M)
  [ok]         control: A_M/A not constant (spread min 1.97e-8)
  [ok]   a=1.3 b=1.0 N=12 tau=5: lam=0.998745041392, closure 6.49e-46, tangency 5.13e-46; A*A_M spread max 4.03e-45 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.0113)
  [ok]   a=1.3 b=1.0 N=16 tau=3: lam=0.393289551908, closure 1.13e-47, tangency 6.26e-48; A*A_M spread max 1.84e-48 (5 points M)
  [ok]         control: A_M/A not constant (spread min 3.69e-10)
  [ok]   a=2.0 b=1.0 N= 4 tau=1: lam=0.8, closure 4.19e-48, tangency 3.35e-48; A*A_M spread max 1.89e-47 (5 points M)
  [ok]         N = 4: A_M does not depend on M: max|A_M - A_O|/|A_O| = 1.25e-47
  [ok]   a=2.0 b=1.0 N= 8 tau=1: lam=0.267752356926, closure 2.65e-48, tangency 1.19e-48; A*A_M spread max 7.97e-49 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.00142)
  [ok]   a=2.0 b=1.0 N= 8 tau=3: lam=0.998728030391, closure 6.52e-46, tangency 1.68e-46; A*A_M spread max 1.84e-46 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.168)
  [ok]   a=2.0 b=1.0 N=12 tau=1: lam=0.124651955839, closure 4.68e-48, tangency 1.32e-48; A*A_M spread max 6.61e-49 (5 points M)
  [ok]         control: A_M/A not constant (spread min 6.92e-6)
  [ok]   a=2.0 b=1.0 N=12 tau=5: lam=0.999993425522, closure 1.04e-43, tangency 2.54e-44; A*A_M spread max 2.91e-44 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.167)
  [ok]   a=2.0 b=1.0 N=16 tau=3: lam=0.538328151029, closure 8.61e-49, tangency 4.6e-49; A*A_M spread max 7.06e-50 (5 points M)
  [ok]         control: A_M/A not constant (spread min 4.37e-7)
  [ok]   a=3.5 b=1.0 N= 4 tau=1: lam=0.924528301887, closure 9.68e-48, tangency 7.67e-48; A*A_M spread max 3.22e-47 (5 points M)
  [ok]         N = 4: A_M does not depend on M: max|A_M - A_O|/|A_O| = 2.08e-47
  [ok]   a=3.5 b=1.0 N= 8 tau=1: lam=0.38552060918, closure 5.6e-48, tangency 2.93e-48; A*A_M spread max 1.58e-48 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.00835)
  [ok]   a=3.5 b=1.0 N= 8 tau=3: lam=0.999963048231, closure 1.91e-44, tangency 1.35e-45; A*A_M spread max 1.81e-44 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.706)
  [ok]   a=3.5 b=1.0 N=12 tau=1: lam=0.186339408282, closure 3.68e-48, tangency 1.31e-48; A*A_M spread max 5.32e-49 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.000275)
  [ok]   a=3.5 b=1.0 N=12 tau=5: lam=0.999999983256, closure 4.23e-42, tangency 2.89e-42; A*A_M spread max 3.79e-42 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.706)
  [ok]   a=3.5 b=1.0 N=16 tau=3: lam=0.707148819739, closure 1.1e-48, tangency 8.95e-49; A*A_M spread max 1.47e-49 (5 points M)
  [ok]         control: A_M/A not constant (spread min 3.99e-5)
  [ok]   a=2.6 b=1.7 N= 4 tau=1: lam=2.02449740933, closure 1.12e-48, tangency 8.47e-49; A*A_M spread max 3.28e-48 (5 points M)
  [ok]         N = 4: A_M does not depend on M: max|A_M - A_O|/|A_O| = 1.84e-48
  [ok]   a=2.6 b=1.7 N= 8 tau=1: lam=0.625652770416, closure 2.16e-49, tangency 7.22e-50; A*A_M spread max 3.04e-50 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.00019)
  [ok]   a=2.6 b=1.7 N= 8 tau=3: lam=2.86758497643, closure 2.69e-48, tangency 1.36e-48; A*A_M spread max 8.83e-49 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.0988)
  [ok]   a=2.6 b=1.7 N=12 tau=1: lam=0.288109648709, closure 5.97e-48, tangency 1.49e-48; A*A_M spread max 5.37e-49 (5 points M)
  [ok]         control: A_M/A not constant (spread min 2.22e-7)
  [ok]   a=2.6 b=1.7 N=12 tau=5: lam=2.88956233138, closure 1.47e-46, tangency 8.4e-47; A*A_M spread max 3.52e-47 (5 points M)
  [ok]         control: A_M/A not constant (spread min 0.0988)
  [ok]   a=2.6 b=1.7 N=16 tau=3: lam=1.29478856229, closure 5.2e-48, tangency 3.13e-48; A*A_M spread max 5.69e-49 (5 points M)
  [ok]         control: A_M/A not constant (spread min 1.49e-8)
  reference value (a=2, b=1, N=8, tau=1, M=(0.8,0.3)):
     A*A_M = 33.4063768502875027135279705346

    Controls
  [ok]   N= 6 tau=1 (N = 2 mod 4): A*A_M spread min 0.0222 (not constant); A_M/A spread max 5.2e-49 (constant)
  [ok]   N=10 tau=1 (N = 2 mod 4): A*A_M spread min 8.04e-5 (not constant); A_M/A spread max 9.79e-49 (constant)
  [ok]   N=10 tau=3 (N = 2 mod 4): A*A_M spread min 0.00838 (not constant); A_M/A spread max 4.65e-48 (constant)
  [ok]   N=14 tau=3 (N = 2 mod 4): A*A_M spread min 8.92e-6 (not constant); A_M/A spread max 2.64e-48 (constant)
  [ok]   N= 3 tau=1 (odd): A*A_O spread 7.7e-48 (constant, M = O); A*A_M spread for M != O min 0.145 (not constant)
  [ok]   N= 5 tau=1 (odd): A*A_O spread 2.85e-49 (constant, M = O); A*A_M spread for M != O min 0.0193 (not constant)
  [ok]   N= 5 tau=2 (odd): A*A_O spread 5.14e-46 (constant, M = O); A*A_M spread for M != O min 0.121 (not constant)
  [ok]   N= 7 tau=2 (odd): A*A_O spread 2.07e-48 (constant, M = O); A*A_M spread for M != O min 0.00741 (not constant)
  [ok]   3-periodic listed 4 times (N = 12): A*A_M spread min 0.145 over M != O (not constant: least period 3)
  [ok]   6-periodic listed 2 times (N = 12): A*A_M spread min 0.0222 over M != O (not constant: least period 6)
  [ok]   4-periodic listed 2 times (N = 8): A*A_M spread max 1.89e-47 (constant, as n = 0 mod 4)
  (part_i took 2 s)

(ii) Theorems B and C: the ratios and kappa(M) = kappa0 + kappa2 M.M (50 digits)
  [ok]   B: a=1.3 N= 6 tau=1: A_M/A spread 2.18e-48; kappa0=0.7542533081, kappa2=0.1890359168, fit residual 1.86e-46
  [ok]   B: a=1.3 N=10 tau=1: A_M/A spread 6.59e-49; kappa0=0.9268982589, kappa2=0.3094723468, fit residual 5.44e-47
  [ok]   B: a=1.3 N=10 tau=3: A_M/A spread 1.44e-48; kappa0=0.3283381122, kappa2=-0.1080808273, fit residual 1.5e-46; real exceptional circle |M|^2 = 3.03789414387: max |A_M|/|A_O| on it 3.36e-48
  [ok]   B: a=1.3 N=14 tau=3: A_M/A spread 4.99e-49; kappa0=0.6020147618, kappa2=0.0828349133, fit residual 4.5e-47
  [ok]   B: a=2.0 N= 6 tau=1: A_M/A spread 5.2e-49; kappa0=0.7777777778, kappa2=0.1111111111, fit residual 4.85e-47
  [ok]   B: a=2.0 N=10 tau=1: A_M/A spread 9.79e-49; kappa0=1.06232803, kappa2=0.1948023619, fit residual 9.54e-47
  [ok]   B: a=2.0 N=10 tau=3: A_M/A spread 4.65e-48; kappa0=0.2525417294, kappa2=-0.0433700796, fit residual 8.99e-47; real exceptional circle |M|^2 = 5.82294825562: max |A_M|/|A_O| on it 3.17e-48
  [ok]   B: a=2.0 N=14 tau=3: A_M/A spread 2.64e-48; kappa0=0.5516127812, kappa2=0.04459199446, fit residual 2.02e-46
  [ok]   B: a=3.5 N= 6 tau=1: A_M/A spread 4.95e-49; kappa0=0.8271604938, kappa2=0.04938271605, fit residual 2.92e-47
  [ok]   B: a=3.5 N=10 tau=1: A_M/A spread 1.61e-48; kappa0=1.433669389, kappa2=0.1025808484, fit residual 9.85e-47
  [ok]   B: a=3.5 N=10 tau=3: A_M/A spread 8.88e-48; kappa0=0.1518491258, kappa2=-0.009850221484, fit residual 5.84e-47; real exceptional circle |M|^2 = 15.4158082702: max |A_M|/|A_O| on it 5.11e-48
  [ok]   B: a=3.5 N=14 tau=3: A_M/A spread 1.58e-48; kappa0=0.4490839229, kappa2=0.01622084884, fit residual 8.41e-47
  [ok]   C: a=1.3 b=1.0 N= 4 tau=1: A'_M/A' spread 1.48e-47; kappa'0=0.5 > 0, kappa'2/kappa'0=-5.070930306e-49, |.- d/(2F)| 3.41e-49
  [ok]   C: a=1.3 b=1.0 N= 8 tau=1: A'_M/A' spread 2.7e-49; kappa'0=0.8667886987 > 0, kappa'2/kappa'0=0.2657824891, |.- d/(2F)| 7.68e-50; control A'*A'_M spread 3.1e-5
  [ok]   C: a=1.3 b=1.0 N= 8 tau=3: A'_M/A' spread 1.75e-47; kappa'0=0.1123697004 > 0, kappa'2/kappa'0=-0.2288500278, |.- d/(2F)| 5.24e-49; control A'*A'_M spread 0.0168
  [ok]   C: a=1.3 b=1.0 N=12 tau=1: A'_M/A' spread 1.33e-48; kappa'0=0.9559707915 > 0, kappa'2/kappa'0=0.3236749143, |.- d/(2F)| 4.16e-49; control A'*A'_M spread 1.97e-8
  [ok]   C: a=1.3 b=1.0 N=12 tau=5: A'_M/A' spread 4.11e-46; kappa'0=0.02517486643 > 0, kappa'2/kappa'0=-0.244834859, |.- d/(2F)| 6.96e-48; control A'*A'_M spread 0.0113
  [ok]   C: a=1.3 b=1.0 N=16 tau=3: A'_M/A' spread 1.42e-48; kappa'0=0.6947458597 > 0, kappa'2/kappa'0=0.1450039352, |.- d/(2F)| 3.92e-49; control A'*A'_M spread 3.69e-10
  [ok]   C: a=2.0 b=1.0 N= 4 tau=1: A'_M/A' spread 1.22e-47; kappa'0=0.5 > 0, kappa'2/kappa'0=5.125850129e-49, |.- d/(2F)| 4.04e-49
  [ok]   C: a=2.0 b=1.0 N= 8 tau=1: A'_M/A' spread 6.25e-49; kappa'0=0.9469175504 > 0, kappa'2/kappa'0=0.1512907107, |.- d/(2F)| 2.71e-49; control A'*A'_M spread 0.00142
  [ok]   C: a=2.0 b=1.0 N= 8 tau=3: A'_M/A' spread 2.35e-45; kappa'0=0.04843844207 > 0, kappa'2/kappa'0=-0.09023701303, |.- d/(2F)| 4.29e-47; control A'*A'_M spread 0.168
  [ok]   C: a=2.0 b=1.0 N=12 tau=1: A'_M/A' spread 5.32e-49; kappa'0=1.096143187 > 0, kappa'2/kappa'0=0.1788704597, |.- d/(2F)| 2.5e-49; control A'*A'_M spread 6.92e-6
  [ok]   C: a=2.0 b=1.0 N=12 tau=5: A'_M/A' spread 3.99e-43; kappa'0=0.00348940495 > 0, kappa'2/kappa'0=-0.09090561352, |.- d/(2F)| 6.67e-45; control A'*A'_M spread 0.167
  [ok]   C: a=2.0 b=1.0 N=16 tau=3: A'_M/A' spread 5.43e-50; kappa'0=0.7153147067 > 0, kappa'2/kappa'0=0.08633158814, |.- d/(2F)| 9.02e-51; control A'*A'_M spread 4.37e-7
  [ok]   C: a=3.5 b=1.0 N= 4 tau=1: A'_M/A' spread 1.45e-47; kappa'0=0.5 > 0, kappa'2/kappa'0=6.626991952e-49, |.- d/(2F)| 5.8e-49
  [ok]   C: a=3.5 b=1.0 N= 8 tau=1: A'_M/A' spread 1.41e-48; kappa'0=1.167655234 > 0, kappa'2/kappa'0=0.06291269305, |.- d/(2F)| 4.56e-49; control A'*A'_M spread 0.00835
  [ok]   C: a=3.5 b=1.0 N= 8 tau=3: A'_M/A' spread 7.88e-45; kappa'0=0.01550446453 > 0, kappa'2/kappa'0=-0.02795467561, |.- d/(2F)| 7.08e-46; control A'*A'_M spread 0.706
  [ok]   C: a=3.5 b=1.0 N=12 tau=1: A'_M/A' spread 4.42e-49; kappa'0=1.491881041 > 0, kappa'2/kappa'0=0.07050442645, |.- d/(2F)| 1.55e-49; control A'*A'_M spread 0.000275
  [ok]   C: a=3.5 b=1.0 N=12 tau=5: A'_M/A' spread 1.82e-42; kappa'0=0.0003301317336 > 0, kappa'2/kappa'0=-0.02797202011, |.- d/(2F)| 6.04e-44; control A'*A'_M spread 0.706
  [ok]   C: a=3.5 b=1.0 N=16 tau=3: A'_M/A' spread 1.12e-49; kappa'0=0.7713945279 > 0, kappa'2/kappa'0=0.03955666532, |.- d/(2F)| 2.17e-50; control A'*A'_M spread 3.99e-5
  [ok]   C: a=2.6 b=1.7 N= 4 tau=1: A'_M/A' spread 2.61e-48; kappa'0=0.5 > 0, kappa'2/kappa'0=1.043476633e-49, |.- d/(2F)| 8.83e-50
  [ok]   C: a=2.6 b=1.7 N= 8 tau=1: A'_M/A' spread 2.32e-50; kappa'0=0.8883629534 > 0, kappa'2/kappa'0=0.07534694186, |.- d/(2F)| 9.69e-51; control A'*A'_M spread 0.00019
  [ok]   C: a=2.6 b=1.7 N= 8 tau=3: A'_M/A' spread 8.5e-49; kappa'0=0.08316890196 > 0, kappa'2/kappa'0=-0.05588587848, |.- d/(2F)| 3.62e-50; control A'*A'_M spread 0.0988
  [ok]   C: a=2.6 b=1.7 N=12 tau=1: A'_M/A' spread 4.67e-49; kappa'0=0.9935142525 > 0, kappa'2/kappa'0=0.09096154559, |.- d/(2F)| 1.65e-49; control A'*A'_M spread 2.22e-7
  [ok]   C: a=2.6 b=1.7 N=12 tau=5: A'_M/A' spread 9.98e-47; kappa'0=0.01164787503 > 0, kappa'2/kappa'0=-0.05747264018, |.- d/(2F)| 8.16e-48; control A'*A'_M spread 0.0988
  [ok]   C: a=2.6 b=1.7 N=16 tau=3: A'_M/A' spread 5.38e-49; kappa'0=0.7002913434 > 0, kappa'2/kappa'0=0.04163371155, |.- d/(2F)| 1.29e-49; control A'*A'_M spread 1.49e-8
  (part_ii took 3 s)

(iii) Exact N = 4 certificate (sympy; symbolic a, b, phase and M)
  [ok]   the second vertex Q = (-Y, k'X)/r lies on E
  [ok]   all four chords are tangent to the caustic lam = a^2 b^2/(a^2+b^2)
  [ok]   reflection law at all four vertices
  [ok]   A*A_M - 8 a^4 b^4/(a^2+b^2)^2 = 0 identically in (a, b, phase, M)
  [ok]   A_M = A_O identically: for N = 4 the pedal area does not depend on M
  [ok]   controls rejected as they should be: A*A_M = 2x the constant; A_M/A constant; chords tangent to the caustic lam/2
  (part_iii took 5 s)

(iv) Exact examples (reflection law in quadratic number fields; Jacobi-free)
  N = 8 star: a^2=32/27, b^2=1, lam=32/35, N=8, tau=3
  [ok]   start (X0,Y0)=(0,1) [field Q]: closes after 8 steps exactly, least period 8, winding 3.000000, all chords tangent to C; A*A_M = 6656/4725 + (-512/175) M.M; A'_M = (17/120 + (-9/200) M.M) A' (exact identities in M)
  [ok]   start (X0,Y0)=(4/5,3/5) [field Q]: closes after 8 steps exactly, least period 8, winding 3.000000, all chords tangent to C; A*A_M = 6656/4725 + (-512/175) M.M; A'_M = (17/120 + (-9/200) M.M) A' (exact identities in M)
  [ok]   start (X0,Y0)=(45/53,28/53) [field Q(sqrt(1458916/3441025))]: closes after 8 steps exactly, least period 8, winding 3.000000, all chords tangent to C; A*A_M = 6656/4725 + (-512/175) M.M; A'_M = (17/120 + (-9/200) M.M) A' (exact identities in M)
  [ok]   start (X0,Y0)=(-9/41,-40/41) [field Q(sqrt(1664644/2059225))]: closes after 8 steps exactly, least period 8, winding 3.000000, all chords tangent to C; A*A_M = 6656/4725 + (-512/175) M.M; A'_M = (17/120 + (-9/200) M.M) A' (exact identities in M)
  [ok]   Kriebel's constants for this family: d = -24/35, F = 68/63, d/(2F) = -27/85 = kappa'2/kappa'0, -2F/d = 85/27: the real circle |M|^2 = 85/27 on which A'_M = 0
  N = 8, tau = 1: a^2=8/3, b^2=1, lam=8/35, N=8, tau=1
  [ok]   start (X0,Y0)=(0,1) [field Q]: closes after 8 steps exactly, least period 8, winding 1.000000, all chords tangent to C; A*A_M = 3328/175 + (768/175) M.M; A'_M = (9/10 + (9/50) M.M) A' (exact identities in M)
  [ok]   start (X0,Y0)=(4/5,3/5) [field Q]: closes after 8 steps exactly, least period 8, winding 1.000000, all chords tangent to C; A*A_M = 3328/175 + (768/175) M.M; A'_M = (9/10 + (9/50) M.M) A' (exact identities in M)
  [ok]   start (X0,Y0)=(45/53,28/53) [field Q(sqrt(1458916/3441025))]: closes after 8 steps exactly, least period 8, winding 1.000000, all chords tangent to C; A*A_M = 3328/175 + (768/175) M.M; A'_M = (9/10 + (9/50) M.M) A' (exact identities in M)
  [ok]   start (X0,Y0)=(-9/41,-40/41) [field Q(sqrt(1664644/2059225))]: closes after 8 steps exactly, least period 8, winding 1.000000, all chords tangent to C; A*A_M = 3328/175 + (768/175) M.M; A'_M = (9/10 + (9/50) M.M) A' (exact identities in M)
  N = 4: a^2=16/9, b^2=1, lam=16/25, N=4, tau=1
  [ok]   start (X0,Y0)=(0,1) [field Q]: closes after 4 steps exactly, least period 4, winding 1.000000, all chords tangent to C; A*A_M = 2048/625 + (0) M.M; A'_M = (1/2 + (0) M.M) A' (exact identities in M)
  [ok]   start (X0,Y0)=(4/5,3/5) [field Q]: closes after 4 steps exactly, least period 4, winding 1.000000, all chords tangent to C; A*A_M = 2048/625 + (0) M.M; A'_M = (1/2 + (0) M.M) A' (exact identities in M)
  [ok]   start (X0,Y0)=(45/53,28/53) [field Q(sqrt(1458916/1755625))]: closes after 4 steps exactly, least period 4, winding 1.000000, all chords tangent to C; A*A_M = 2048/625 + (0) M.M; A'_M = (1/2 + (0) M.M) A' (exact identities in M)
  [ok]   start (X0,Y0)=(-9/41,-40/41) [field Q(sqrt(1664644/1050625))]: closes after 4 steps exactly, least period 4, winding 1.000000, all chords tangent to C; A*A_M = 2048/625 + (0) M.M; A'_M = (1/2 + (0) M.M) A' (exact identities in M)
  N = 6, tau = 1: a^2=4, b^2=1, lam=4/9, N=6, tau=1
  [ok]   start (X0,Y0)=(0,1) [field Q(sqrt(128/81))]: closes after 6 steps exactly, least period 6, winding 1.000000, all chords tangent to C; A_M = (7/9 + (1/9) M.M) A (exact identities in M)
  [ok]   start (X0,Y0)=(4/5,3/5) [field Q(sqrt(1472/2025))]: closes after 6 steps exactly, least period 6, winding 1.000000, all chords tangent to C; A_M = (7/9 + (1/9) M.M) A (exact identities in M)
  [ok]   start (X0,Y0)=(45/53,28/53) [field Q(sqrt(140852/227529))]: closes after 6 steps exactly, least period 6, winding 1.000000, all chords tangent to C; A_M = (7/9 + (1/9) M.M) A (exact identities in M)
  50-digit check along the N = 8 star family: A'_M for M on the circle |M|^2 = 85/27
  [ok]   closure 1.4e-49; max |A'_M|/|A'_O| on the circle over 10 phases: 4.09e-50; |A'_M/A' - (85 - 27|M|^2)/600| at M = (-2.5, 1.7): 1.34e-50
  (part_iv took 0 s)

TOTAL failures: 0   (running time 10 s)
ALL CHECKS PASSED
