Documentation

Mathlib.NumberTheory.ModularForms.SlashInvariantForms

Slash invariant forms #

This file defines functions that are invariant under a SlashAction which forms the basis for defining ModularForm and CuspForm. We prove several instances for such spaces, in particular that they form a module over ℝ, and over ℂ if the group is contained in SL(2, ℝ).

structure SlashInvariantForm (Γ : outParam (Subgroup (GL (Fin 2) ℝ))) (k : outParam ℤ) :

Functions ℍ → ℂ that are invariant under the SlashAction.

Instances For

    SlashInvariantFormClass F Γ k asserts F is a type of bundled functions that are invariant under the SlashAction.

    Instances
      @[instance_reducible, instance 100]
      Equations

      See note [custom simps projection].

      Equations
      Instances For
        @[simp]
        @[simp]
        theorem SlashInvariantForm.coe_mk {Γ : outParam (Subgroup (GL (Fin 2) ℝ))} {k : outParam ℤ} (f : UpperHalfPlane → ℂ) (hf : ∀ γ ∈ Γ, SlashAction.map k γ f = f) :
        ⇑{ toFun := f, slash_action_eq' := hf } = f
        theorem SlashInvariantForm.ext {Γ : outParam (Subgroup (GL (Fin 2) ℝ))} {k : outParam ℤ} {f g : SlashInvariantForm Γ k} (h : ∀ (x : UpperHalfPlane), f x = g x) :
        f = g
        theorem SlashInvariantForm.ext_iff {Γ : outParam (Subgroup (GL (Fin 2) ℝ))} {k : outParam ℤ} {f g : SlashInvariantForm Γ k} :
        f = g ↔ ∀ (x : UpperHalfPlane), f x = g x
        def SlashInvariantForm.copy {Γ : outParam (Subgroup (GL (Fin 2) ℝ))} {k : outParam ℤ} (f : SlashInvariantForm Γ k) (f' : UpperHalfPlane → ℂ) (h : f' = ⇑f) :

        Copy of a SlashInvariantForm with a new toFun equal to the old one. Useful to fix definitional equalities.

        Equations
        • f.copy f' h = { toFun := f', slash_action_eq' := ⋯ }
        Instances For
          theorem SlashInvariantForm.slash_action_eqn {F : Type u_1} {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} [FunLike F UpperHalfPlane ℂ] [SlashInvariantFormClass F Γ k] (f : F) (γ : GL (Fin 2) ℝ) (hγ : γ ∈ Γ) :
          SlashAction.map k γ ⇑f = ⇑f
          theorem SlashInvariantForm.slash_action_eqn' {F : Type u_1} {Γ : Subgroup (GL (Fin 2) ℝ)} [FunLike F UpperHalfPlane ℂ] {k : ℤ} [Γ.HasDetOne] [SlashInvariantFormClass F Γ k] (f : F) {γ : GL (Fin 2) ℝ} (hγ : γ ∈ Γ) (z : UpperHalfPlane) :
          f (γ • z) = (↑(↑γ 1 0) * ↑z + ↑(↑γ 1 1)) ^ k * f z
          theorem SlashInvariantForm.slash_action_eqn'' {F : Type u_1} {Γ : Subgroup (GL (Fin 2) ℝ)} [FunLike F UpperHalfPlane ℂ] {k : ℤ} [Γ.HasDetOne] [SlashInvariantFormClass F Γ k] (f : F) {γ : GL (Fin 2) ℝ} (hγ : γ ∈ Γ) (z : UpperHalfPlane) :
          f (γ • z) = UpperHalfPlane.denom γ ↑z ^ k * f z

          Every SlashInvariantForm f satisfies f (γ • z) = (denom γ z) ^ k * f z.

          @[instance_reducible]
          Equations
          @[instance_reducible]
          Equations
          @[simp]
          theorem SlashInvariantForm.coe_add {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} (f g : SlashInvariantForm Γ k) :
          ⇑(f + g) = ⇑f + ⇑g
          @[simp]
          theorem SlashInvariantForm.add_apply {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} (f g : SlashInvariantForm Γ k) (z : UpperHalfPlane) :
          (f + g) z = f z + g z
          @[instance_reducible]
          Equations
          @[simp]
          theorem SlashInvariantForm.coe_zero {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} :
          ⇑0 = 0
          @[instance_reducible]
          instance SlashInvariantForm.instSMul {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} [Γ.HasDetOne] {α : Type u_2} [SMul α ℂ] [IsScalarTower α ℂ ℂ] :

          Scalar multiplication by ℂ, assuming that Γ ⊆ SL(2, ℝ).

          Equations
          @[simp]
          theorem SlashInvariantForm.coe_smul {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} [Γ.HasDetOne] {α : Type u_2} [SMul α ℂ] [IsScalarTower α ℂ ℂ] (f : SlashInvariantForm Γ k) (n : α) :
          ⇑(n • f) = n • ⇑f
          @[simp]
          theorem SlashInvariantForm.smul_apply {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} [Γ.HasDetOne] {α : Type u_2} [SMul α ℂ] [IsScalarTower α ℂ ℂ] (f : SlashInvariantForm Γ k) (n : α) (z : UpperHalfPlane) :
          (n • f) z = n • f z
          @[instance_reducible]
          instance SlashInvariantForm.instSMulℝ {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} {α : Type u_2} [SMul α ℂ] [SMul α ℝ] [IsScalarTower α ℝ ℂ] :

          Scalar multiplication by ℝ, valid without restrictions on the determinant.

          Equations
          @[simp]
          theorem SlashInvariantForm.coe_smulℝ {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} {α : Type u_2} [SMul α ℂ] [SMul α ℝ] [IsScalarTower α ℝ ℂ] (f : SlashInvariantForm Γ k) (n : α) :
          ⇑(n • f) = n • ⇑f
          @[simp]
          theorem SlashInvariantForm.smul_applyℝ {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} {α : Type u_2} [SMul α ℂ] [SMul α ℝ] [IsScalarTower α ℝ ℂ] (f : SlashInvariantForm Γ k) (n : α) (z : UpperHalfPlane) :
          (n • f) z = n • f z
          @[instance_reducible]
          Equations
          @[simp]
          theorem SlashInvariantForm.coe_neg {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} (f : SlashInvariantForm Γ k) :
          ⇑(-f) = -⇑f
          @[simp]
          theorem SlashInvariantForm.neg_apply {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} (f : SlashInvariantForm Γ k) (z : UpperHalfPlane) :
          (-f) z = -f z
          @[instance_reducible]
          Equations
          @[simp]
          theorem SlashInvariantForm.coe_sub {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} (f g : SlashInvariantForm Γ k) :
          ⇑(f - g) = ⇑f - ⇑g
          @[simp]
          theorem SlashInvariantForm.sub_apply {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} (f g : SlashInvariantForm Γ k) (z : UpperHalfPlane) :
          (f - g) z = f z - g z

          Additive coercion from SlashInvariantForm to ℍ → ℂ.

          Equations
          Instances For

            The SlashInvariantForm corresponding to Function.const _ x.

            Equations
            Instances For

              The SlashInvariantForm corresponding to Function.const _ x.

              Equations
              Instances For
                @[instance_reducible]
                Equations
                def SlashInvariantForm.mul {Γ : Subgroup (GL (Fin 2) ℝ)} [Γ.HasDetPlusMinusOne] {k₁ k₂ : ℤ} (f : SlashInvariantForm Γ k₁) (g : SlashInvariantForm Γ k₂) :
                SlashInvariantForm Γ (k₁ + k₂)

                The slash invariant form of weight k₁ + k₂ given by the product of two slash-invariant forms of weights k₁ and k₂.

                Equations
                • f.mul g = { toFun := ⇑f * ⇑g, slash_action_eq' := ⋯ }
                Instances For
                  @[simp]
                  theorem SlashInvariantForm.coe_mul {Γ : Subgroup (GL (Fin 2) ℝ)} [Γ.HasDetPlusMinusOne] {k₁ k₂ : ℤ} (f : SlashInvariantForm Γ k₁) (g : SlashInvariantForm Γ k₂) :
                  ⇑(f.mul g) = ⇑f * ⇑g
                  def SlashInvariantForm.prod {ι : Type} {s : Finset ι} {k : ι → ℤ} (m : ℤ) (hm : m = ∑ i ∈ s, k i) {Γ : Subgroup (GL (Fin 2) ℝ)} [Γ.HasDetPlusMinusOne] (f : (i : ι) → SlashInvariantForm Γ (k i)) :

                  Given SlashInvariantForm's f i of weight k i for i : ι, define the form which as a function is a product of those indexed by s : Finset ι with weight m = ∑ i ∈ s, k i.

                  Equations
                  Instances For
                    @[simp]
                    theorem SlashInvariantForm.coe_prod {ι : Type} {s : Finset ι} {k : ι → ℤ} (m : ℤ) (hm : m = ∑ i ∈ s, k i) {Γ : Subgroup (GL (Fin 2) ℝ)} [Γ.HasDetPlusMinusOne] (f : (i : ι) → SlashInvariantForm Γ (k i)) :
                    ⇑(prod m hm f) = ∏ i ∈ s, ⇑(f i)
                    def SlashInvariantForm.prodEqualWeights {ι : Type} {s : Finset ι} {k : ℤ} {Γ : Subgroup (GL (Fin 2) ℝ)} [Γ.HasDetPlusMinusOne] (f : ι → SlashInvariantForm Γ k) :

                    Given SlashInvariantForm's f i of weight k, define the form which as a function is a product of those indexed by s : Finset ι with weight #s * k.

                    Equations
                    Instances For
                      @[simp]
                      theorem SlashInvariantForm.coe_prodEqualWeights {ι : Type} {s : Finset ι} {k : ℤ} {Γ : Subgroup (GL (Fin 2) ℝ)} [Γ.HasDetPlusMinusOne] (f : ι → SlashInvariantForm Γ k) :
                      ⇑(prodEqualWeights f) = ∏ i ∈ s, ⇑(f i)
                      @[simp]
                      theorem SlashInvariantForm.coe_natCast {Γ : Subgroup (GL (Fin 2) ℝ)} [Γ.HasDetPlusMinusOne] (n : ℕ) :
                      ⇑↑n = ↑n
                      @[simp]
                      theorem SlashInvariantForm.coe_intCast {Γ : Subgroup (GL (Fin 2) ℝ)} [Γ.HasDetPlusMinusOne] (z : ℤ) :
                      ⇑↑z = ↑z
                      noncomputable def SlashInvariantForm.translate {F : Type u_1} {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} [FunLike F UpperHalfPlane ℂ] [SlashInvariantFormClass F Γ k] (f : F) (g : GL (Fin 2) ℝ) :

                      Translating a SlashInvariantForm by g : GL (Fin 2) ℝ, to obtain a new SlashInvariantForm of level g⁻¹ Γ g.

                      Equations
                      Instances For
                        @[simp]
                        theorem SlashInvariantForm.coe_translate {F : Type u_1} {Γ : Subgroup (GL (Fin 2) ℝ)} {k : ℤ} [FunLike F UpperHalfPlane ℂ] [SlashInvariantFormClass F Γ k] (f : F) (g : GL (Fin 2) ℝ) :
                        ⇑(translate f g) = SlashAction.map k g ⇑f