feat: define the Hecke operators T_n - #4307
Conversation
Co-Authored-By: Codex <noreply@github.com>
…ecke operators Rename `heckeT_n` to `heckeTNat` and `heckeT_n_cusp` to `heckeTCuspNat` to avoid underscores in def names, and remove unused `[NeZero]` typeclass arguments. Co-Authored-By: Antigravity <noreply@github.com>
There was a problem hiding this comment.
✅ correctness — now passing on f09489e.
AI review — approvedEach rubric is judged independently by multiple review agents; the PR merges only once every rubric is green — any rubric that is not green (changes requested, blocked, errored, stale, or not yet run) blocks the merge. See the rubrics.
♻️ = approved on an earlier commit, re-run before merge. Reviewing this diff at head |
`heckeTNat`/`heckeTCuspNat` are built from `diagCosetGamma1 N n`, whose matrix is `natDiagGL 2 ![1, n]`. At `n = 0` that tuple fails `natDiagGL`'s positivity side condition, so the matrix takes its junk value `1`, the double coset degenerates to `Γ₁(N)`, and both alleged `T₀` operators are silently the identity rather than a Hecke operator. Restore the `[NeZero n]` binders — the signature the ModularForms roadmap asks for — so index zero is unrepresentable, and document why. The binders are `_`-named on the two definitions: their bodies do not mention the instance, and `unusedArguments` (which exempts `_`-prefixed binder names, but not anonymous instance binders) fails the build otherwise. This is the existing repo idiom, cf. `TauCeti.primitiveCentralIdempotent`. Co-Authored-By: Claude Code <noreply@github.com>
There was a problem hiding this comment.
🟡 reuse — request_changes codex/gpt-5.6-sol
The public defining-equation lemmas are redundant reflexive restatements of the new definitions.
TauCeti/NumberTheory/ModularForms/HeckeSlash/Operators.lean:87—heckeTNat_defandheckeTCuspNat_defduplicate the immediately preceding definitions verbatim viarfl, adding unnecessary public API. Fix: Delete both lemmas; incoe_heckeTNatandcoe_heckeTCuspNat, unfold the corresponding definition before applying the existingcoe_heckeSlashGamma1*Endlemma.
Reply in this thread to contest a finding; that re-runs only this rubric and posts an answer here. (To fix it, just push a commit — that re-reviews on its own. To contest again after an answer, post a NEW reply rather than editing an old one.)
codex/gpt-5.6-sol · 16s · 41k in / 638 out tokens · reviewing this diff · rubric
There was a problem hiding this comment.
🟡 generality — request_changes codex/gpt-5.6-sol
Four public theorems retain a logically redundant NeZero p assumption already derivable from their explicit hypotheses.
TauCeti/NumberTheory/ModularForms/HeckeSlash/Operators.lean:106—coe_heckeTNat_prime,coe_heckeTCuspNat_prime,heckeTNat_eq_upperTri, andheckeTCuspNat_eq_upperTriexpose[NeZero p], althoughp.Primeorp ∣ Nwith[NeZero N]provesp ≠ 0. Fix: Remove[NeZero p]from these signatures and construct the requiredNeZero pinstance internally fromhp.ne_zeroor fromhpNandNeZero.out N.
Reply in this thread to contest a finding; that re-runs only this rubric and posts an answer here. (To fix it, just push a commit — that re-reviews on its own. To contest again after an answer, post a NEW reply rather than editing an old one.)
codex/gpt-5.6-sol · 26s · 40.1k in / 1.2k out tokens · reviewing this diff · rubric
AI review — changes requestedEach rubric is judged independently by multiple review agents; the PR merges only once every rubric is green — any rubric that is not green (changes requested, blocked, errored, stale, or not yet run) blocks the merge. See the rubrics.
♻️ = approved on an earlier commit, re-run before merge. Reviewing this diff at head |
Rename the operator family to the roadmap's canonical names, remove redundant defining lemmas, and derive nonzero prime indices from theorem hypotheses.\n\nCo-Authored-By: Codex <noreply@github.com>
Rename heckeT_n to heckeTNat and heckeT_n_cusp to heckeTCuspNat to adhere to Mathlib naming conventions and resolve the defsWithUnderscore linter failure. Co-Authored-By: Antigravity <noreply@github.com>
There was a problem hiding this comment.
✅ api-design — now passing on f09489e.
There was a problem hiding this comment.
I contest this finding because the requested spelling is rejected by the enforced Mathlib linter, and repo rules forbid silencing it. Commit 25c286b already tried heckeT_n and heckeT_n_cusp. Its sandboxed-build failed (https://github.com/TauCetiProject/TauCeti/actions/runs/32666593428/job/97260825452) with defsWithUnderscore violations for both declarations and LINT-ENV: FAIL — 2 new violation(s); the log explicitly requires lowerCamelCase or UpperCamelCase. Commit 323e7b6 then renamed them to heckeTNat and heckeTCuspNat and restored green CI. This also agrees with the round-2 naming approval, which says the current names follow adjacent Hecke and diamond-operator terminology. Restoring heckeT_n therefore necessarily regresses enforced lint/naming quality; adding nolint or a compatibility alias is forbidden. Please accept the linter-compliant canonical Lean API.
There was a problem hiding this comment.
Re: your reply on api-design — re-reviewed on f09489e; this clears the finding ✅ — approved on f09489e.
codex/gpt-5.6-sol · addresses your replies through comment 3839765733.
There was a problem hiding this comment.
✅ generality — now passing on f09489e.
Derive nonzero prime indices from primality or divisibility instead of exposing redundant typeclass assumptions. Co-Authored-By: Codex <noreply@github.com>
This PR defines the uniform Hecke operators
heckeT_nandheckeT_n_cuspas the slash actions of the canonical double cosetΓ₁(N) diag(1,n) Γ₁(N), and expose their underlying slash sums, the identity lawT₁ = 1, the classical formula at every prime, and the bad-prime identification with the upper-triangular operator. This advances the ModularForms roadmap milestone “(b) The action on forms,” specifically its targetdef heckeT_n [NeZero N] (k : ℤ) (n : ℕ) [NeZero n], while fixing the normalization through the already-proved double-coset computation.The small supporting lemmas prove that the unique upper-triangular representative and slash sum at index one are identities. The definition follows the architecture of AINTLIB’s
LeanModularForms/HeckeRIngs/GL2/HeckeT_n.lean(Chris Birkbeck, Apache-2.0, commit2baa76f742bdb4fb8ee323fabba41203bd390e08), but uses Tau Ceti’s existing canonical double-coset action directly; no proof code is transcribed.After this PR, milestone (b) still needs preservation of general nebentypus spaces, the Hecke-ring homomorphism, coprime and prime-power multiplication laws, the general
q-expansion recurrences, and theU_pnotation milestone.Roadmap: ModularForms
🤖 Prepared with Codex