Prove2Me
Navigate
MissionsFormalpediaBlogsUsersMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Compactly supported group cohomology and integral modular-symbol evaluations

Definition
MTT_Cohomology

by davidloeffler · Sep 6, 2026 · Mathlib 0df444a (Lean v4.33.1)

group-cohomologymodular-forms

Define degree-one relative group cohomology as Gamma-equivariant additive divisor-pair functions with homogeneous binary polynomial values. This is Hom_Gamma(Div^0(P^1(Q)), Sym^n R^2), over an arbitrary commutative ring. Define the integral coefficient evaluations, coefficientwise extension and canonical tensor base change, the explicitly normalized prime-Hecke and reflection formulas, nebentype/sign eigenpackets, and analytic integration comparison predicates. No analytic or arithmetic theorem is assumed in this definition file. Integral group cohomology is distinguished from cohomology of the coarse quotient at elliptic stabilizers.

Definition code
import Definitions.Def_MTT_Arithmetic
import Mathlib.RingTheory.MvPolynomial.Homogeneous
import Mathlib.Topology.Compactification.OnePoint.ProjectiveLine
import Mathlib.LinearAlgebra.TensorProduct.Basic
set_option autoImplicit false
noncomputable section
open scoped BigOperators TensorProduct
namespace MTT.Cohomology
abbrev Cusp := OnePoint ℚ
abbrev Binary (R : Type*) [CommRing R] := MvPolynomial (Fin 2) R
/-- Homogeneous-polynomial model of Sym^n(R²). -/
abbrev Sym (R : Type*) [CommRing R] (n : ℕ) :=
  MvPolynomial.homogeneousSubmodule (Fin 2) R n
/-- Left coefficient action P(X,Y) ↦ P((X,Y)γ). -/
def act {R : Type*} [CommRing R] (γ : Matrix (Fin 2) (Fin 2) ℤ) :
    Binary R →ₗ[R] Binary R :=
  (MvPolynomial.aeval fun i : Fin 2 =>
    ∑ a : Fin 2, (γ a i : R) • MvPolynomial.X a).toLinearMap

def cuspAct (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) (x : Cusp) : Cusp :=
  Matrix.SpecialLinearGroup.mapGL ℚ γ • x
/-- Relative group cohomology in the modular-symbol model
Hom_Γ(Div⁰(P¹(ℚ)), Sym^n(R²)). Pairs represent [x] − [y].
This is not coarse-quotient cohomology with integral coefficients. -/
def compactSupport (Γ : Subgroup (Matrix.SpecialLinearGroup (Fin 2) ℤ))
    (n : ℕ) (R : Type*) [CommRing R] :
    Submodule R ((Cusp × Cusp) → Binary R) where
  carrier := {φ | (∀ x y, φ (x,y) ∈ Sym R n) ∧
    (∀ x y z, φ (x,y) + φ (y,z) = φ (x,z)) ∧
    (∀ γ : Γ, ∀ x y, φ (cuspAct γ.val x, cuspAct γ.val y) = act γ.val.val (φ (x,y)))}
  zero_mem' := by simp [MvPolynomial.isHomogeneous_zero]
  add_mem' := by
    rintro φ ψ ⟨hφ, aφ, eφ⟩ ⟨hψ, aψ, eψ⟩
    refine ⟨fun x y => (Sym R n).add_mem (hφ x y) (hψ x y), ?_, ?_⟩
    · intro x y z
      change (φ (x,y) + ψ (x,y)) + (φ (y,z) + ψ (y,z)) = φ (x,z) + ψ (x,z)
      rw [add_add_add_comm, aφ, aψ]
    · intro γ x y
      change φ _ + ψ _ = act γ.val.val (φ _ + ψ _)
      rw [map_add, eφ, eψ]
  smul_mem' := by
    rintro a φ ⟨hφ, aφ, eφ⟩
    refine ⟨fun x y => (Sym R n).smul_mem a (hφ x y), ?_, ?_⟩
    · intro x y z
      change a • φ (x,y) + a • φ (y,z) = a • φ (x,z)
      rw [← smul_add, aφ]
    · intro γ x y
      change a • φ _ = act γ.val.val (a • φ _)
      rw [map_smul, eφ]
abbrev Hc (N n : ℕ) (R : Type*) [CommRing R] :=
  compactSupport (CongruenceSubgroup.Gamma1 N) n R
/-- Integral coefficient evaluation on [∞] − [r]. -/
def evaluation {N n : ℕ} {R : Type*} [CommRing R] (j : ℕ) (r : ℚ) :
    Hc N n R →ₗ[R] R where
  toFun φ := MvPolynomial.coeff (Finsupp.equivFunOnFinite.symm
    (fun i : Fin 2 => if i = 0 then j else n-j)) (φ.val (OnePoint.infty, (r : Cusp)))
  map_add' _ _ := by simp
  map_smul' _ _ := by simp
