Modular forms #
This file defines modular forms and proves some basic properties about them. Including constructing the graded ring of modular forms.
We begin by defining modular forms and cusp forms as extension of SlashInvariantForm
s then we
define the space of modular forms, cusp forms and prove that the product of two modular forms is a
modular form.
These are SlashInvariantForm
's that are holomorphic and bounded at infinity.
- toFun : UpperHalfPlane → ℂ
- slash_action_eq' (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : γ ∈ Γ → SlashAction.map ℂ k γ self.toFun = self.toFun
- holo' : MDifferentiable (modelWithCornersSelf ℂ ℂ) (modelWithCornersSelf ℂ ℂ) ⇑self.toSlashInvariantForm
- bdd_at_infty' (A : Matrix.SpecialLinearGroup (Fin 2) ℤ) : UpperHalfPlane.IsBoundedAtImInfty (SlashAction.map ℂ k A ⇑self.toSlashInvariantForm)
Instances For
These are SlashInvariantForm
s that are holomorphic and zero at infinity.
- toFun : UpperHalfPlane → ℂ
- slash_action_eq' (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : γ ∈ Γ → SlashAction.map ℂ k γ self.toFun = self.toFun
- holo' : MDifferentiable (modelWithCornersSelf ℂ ℂ) (modelWithCornersSelf ℂ ℂ) ⇑self.toSlashInvariantForm
- zero_at_infty' (A : Matrix.SpecialLinearGroup (Fin 2) ℤ) : UpperHalfPlane.IsZeroAtImInfty (SlashAction.map ℂ k A ⇑self.toSlashInvariantForm)
Instances For
ModularFormClass F Γ k
says that F
is a type of bundled functions that extend
SlashInvariantFormClass
by requiring that the functions be holomorphic and bounded
at infinity.
- slash_action_eq (f : F) (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : γ ∈ Γ → SlashAction.map ℂ k γ ⇑f = ⇑f
- holo (f : F) : MDifferentiable (modelWithCornersSelf ℂ ℂ) (modelWithCornersSelf ℂ ℂ) ⇑f
- bdd_at_infty (f : F) (A : Matrix.SpecialLinearGroup (Fin 2) ℤ) : UpperHalfPlane.IsBoundedAtImInfty (SlashAction.map ℂ k A ⇑f)
Instances
CuspFormClass F Γ k
says that F
is a type of bundled functions that extend
SlashInvariantFormClass
by requiring that the functions be holomorphic and zero
at infinity.
- slash_action_eq (f : F) (γ : Matrix.SpecialLinearGroup (Fin 2) ℤ) : γ ∈ Γ → SlashAction.map ℂ k γ ⇑f = ⇑f
- holo (f : F) : MDifferentiable (modelWithCornersSelf ℂ ℂ) (modelWithCornersSelf ℂ ℂ) ⇑f
- zero_at_infty (f : F) (A : Matrix.SpecialLinearGroup (Fin 2) ℤ) : UpperHalfPlane.IsZeroAtImInfty (SlashAction.map ℂ k A ⇑f)
Instances
Equations
- ModularForm.funLike Γ k = { coe := fun (f : ModularForm Γ k) => f.toFun, coe_injective' := ⋯ }
Equations
- CuspForm.funLike Γ k = { coe := fun (f : CuspForm Γ k) => f.toFun, coe_injective' := ⋯ }
Copy of a ModularForm
with a new toFun
equal to the old one. Useful to fix
definitional equalities.
Equations
- f.copy f' h = { toSlashInvariantForm := f.copy f' h, holo' := ⋯, bdd_at_infty' := ⋯ }
Instances For
Copy of a CuspForm
with a new toFun
equal to the old one. Useful to fix
definitional equalities.
Equations
- f.copy f' h = { toSlashInvariantForm := f.copy f' h, holo' := ⋯, zero_at_infty' := ⋯ }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- ModularForm.instZero = { zero := { toSlashInvariantForm := 0, holo' := ModularForm.instZero.proof_1, bdd_at_infty' := ⋯ } }
Equations
- ModularForm.instSMul = { smul := fun (c : α) (f : ModularForm Γ k) => { toSlashInvariantForm := c • f.toSlashInvariantForm, holo' := ⋯, bdd_at_infty' := ⋯ } }
Equations
- ModularForm.instNeg = { neg := fun (f : ModularForm Γ k) => { toSlashInvariantForm := -f.toSlashInvariantForm, holo' := ⋯, bdd_at_infty' := ⋯ } }
Equations
- ModularForm.instSub = { sub := fun (f g : ModularForm Γ k) => f + -g }
Equations
- ModularForm.instAddCommGroup = Function.Injective.addCommGroup (fun (f : ModularForm Γ k) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Additive coercion from ModularForm
to ℍ → ℂ
.
Equations
- ModularForm.coeHom = { toFun := fun (f : ModularForm Γ k) => ⇑f, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equations
- ModularForm.instModuleComplex = Function.Injective.module ℂ ModularForm.coeHom ⋯ ⋯
Equations
- ModularForm.instInhabited = { default := 0 }
The modular form of weight k_1 + k_2
given by the product of two modular forms of weights
k_1
and k_2
.
Equations
- f.mul g = { toSlashInvariantForm := f.mul g.toSlashInvariantForm, holo' := ⋯, bdd_at_infty' := ⋯ }
Instances For
The constant function with value x : ℂ
as a modular form of weight 0 and any level.
Equations
- ModularForm.const x = { toSlashInvariantForm := SlashInvariantForm.const x, holo' := ⋯, bdd_at_infty' := ⋯ }
Instances For
Equations
- ModularForm.instOneOfNatInt = { one := let __src := ModularForm.const 1; { toSlashInvariantForm := 1, holo' := ⋯, bdd_at_infty' := ⋯ } }
Equations
- ModularForm.instNatCastOfNatInt Γ = { natCast := fun (n : ℕ) => ModularForm.const ↑n }
Equations
- ModularForm.instIntCastOfNatInt Γ = { intCast := fun (z : ℤ) => ModularForm.const ↑z }
Equations
- One or more equations did not get rendered due to their size.
Equations
- CuspForm.instZero = { zero := { toSlashInvariantForm := 0, holo' := CuspForm.instZero.proof_1, zero_at_infty' := ⋯ } }
Equations
- CuspForm.instAddCommGroup = Function.Injective.addCommGroup (fun (f : CuspForm Γ k) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Additive coercion from CuspForm
to ℍ → ℂ
.
Instances For
Equations
- CuspForm.instModuleComplex = Function.Injective.module ℂ CuspForm.coeHom ⋯ ⋯
Equations
- CuspForm.instInhabited = { default := 0 }
Cast for modular forms, which is useful for avoiding Heq
s.
Equations
- ModularForm.mcast h f = { toFun := ⇑f, slash_action_eq' := ⋯, holo' := ⋯, bdd_at_infty' := ⋯ }
Instances For
Equations
- ModularForm.instGOneInt Γ = { one := 1 }
Equations
- ModularForm.instGMulInt Γ = { mul := fun {i j : ℤ} (f : ModularForm Γ i) (g : ModularForm Γ j) => f.mul g }
Equations
Equations
- ModularForm.instGAlgebra Γ = { toFun := { toFun := ModularForm.const, map_zero' := ⋯, map_add' := ⋯ }, map_one := ⋯, map_mul := ⋯, commutes := ⋯, smul_def := ⋯ }