Part A -- Lemma 5.2 (zeta = 1+2i)
[PASS] (1+2i)^2 = -3+4i
[PASS] rho = (1+2i)/(1-2i) = (-3+4i)/5
[PASS] rho is a root of X^2 + (6/5)X + 1 (trace -6/5, norm 1)
[PASS] X^2 + (6/5)X + 1 has no rational root (discriminant 36/25 - 4 < 0) and is not in Z[X]
[PASS] rho is not one of the roots of unity +-1, +-i of Q(i)
[PASS] sanity: Im (1+2i)^n != 0 for n = 1..2000 (exact integers)
[PASS] det of the exponent matrix [[1,2],[-2,1]] is 5

Part B -- Lemma 5.1 and Section 5
[PASS] h_{1+2i} = [x0^3 x1^2 : x1^3 x2^2 : x0^4 x2] -- [[3, 2, 0], [0, 3, 2], [4, 0, 1]]
[PASS] no variable divides all three monomials of h
[PASS] g o h expands to the forms (eq:f) of the note
[PASS] the three forms are homogeneous of degree 10
[PASS] f_j = u_j * P_j for j = 0,1,2
[PASS] P_0 + P_1 = 2 u_2, P_0 + P_2 = 2 u_1, P_1 + P_2 = 2 u_0
[PASS] x0 does not divide f_1 (term -x1^6 x2^4)
[PASS] x1 does not divide f_2 (term -x0^8 x2^2)
[PASS] x2 does not divide f_0 (term -x0^6 x1^4)
[PASS] g o g = [m x0 : m x1 : m x2], m = (x1+x2-x0)(x2+x0-x1)(x0+x1-x2)
[PASS] sigma o g = g o sigma (sigma swaps x1, x2)
[PASS] J Lambda_zeta J = [[a,b],[-b,a]] for |a|,|b| <= 6 (swap conjugates the two conventions)
[PASS] sanity: the Jacobian of (f1/f0, f2/f0) at (3/7, -5/11) is non-zero (dominance in char 0) -- J = -1982671509875/725612645241

Part C -- Proposition 1.4 and Section 6
[PASS] homogeneous monomials of h_A for the HP matrix = [YW, ZW, X^2, XW] -- [[0, 1, 0, 1], [0, 0, 1, 1], [2, 0, 0, 0], [1, 0, 0, 1]]
[PASS] HP map: direct iteration with cancellation = formula (eq:mondeg), n = 1..40
[PASS] HP degrees n = 1..10 are 2,3,4,6,9,12,17,25,33,45 (source: 2,3,4,6,9,12,17,25,...) -- [2, 3, 4, 6, 9, 12, 17, 25, 33, 45, 65, 85]
[PASS] all 256 sequences L^(gamma) satisfy L_{n+3} = -L_{n+2} - L_{n+1} + L_n (Cayley-Hamilton)
[PASS] deg(h^n) = max_gamma L^(gamma)_n for n = 1..60
     (an index function iota(n) = lexicographically first maximizing gamma uses 9 of the 256 sequences for n <= 60)
[PASS] characteristic polynomial of the HP matrix is X^3 + X^2 + X - 1
     real root 0.5436890127, modulus of the complex roots (1/real root)^(1/2) = 1.3562030656
[PASS] sanity: deg(h^n)^(1/n) for the HP map at n = 400 lies within 1% of 1.3562
[PASS] formula (eq:mondeg) = direct iteration for 40 random 2x2 and 40 random 3x3 matrices, n <= 15 -- 1200 comparisons
[PASS] N = 2: formula for both matrices of h_zeta = BDJ's psi(zeta) for all |a|,|b| <= 60
[PASS] zeta = 1+2i: d_j = deg(h^j) = psi(zeta^j) for j = 1..200; d_1..d_8 = 5,8,22,48,117,205,585,1054 -- [5, 8, 22, 48, 117, 205, 585, 1054]
[PASS] zeta = 1+2i: direct iteration of h gives the same d_j for j = 1..12

Part D -- sanity: the dynamical degree of Bell-Diller-Jonsson (their Proposition 2.8)
     zeta = 1+2i:  lambda in [6857557409279008598, 6857557409279008599] * 10^-18
[PASS] lambda(1+2i) enclosed rigorously in an interval of length 1e-18 starting 6.8575574092 (BDJ print 6.8575574092...) -- lower end 6857557409279008598
[PASS] lambda(-3+4i) enclosed rigorously, starting 13.4496076817 (BDJ print 13.4496076817...) -- lower end 13449607681785413449
     e_1..e_10 from BDJ Proposition 2.7 (zeta = 1+2i): [10, 66, 454, 3114, 21368, 146488, 1004626, 6889208, 47242802, 323971368]
[PASS] BDJ recursion gives e_1..e_4 = 10, 66, 454, 3114
[PASS] sanity: e_10/e_9 agrees with lambda to 4 digits -- 6.857582

Part E -- sanity: deg f^n, n = 1..4, by restriction to random lines modulo p = 2^61 - 1
     line 1: (raw degree, degree of the cancelled gcd, degree) for n = 1..4: [(10, 0, 10), (100, 34, 66), (660, 206, 454), (4540, 1426, 3114)]
     line 2: (raw degree, degree of the cancelled gcd, degree) for n = 1..4: [(10, 0, 10), (100, 34, 66), (660, 206, 454), (4540, 1426, 3114)]
     line 3: (raw degree, degree of the cancelled gcd, degree) for n = 1..4: [(10, 0, 10), (100, 34, 66), (660, 206, 454), (4540, 1426, 3114)]
[PASS] deg f^n on three random lines = 10, 66, 454, 3114 = e_1..e_4 of BDJ's recursion (n = 1..4)

Part F -- the example of Section 1.1 for the switched reading (rho = sqrt(2) - 1)
[PASS] a_n / a_{n-1} in {2, 3} for n = 1..10000 (floor(n rho) - floor((n-1) rho) in {0, 1})
[PASS] sanity: log(a_n)/n at n = 10^6 is within 1e-5 of log(2 (3/2)^rho) -- 0.86109610 vs 0.86109633

38 checks, 0 failed: ALL CHECKS PASSED
(running time 22.2 s)
