File: Mathlib/NumberTheory/ModularForms/EisensteinSeries/Defs.lean

full_name: EisensteinSeries.gammaSet
code: /-- The set of pairs of coprime integers congruent to `a` mod `N`. -/
def gammaSet 
goal: Set (Fin 2 → ℤ)

full_name: EisensteinSeries.pairwise_disjoint_gammaSet
code: lemma pairwise_disjoint_gammaSet : Pairwise (Disjoint on gammaSet N) 
goal: Pairwise (Disjoint on EisensteinSeries.gammaSet N)

full_name: EisensteinSeries.gammaSet_one_eq
code: /-- For level `N = 1`, the gamma sets are all equal. -/
lemma gammaSet_one_eq (a a' : Fin 2 → ZMod 1) : gammaSet 1 a = gammaSet 1 a' 
goal: EisensteinSeries.gammaSet 1 a = EisensteinSeries.gammaSet 1 a'

full_name: EisensteinSeries.gammaSet_one_equiv
code: /-- For level `N = 1`, the gamma sets are all equivalent; this is the equivalence. -/
def gammaSet_one_equiv (a a' : Fin 2 → ZMod 1) : gammaSet 1 a ≃ gammaSet 1 a' 
goal: ↑(EisensteinSeries.gammaSet 1 a) ≃ ↑(EisensteinSeries.gammaSet 1 a')

full_name: EisensteinSeries.vecMul_SL2_mem_gammaSet
code: /-- Right-multiplying by `γ ∈ SL(2, ℤ)` sends `gammaSet N a` to `gammaSet N (a ᵥ* γ)`. -/
lemma vecMul_SL2_mem_gammaSet {v : Fin 2 → ℤ} (hv : v ∈ gammaSet N a) (γ : SL(2, ℤ)) :
    v ᵥ* γ ∈ gammaSet N (a ᵥ* γ) 
goal: v ᵥ* ↑γ ∈ EisensteinSeries.gammaSet N (a ᵥ* ↑((Matrix.SpecialLinearGroup.map (Int.castRingHom (ZMod N))) γ))

full_name: EisensteinSeries.gammaSetEquiv
code: /-- The bijection between `GammaSets` given by multiplying by an element of `SL(2, ℤ)`. -/
def gammaSetEquiv (γ : SL(2, ℤ)) : gammaSet N a ≃ gammaSet N (a ᵥ* γ) 
goal: ↑(EisensteinSeries.gammaSet N a) ≃
  ↑(EisensteinSeries.gammaSet N (a ᵥ* ↑((Matrix.SpecialLinearGroup.map (Int.castRingHom (ZMod N))) γ)))

full_name: EisensteinSeries.eisSummand
code: /-- The function on `(Fin 2 → ℤ)` whose sum defines an Eisenstein series. -/
def eisSummand (k : ℤ) (v : Fin 2 → ℤ) (z : ℍ) : ℂ 
goal: ℂ

full_name: EisensteinSeries.eisSummand_SL2_apply
code: /-- How the `eisSummand` function changes under the Moebius action. -/
theorem eisSummand_SL2_apply (k : ℤ) (i : (Fin 2 → ℤ)) (A : SL(2, ℤ)) (z : ℍ) :
    eisSummand k i (A • z) = (z.denom A) ^ k * eisSummand k (i ᵥ* A) z 
goal: EisensteinSeries.eisSummand k i (A • z) = UpperHalfPlane.denom (↑A) z ^ k * EisensteinSeries.eisSummand k (i ᵥ* ↑A) z

full_name: eisensteinSeries
code: /-- An Eisenstein series of weight `k` and level `Γ(N)`, with congruence condition `a`. -/
def _root_.eisensteinSeries (k : ℤ) (z : ℍ) : ℂ 
goal: ℂ

full_name: EisensteinSeries.eisensteinSeries_slash_apply
code: lemma eisensteinSeries_slash_apply (k : ℤ) (γ : SL(2, ℤ)) :
    eisensteinSeries a k ∣[k] γ = eisensteinSeries (a ᵥ* γ) k 
goal: eisensteinSeries a k ∣[k] γ = eisensteinSeries (a ᵥ* ↑((Matrix.SpecialLinearGroup.map (Int.castRingHom (ZMod N))) γ)) k

full_name: EisensteinSeries.eisensteinSeries_SIF
code: /-- The SlashInvariantForm defined by an Eisenstein series of weight `k : ℤ`, level `Γ(N)`,
  and congruence condition given by `a : Fin 2 → ZMod N`. -/
def eisensteinSeries_SIF (k : ℤ) : SlashInvariantForm (Gamma N) k 
goal: SlashInvariantForm (CongruenceSubgroup.Gamma N) k

full_name: EisensteinSeries.eisensteinSeries_SIF_apply
code: lemma eisensteinSeries_SIF_apply (k : ℤ) (z : ℍ) :
    eisensteinSeries_SIF a k z = eisensteinSeries a k z 
goal: (EisensteinSeries.eisensteinSeries_SIF a k) z = eisensteinSeries a k z