# Coordinator checks (SageMath 10.8) for the harvest of
# ai/2026-10-23-hironaka-char-p-resolution-review.
# K1: Hauser's kangaroo sequence f0 -> f3 (char 2) and the residual orders.
# K2: arc tests showing that wp((f0,2),1) has no element of order 1 at 0 and at a
#     point eta != 0 of the cusp C = {x = 0, y^3 + z^2 = 0}.
# N1: Narasimhan's example: f, df vanish on C=(t^32,t^7,t^19,t^15); d_y(d_z f) = z^2.
F2 = GF(2)
Q.<x,y,z> = PolynomialRing(F2)
f0 = x^2 + y^7 + y*z^4
f1 = Q(f0(x*y, y, z*y)/y^2); f2 = Q(f1(x*z, y*z, z)/z^2); f3 = Q(f2(x*z, y*z+z, z)/z^2)
print("f1 =", f1, "| f2 =", f2, "| f3 =", f3)
print("f0 = x^2 + y*(y^3+z^2)^2 :", f0 == x^2 + y*(y^3+z^2)^2)
phi = y^2*z^3 + y*z^3
g3 = Q(f3(x+phi, y, z))
print("f3(x+phi) =", g3, "; factor of z^6 in residual part:", factor(Q((g3 - x^2)/z^6)))
# K2 at 0: arc y=s^2, z=s^4, x = s*u + s^N with u = y^3+z^2
N = 60
S.<s> = PowerSeriesRing(F2, default_prec=400)
def w(h, arc): return h(*arc).valuation()
yy = s^2; zz = s^4; uu = yy^3 + zz^2; xx = s*uu + s^N
arc0 = (xx, yy, zz)
mu0 = min(QQ(w(f0,arc0))/2, QQ(w(f0,arc0)), QQ(w(y^6 + z^4, arc0)))  # Diff^(1) f0 = (f0, (y^3+z^2)^2)
print("at 0: w(f0)=", w(f0,arc0), " mu=", mu0, " w(x),w(y),w(z) =", w(x,arc0), w(y,arc0), w(z,arc0))
# K2 at eta: over GF(4), t0 = a, eta = (0, t0^2, t0^3); c = t0, y(s) = (c+s)^2
F4.<a> = GF(4); Q4 = Q.change_ring(F4); S4.<s> = PowerSeriesRing(F4, default_prec=400)
c = a; z0 = a^3; y0 = a^2
for zarc in [z0 + s^2, z0 + s^3]:
    yy = (c + s)^2; uu = yy^3 + zarc^2; xx = (c + s)*uu + s^N
    arc = (xx, yy, zarc)
    fq = Q4(f0); X = Q4.gen(0) + c*(Q4.gen(1)^3 + Q4.gen(2)^2); U = Q4.gen(1)^3 + Q4.gen(2)^2; W = Q4.gen(2) - z0
    mu = min(QQ(w(fq,arc))/2, QQ(w(Q4(y^6+z^4),arc)))
    print("at eta, z-arc", zarc, ": w(f0)=", w(fq,arc), " mu=", mu, " w(X),w(U),w(W) =", w(X,arc), w(U,arc), w(W,arc),
          " leading coeffs X,U,W:", [ (h(*arc)).list()[w(h,arc)] for h in (X,U,W)])
# N1
P.<X1,Y1,Z1,W1> = PolynomialRing(F2); fN = X1^2 + Y1*Z1^3 + Z1*W1^3 + Y1^7*W1
T.<t> = PolynomialRing(F2); par = (t^32, t^7, t^19, t^15)
print("Narasimhan: f(C)=", fN(*par), " df(C)=", [fN.derivative(v)(*par) for v in P.gens()],
      " d_y d_z f =", fN.derivative(Z1).derivative(Y1))
