Documentation

TauCeti.NumberTheory.ModularForms.AtkinLehner.Operator

The Atkin–Lehner slash operator #

An Atkin–Lehner matrix W for a divisor Q of N normalizes Γ₀(N) (TauCeti.IsAtkinLehnerMatrix.exists_mem_Gamma0_mul_eq_mul_left), so the weight-k slash by W sends a modular form for Γ₀(N) to another one. That is the operator built here, on M_k(Γ₀(N)) and on S_k(Γ₀(N)).

The operator carries no normalizing scalar, so it is not an involution: W ^ 2 is Q times an element of Γ₀(N), and a scalar matrix slashes by a power of its scalar, so the operator squares to Q ^ (k - 2) (atkinLehnerOperator_atkinLehnerOperator). Dividing that away is the job of the normalized operator 𝒲_Q = (√Q) ^ (2 - k) • (· ∣[k] W), built on top of this one in TauCeti/NumberTheory/ModularForms/AtkinLehner/Normalized.lean. The Fricke member Q = N of the family is studied separately in TauCeti/NumberTheory/ModularForms/Fricke/, on the Γ₁(N) carrier.

The operator does not depend on which Atkin–Lehner matrix for Q is used: two of them differ by an element of Γ₀(N), which a form for Γ₀(N) absorbs (atkinLehnerOperator_congr). The arbitrary Bézout choice in TauCeti.atkinLehnerMatrix is therefore invisible, and TauCeti.Nat.IsExactDivisor.atkinLehnerOperator — the operator W_Q indexed by the exact divisor alone, with no matrix to supply — is the interface to use.

Main definitions #

Main results #

References #

noncomputable def TauCeti.atkinLehnerGL {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} (hQ : 0 < Q) (h : IsAtkinLehnerMatrix N Q M) :
GL (Fin 2) ℝ

An Atkin–Lehner matrix, read in GL (Fin 2) ℝ. Its determinant is Q, nonzero by the positivity hypothesis, so the integral matrix really is invertible over ℝ.