/-- Coefficientwise extension, without presupposing base change. -/
def Extends {N n : ℕ} {R S : Type*} [CommRing R] [CommRing S]
    (ι : R →+* S) (φ : Hc N n R) (ψ : Hc N n S) : Prop :=
  ∀ x y, ψ.val (x,y) = MvPolynomial.map ι (φ.val (x,y))
/-- Canonical base-change isomorphism specified on pure tensors. -/
def BaseChange (N n : ℕ) (R : Type*) [CommRing R] : Prop :=
  ∃ e : (R ⊗[ℤ] Hc N n ℤ) ≃ₗ[R] Hc N n R,
    ∀ φ : Hc N n ℤ, Extends (Int.castRingHom R) φ (e (1 ⊗ₜ[ℤ] φ))

/-- Fractional-linear action, also used for positive-determinant Hecke matrices. -/
def fractional (g : Matrix (Fin 2) (Fin 2) ℤ) (x : Cusp) : Cusp :=
  match x with
  | none => if g 1 0 = 0 then OnePoint.infty else ((g 0 0 : ℚ) / g 1 0 : ℚ)
  | some r => if (g 1 0 : ℚ)*r + g 1 1 = 0 then OnePoint.infty
      else (((g 0 0 : ℚ)*r + g 0 1) / ((g 1 0 : ℚ)*r + g 1 1) : ℚ)

/-- Integral adjugate normalization: det(g)^(k−1)(cz+d)^(-k)
on analytic forms of weight k. -/
def slash {R : Type*} [CommRing R] (g : Matrix (Fin 2) (Fin 2) ℤ)
    (φ : (Cusp × Cusp) → Binary R) : (Cusp × Cusp) → Binary R :=
  fun D => act (Matrix.adjugate g) (φ (fractional g D.1, fractional g D.2))

def primeHecke {R : Type*} [CommRing R] (e : R) (l : ℕ)
    (φ : (Cusp × Cusp) → Binary R) : (Cusp × Cusp) → Binary R :=
  (∑ b : Fin l, slash !![1, (b.val : ℤ); 0, (l : ℤ)] φ) +
    e • slash !![(l : ℤ), 0; 0, 1] φ

def reflection {R : Type*} [CommRing R]
    (φ : (Cusp × Cusp) → Binary R) : (Cusp × Cusp) → Binary R :=
  fun D => act !![-1, 0; 0, 1]
    (φ (fractional !![-1, 0; 0, 1] D.1, fractional !![-1, 0; 0, 1] D.2))

/-- Full prime-Hecke, nebentype and sign conditions; primes dividing N are included. -/
def Packet {N n : ℕ} {R : Type*} [CommRing R]
    (e : ZMod N → R) (a : ℕ → R) (s : Bool) (φ : Hc N n R) : Prop :=
  (∀ l : ℕ, l.Prime → primeHecke (e l) l φ.val = a l • φ.val) ∧
  (∀ γ : CongruenceSubgroup.Gamma0 N, ∀ x y,
    φ.val (cuspAct γ.val x, cuspAct γ.val y) =
      e (γ.val 1 1 : ZMod N) • act γ.val.val (φ.val (x,y))) ∧
  reflection φ.val = (MTT.sign s : R) • φ.val

/-- Integration is normalized by −2πi; the coefficient functional has a binomial factor. -/
def IntegralClass {N k : ℕ} (f : CuspForm (MTT.GammaOne N) (k : ℤ))
    (φ : Hc N (k-2) ℂ) : Prop :=
  ∀ j r, j ≤ k-2 → evaluation j r φ =
    ((k-2).choose j : ℂ) * MTT.modularIntegral f (Polynomial.X ^ j) r

/-- Both signs retain the half in the analytic normalization. -/
def SignedClass {N k : ℕ} (f : CuspForm (MTT.GammaOne N) (k : ℤ))
    (s : Bool) (φ : Hc N (k-2) ℂ) : Prop :=
  ∀ j r, j ≤ k-2 → evaluation j r φ =
    ((k-2).choose j : ℂ) * MTT.signedIntegral f s j r

/-- Precise Hecke-equivariance, using the analytic normalization already in MTT. -/
def HeckeEquivariant {N k : ℕ}
    (I : CuspForm (MTT.GammaOne N) (k : ℤ) →ₗ[ℂ] Hc N (k-2) ℂ) : Prop :=
  ∀ (e : DirichletCharacter ℂ N) (l : ℕ), l.Prime →
  ∀ f g : CuspForm (MTT.GammaOne N) (k : ℤ),
    (∀ z, g z = MTT.heckePrime k (e l) l f z) →
    (I g).val = primeHecke (e l) l (I f).val

end MTT.Cohomology
Source
Ash–Stevens, Modular forms in characteristic l and special values of their L-functions, Definition 4.1 and Proposition 4.2, pp. 861–863; https://math.bu.edu/people/ghs/papers/Mod_fms_char_ell.pdf. The degree-one relative group-cohomology model is used over Z.

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactJoin Slack© 2026 Prove2Me