From 021823447ef8cf7bbc54bc474acd3a716e7be611 Mon Sep 17 00:00:00 2001 From: Taksh Date: Wed, 2 Sep 2026 17:46:41 +0530 Subject: [PATCH] Guard gen_degree emit behind __main__ Code after the main guard still ran at import time and required n, so importing gen_degree raised NameError. Indent the emit block under __main__ so the module loads cleanly. --- scripts/gen_degree.py | 258 +++++++++++++++++++++--------------------- 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/scripts/gen_degree.py b/scripts/gen_degree.py index 21de418..94e40c2 100644 --- a/scripts/gen_degree.py +++ b/scripts/gen_degree.py @@ -95,132 +95,132 @@ def ev(cs, x): import sys if "--check" in sys.argv: _check() n = int(sys.argv[1]); M = n-1 -cf, L, pole = Ppoly(n); d = len(cf)-1 -U = F(17) if F(17) <= F(M,2) else F(M,2); p,q = U.numerator, U.denominator -G = [sum(cf[i]*q**(j-i)*comb(d-i,j-i)*p**i for i in range(j+1)) for j in range(d+1)] -assert all(g>0 for g in G) -even = (n%2==0); k = (n-4)//2 if even else (n-5)//2 -NAMES={5:"five",6:"six",7:"seven",8:"eight",20:"twenty"} -nm = NAMES.get(n, "d%d"%n) -def wrap(body, indent, width=96): - out=[]; cur=indent - for w in body.split(" "): - if len(cur)+1+len(w) > width and cur.strip(): - out.append(cur.rstrip()); cur = indent+" "+w - else: cur = (cur+" "+w) if cur.strip() else cur+w - out.append(cur.rstrip()); return "\n".join(out).lstrip() -def poly(cs, var="α"): - ts=[] - for i,v in enumerate(cs): - if v==0: continue - s=("+ " if v>0 else "- ")+str(abs(v)) - if i==1: s+=" * "+var - elif i>1: s+=f" * {var} ^ {i}" - ts.append(s) - r=" ".join(ts); return r[2:] if r.startswith("+ ") else "-"+r[2:] -P = poly(cf) -lin = f"({p} - {q} * α)" if q!=1 else f"({p} - α)" -def bterm(j): - if j==0: return f"{G[0]} * {lin} ^ {d}" - if j==d: return f"{G[d]} * α ^ {d}" - return f"{G[j]} * α ^ {j} * {lin} ^ {d-j}" -bern = " + ".join(bterm(j) for j in range(d+1)) -haves = "\n".join(f" have h{j} : (0:ℝ) ≤ {bterm(j)} :=\n" - f" mul_nonneg (mul_nonneg (by norm_num) (pow_nonneg hα {j})) (pow_nonneg hu {d-j})" - if 0 try rw [mom] - simp only [Finset.sum_range_succ, Finset.sum_range_zero, Nat.choose, Nat.cast_one] - norm_num - field_simp - ring - rw [hid] at hR - have hP := P_{nm}_pos hα hle - have hq : 0 < ({wrap(P, " ")}) - / ({L} * (3 + α) ^ {pole}) := div_pos hP (by positivity) - linarith - -end Sendov -''' -io.open(f"Degree{n}.lean","w",encoding="utf-8").write(src) -print(f"n={n} deg={d} bytes={len(src)} maxGammaDigits={max(len(str(g)) for g in G)}") + cf, L, pole = Ppoly(n); d = len(cf)-1 + U = F(17) if F(17) <= F(M,2) else F(M,2); p,q = U.numerator, U.denominator + G = [sum(cf[i]*q**(j-i)*comb(d-i,j-i)*p**i for i in range(j+1)) for j in range(d+1)] + assert all(g>0 for g in G) + even = (n%2==0); k = (n-4)//2 if even else (n-5)//2 + NAMES={5:"five",6:"six",7:"seven",8:"eight",20:"twenty"} + nm = NAMES.get(n, "d%d"%n) + def wrap(body, indent, width=96): + out=[]; cur=indent + for w in body.split(" "): + if len(cur)+1+len(w) > width and cur.strip(): + out.append(cur.rstrip()); cur = indent+" "+w + else: cur = (cur+" "+w) if cur.strip() else cur+w + out.append(cur.rstrip()); return "\n".join(out).lstrip() + def poly(cs, var="α"): + ts=[] + for i,v in enumerate(cs): + if v==0: continue + s=("+ " if v>0 else "- ")+str(abs(v)) + if i==1: s+=" * "+var + elif i>1: s+=f" * {var} ^ {i}" + ts.append(s) + r=" ".join(ts); return r[2:] if r.startswith("+ ") else "-"+r[2:] + P = poly(cf) + lin = f"({p} - {q} * α)" if q!=1 else f"({p} - α)" + def bterm(j): + if j==0: return f"{G[0]} * {lin} ^ {d}" + if j==d: return f"{G[d]} * α ^ {d}" + return f"{G[j]} * α ^ {j} * {lin} ^ {d-j}" + bern = " + ".join(bterm(j) for j in range(d+1)) + haves = "\n".join(f" have h{j} : (0:ℝ) ≤ {bterm(j)} :=\n" + f" mul_nonneg (mul_nonneg (by norm_num) (pow_nonneg hα {j})) (pow_nonneg hu {d-j})" + if 0 try rw [mom] + simp only [Finset.sum_range_succ, Finset.sum_range_zero, Nat.choose, Nat.cast_one] + norm_num + field_simp + ring + rw [hid] at hR + have hP := P_{nm}_pos hα hle + have hq : 0 < ({wrap(P, " ")}) + / ({L} * (3 + α) ^ {pole}) := div_pos hP (by positivity) + linarith + + end Sendov + ''' + io.open(f"Degree{n}.lean","w",encoding="utf-8").write(src) + print(f"n={n} deg={d} bytes={len(src)} maxGammaDigits={max(len(str(g)) for g in G)}")