Equations
Instances For
    @[simp]
    theorem TauCeti.coe_atkinLehnerGL {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} (hQ : 0 < Q) (h : IsAtkinLehnerMatrix N Q M) :

    The underlying matrix of atkinLehnerGL is the entrywise real cast.

    theorem TauCeti.val_det_atkinLehnerGL {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} (hQ : 0 < Q) (h : IsAtkinLehnerMatrix N Q M) :

    The determinant of atkinLehnerGL is Q.

    theorem TauCeti.val_det_atkinLehnerGL_pos {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} (hQ : 0 < Q) (h : IsAtkinLehnerMatrix N Q M) :
    0 < (↑(atkinLehnerGL hQ h)).det

    The determinant of atkinLehnerGL is positive, so it slashes by the det > 0 formula.

    Moving W past Γ₀(N), the GL (Fin 2) ℝ reading of IsAtkinLehnerMatrix.exists_mem_Gamma0_mul_eq_mul_left.

    W normalizes Γ₀(N) in GL (Fin 2) ℝ. Conjugating the image of Γ₀(N) by an Atkin–Lehner matrix returns that same subgroup, which is what makes the slash by W an operator on modular forms of level Γ₀(N).

    The Atkin–Lehner slash operator on M_k(Γ₀(N)): f ↦ f ∣[k] W, as a ℂ-linear endomorphism. It carries no normalizing scalar; see the module docstring.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem TauCeti.coe_atkinLehnerOperator {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} {k : ℤ} (hQ : 0 < Q) (hQN : Q ∣ N) (h : IsAtkinLehnerMatrix N Q M) (f : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma0 N)) k) :
      ⇑((atkinLehnerOperator hQ hQN h k) f) = SlashAction.map k (atkinLehnerGL hQ h) ⇑f

      On underlying functions the Atkin–Lehner operator is ⇑f ∣[k] W.

      The Atkin–Lehner slash operator on cusp forms S_k(Γ₀(N)).

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem TauCeti.coe_atkinLehnerOperatorCusp {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} {k : ℤ} (hQ : 0 < Q) (hQN : Q ∣ N) (h : IsAtkinLehnerMatrix N Q M) (f : CuspForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma0 N)) k) :
        ⇑((atkinLehnerOperatorCusp hQ hQN h k) f) = SlashAction.map k (atkinLehnerGL hQ h) ⇑f

        On underlying functions the cusp-form Atkin–Lehner operator is ⇑f ∣[k] W.

        @[simp]

        The two Atkin–Lehner slash operators agree under the coercion S_k(Γ₀(N)) → M_k(Γ₀(N)): both slash by W, which does not see whether a form vanishes at the cusps. This is the counterpart of frickeOperator_coe_cuspForm for the Fricke operator.

        theorem TauCeti.atkinLehnerOperator_congr {N Q : ℕ} {M M' : Matrix (Fin 2) (Fin 2) ℤ} {k : ℤ} (hQ : 0 < Q) (hQN : Q ∣ N) (h : IsAtkinLehnerMatrix N Q M) (h' : IsAtkinLehnerMatrix N Q M') (f : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma0 N)) k) :
        (atkinLehnerOperator hQ hQN h k) f = (atkinLehnerOperator hQ hQN h' k) f

        The operator does not depend on the chosen Atkin–Lehner matrix. Two of them differ by an element of Γ₀(N) on the left, which a form of level Γ₀(N) absorbs.

        theorem TauCeti.atkinLehnerOperatorCusp_congr {N Q : ℕ} {M M' : Matrix (Fin 2) (Fin 2) ℤ} {k : ℤ} (hQ : 0 < Q) (hQN : Q ∣ N) (h : IsAtkinLehnerMatrix N Q M) (h' : IsAtkinLehnerMatrix N Q M') (f : CuspForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma0 N)) k) :
        (atkinLehnerOperatorCusp hQ hQN h k) f = (atkinLehnerOperatorCusp hQ hQN h' k) f

        The cusp-form operator does not depend on the chosen Atkin–Lehner matrix. This is atkinLehnerOperator_congr read on the image of the coercion S_k(Γ₀(N)) → M_k(Γ₀(N)); no second representative-and-slash argument is needed.

        Slashing twice by W is Q ^ (k - 2) times slashing by W ^ 2 / Q: if W * W = Q • γ with γ ∈ SL(2, ℤ), the scalar matrix Q contributes the constant Q ^ (k - 2) and what is left is the slash by γ. No invariance of f is assumed.

        theorem TauCeti.slash_atkinLehnerGL_slash_atkinLehnerGL {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} {k : ℤ} (hQ : 0 < Q) (hQN : Q ∣ N) (h : IsAtkinLehnerMatrix N Q M) (f : UpperHalfPlane → ℂ) (hf : ∀ γ ∈ Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma0 N), SlashAction.map k γ f = f) :
        SlashAction.map k (atkinLehnerGL hQ h) (SlashAction.map k (atkinLehnerGL hQ h) f) = ↑Q ^ (k - 2) • f

        Slashing twice by W multiplies by Q ^ (k - 2). The square W ^ 2 is Q times an element of Γ₀(N); the scalar matrix contributes Q ^ (k - 2) and the Γ₀(N) factor is absorbed. This is the identity the normalization (√Q) ^ (2 - k) turns into an involution in even weight.

        theorem TauCeti.atkinLehnerOperator_atkinLehnerOperator {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} {k : ℤ} (hQ : 0 < Q) (hQN : Q ∣ N) (h : IsAtkinLehnerMatrix N Q M) (f : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma0 N)) k) :
        (atkinLehnerOperator hQ hQN h k) ((atkinLehnerOperator hQ hQN h k) f) = ↑Q ^ (k - 2) • f

        The Atkin–Lehner operator squares to Q ^ (k - 2) on M_k(Γ₀(N)).

        The cusp-form Atkin–Lehner operator squares to Q ^ (k - 2).

        The operator of an exact divisor #

        Taking the Bézout witness atkinLehnerMatrix N Q as the representative leaves one operator W_Q per exact divisor Q of N, with no matrix for the user to supply. By atkinLehnerOperator_congr it is the slash by any Atkin–Lehner matrix for Q whatsoever.

        The Atkin–Lehner operator W_Q on M_k(Γ₀(N)), for an exact divisor Q of N: the slash by atkinLehnerMatrix N Q. Any other Atkin–Lehner matrix for Q gives the same operator (Nat.IsExactDivisor.atkinLehnerOperator_eq).

        Equations
        Instances For
          @[simp]

          On underlying functions W_Q is the slash by atkinLehnerMatrix N Q, read in GL (Fin 2) ℝ.

          @[simp]

          On underlying functions the cusp-form W_Q is the slash by atkinLehnerMatrix N Q, read in GL (Fin 2) ℝ.

          W_Q is the slash by any Atkin–Lehner matrix for Q.

          The cusp-form W_Q is the slash by any Atkin–Lehner matrix for Q.

          Composition in the divisor #

          Slashing by an Atkin–Lehner matrix for Q and then by one for R is slashing by their product, which is an Atkin–Lehner matrix for Q * R (TauCeti.IsAtkinLehnerMatrix.mul). On coprime exact divisors this reads W_R ∘ W_Q = W_{Q R}, and since Q * R = R * Q the two operators commute.

          theorem TauCeti.atkinLehnerGL_mul {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} {R : ℕ} {M' : Matrix (Fin 2) (Fin 2) ℤ} (hQ : 0 < Q) (hR : 0 < R) (hQRN : Q * R ∣ N) (h : IsAtkinLehnerMatrix N Q M) (h' : IsAtkinLehnerMatrix N R M') :

          The product of two Atkin–Lehner matrices, read in GL (Fin 2) ℝ.

          theorem TauCeti.atkinLehnerOperator_atkinLehnerOperator_mul {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} {k : ℤ} {R : ℕ} {M' : Matrix (Fin 2) (Fin 2) ℤ} (hQ : 0 < Q) (hR : 0 < R) (hQRN : Q * R ∣ N) (h : IsAtkinLehnerMatrix N Q M) (h' : IsAtkinLehnerMatrix N R M') (f : ModularForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma0 N)) k) :
          (atkinLehnerOperator hR ⋯ h' k) ((atkinLehnerOperator hQ ⋯ h k) f) = (atkinLehnerOperator ⋯ hQRN ⋯ k) f

          Composing the two raw Atkin–Lehner operators on M_k(Γ₀(N)): first W_Q, then W_R, is the operator of the product matrix, an Atkin–Lehner matrix for Q * R.

          theorem TauCeti.atkinLehnerOperatorCusp_atkinLehnerOperatorCusp_mul {N Q : ℕ} {M : Matrix (Fin 2) (Fin 2) ℤ} {k : ℤ} {R : ℕ} {M' : Matrix (Fin 2) (Fin 2) ℤ} (hQ : 0 < Q) (hR : 0 < R) (hQRN : Q * R ∣ N) (h : IsAtkinLehnerMatrix N Q M) (h' : IsAtkinLehnerMatrix N R M') (f : CuspForm (Subgroup.map (Matrix.SpecialLinearGroup.mapGL ℝ) (CongruenceSubgroup.Gamma0 N)) k) :
          (atkinLehnerOperatorCusp hR ⋯ h' k) ((atkinLehnerOperatorCusp hQ ⋯ h k) f) = (atkinLehnerOperatorCusp ⋯ hQRN ⋯ k) f

          Composing the two raw Atkin–Lehner operators on S_k(Γ₀(N)).

          W_R ∘ W_Q = W_{Q R} at coprime exact divisors, on M_k(Γ₀(N)). The product Q * R is again an exact divisor (TauCeti.Nat.IsExactDivisor.mul), so the family of operators indexed by exact divisors is closed under this composition.

          The endpoints Q = 1 and Q = N #

          At Q = 1 the matrix atkinLehnerMatrix N 1 has determinant 1, so it is an element of Γ₀(N) (isAtkinLehnerMatrix_one_iff_mem_Gamma0), and a function invariant under Γ₀(N) is unchanged by the slash.

          @[simp]

          The cusp-form W_1 is the identity on S_k(Γ₀(N)).

          theorem TauCeti.atkinLehnerGL_fricke {N : ℕ} (hN : 0 < N) :

          The Fricke matrix read as an Atkin–Lehner matrix for Q = N is frickeGL ℝ N. The NeZero instance that frickeGL asks for is supplied by the positivity hypothesis.

          W_N is the Fricke slash on M_k(Γ₀(N)): on underlying functions it is ⇑f ∣[k] frickeGL ℝ N, the slash that frickeOperator performs at level Γ₁(N) (coe_frickeOperator).

          The cusp-form W_N is the Fricke slash on S_k(Γ₀(N)), the slash that frickeOperatorCusp performs at level Γ₁(N) (coe_frickeOperatorCusp).