Documentation

LeanPool.LeanModularForms.HeckeRIngs.GLn.DiagonalCosets

Diagonal Coset Representatives for GL_n Hecke Ring #

Defines the double coset elements T(a₁,...,aₙ) corresponding to diagonal matrices diag[a₁,...,aₙ] in the Hecke ring, and proves that every double coset has a diagonal representative (elementary divisor theorem / Smith normal form).

Main definitions #

Main results #

References #

noncomputable def HeckeRing.GLn.diagMat (n : ) (a : Fin n) :
GL (Fin n)

The diagonal GL_n(ℚ) element diag(a₁,...,aₙ) with positive natural number entries. Returns 1 (the identity matrix) when the positivity condition ∀ i, 0 < a i fails; this is a junk value that simplifies the API by avoiding an explicit positivity argument.

Equations
Instances For
    @[simp]
    theorem HeckeRing.GLn.diagMat_val (n : ) (a : Fin n) (ha : ∀ (i : Fin n), 0 < a i) :
    (diagMat n a) = Matrix.diagonal fun (i : Fin n) => (a i)
    theorem HeckeRing.GLn.diagMat_hasIntEntries (n : ) (a : Fin n) (ha : ∀ (i : Fin n), 0 < a i) :
    theorem HeckeRing.GLn.diagMat_det_pos (n : ) (a : Fin n) (ha : ∀ (i : Fin n), 0 < a i) :
    0 < (↑(diagMat n a)).det
    theorem HeckeRing.GLn.diagMat_mem_posDetInt (n : ) (a : Fin n) (ha : ∀ (i : Fin n), 0 < a i) :
    theorem HeckeRing.GLn.diagMat_det (n : ) (a : Fin n) (ha : ∀ (i : Fin n), 0 < a i) :
    (↑(diagMat n a)).det = i : Fin n, (a i)
    theorem HeckeRing.GLn.diagMat_one (n : ) :
    (diagMat n fun (x : Fin n) => 1) = 1
    noncomputable def HeckeRing.GLn.diagMatDelta (n : ) [NeZero n] (a : Fin n) :
    (GLPair n).Δ

    The diagonal matrix diag(a₁,...,aₙ) as an element of Shimura's Δ.

    Equations
    Instances For
      @[simp]
      theorem HeckeRing.GLn.diagMat_delta_val (n : ) [NeZero n] (a : Fin n) (ha : ∀ (i : Fin n), 0 < a i) :
      (diagMatDelta n a) = diagMat n a
      def HeckeRing.GLn.DivChain (n : ) (a : Fin n) :

      The divisibility chain condition a₁ | a₂ | ... | aₙ for positive integer sequences.

      Equations
      Instances For
        theorem HeckeRing.GLn.divChain_const (n c : ) :
        DivChain n fun (x : Fin n) => c
        theorem HeckeRing.GLn.divChain_dvd (n : ) {a : Fin n} (ha : DivChain n a) {i j : Fin n} (hij : i j) :
        a i a j

        Transitivity of the divisibility chain: a i ∣ a j whenever i ≤ j.

        theorem HeckeRing.GLn.divChain_div_pos (n : ) {a : Fin n} (hpos : ∀ (i : Fin n), 0 < a i) (ha : DivChain n a) {i j : Fin n} (hij : i j) :
        0 < a j / a i

        The quotient a j / a i is positive when i ≤ j in a divisibility chain.

        noncomputable def HeckeRing.GLn.TDiag {n : } [NeZero n] (a : Fin n) :

        T(a₁,...,aₙ) = Γ · diag[a₁,...,aₙ] · Γ as a double coset. Hypotheses ha (positivity) and hdiv (divisibility chain) belong in lemmas, not the definition; the result is junk when they fail.

        Equations
        Instances For
          noncomputable def HeckeRing.GLn.TElem {n : } [NeZero n] (a : Fin n) :

          T(a₁,...,aₙ) as a Hecke ring element with coefficient 1.

          Equations
          Instances For
            theorem HeckeRing.GLn.T_diag_rep_mem_doubleCoset {n : } [NeZero n] (a : Fin n) (ha : ∀ (i : Fin n), 0 < a i) :

            The representative of TDiag lies in the double coset of diagMat.

            theorem HeckeRing.GLn.T_diag_rep_decompose {n : } [NeZero n] (a : Fin n) (ha : ∀ (i : Fin n), 0 < a i) :
            L(GLPair n).H, R(GLPair n).H, (TDiag a).rep = L * diagMat n a * R

            Decompose the TDiag representative as L * diagMat * R with L, R in H.

            theorem HeckeRing.GLn.T_diag_ones {n : } [NeZero n] :
            (TDiag fun (x : Fin n) => 1) = HeckeCoset.one (GLPair n)
            theorem HeckeRing.GLn.T_diag_eq_iff {n : } [NeZero n] (a b : Fin n) (ha : ∀ (i : Fin n), 0 < a i) (hb : ∀ (i : Fin n), 0 < b i) :

            Two diagonal double cosets are equal iff the underlying double cosets in GL_n(ℚ) coincide.

            noncomputable def HeckeRing.GLn.transvectionGL (n : ) {i j : Fin n} (hij : i j) (c : ) :
            GL (Fin n)

            An elementary transvection I + c * E_{ij} as an element of GL_n(ℚ).

            Equations
            Instances For
              theorem HeckeRing.GLn.transvectionGL_hasIntEntries (n : ) {i j : Fin n} (hij : i j) (c : ) :
              theorem HeckeRing.GLn.transvectionGL_mem_SLnZ (n : ) {i j : Fin n} (hij : i j) (c : ) :
              theorem HeckeRing.GLn.exists_diagonal_of_posdet (n : ) (A : Matrix (Fin n) (Fin n) ) (hdet : 0 < A.det) :
              ∃ (d : Fin n) (_ : ∀ (i : Fin n), 0 < d i) (L : Matrix.SpecialLinearGroup (Fin n) ) (R : Matrix.SpecialLinearGroup (Fin n) ), L * A * R = Matrix.diagonal d

              Every integer matrix with positive determinant is SL_n(ℤ)-equivalent to a positive diagonal.

              theorem HeckeRing.GLn.exists_diagonal_representative (n : ) [NeZero n] (α : (GLPair n).Δ) :
              ∃ (a : Fin n) (_ : ∀ (i : Fin n), 0 < a i) (_ : DivChain n a), α = TDiag a

              Every element of Delta has a diagonal representative with divisibility chain (Smith normal form).

              theorem HeckeRing.GLn.diagonal_representative_unique (n : ) [NeZero n] (a b : Fin n) (ha : ∀ (i : Fin n), 0 < a i) (hb : ∀ (i : Fin n), 0 < b i) (hda : DivChain n a) (hdb : DivChain n b) (heq : TDiag a = TDiag b) :
              a = b

              The elementary divisors are uniquely determined by the double coset.

              theorem HeckeRing.GLn.T_diag_span (n : ) [NeZero n] (f : HeckeAlgebra n) :
              ∃ (S : Finset { p : Fin n // (∀ (i : Fin n), 0 < p i) DivChain n p }) (c : S), f = sS.attach, c s TElem s

              The Hecke algebra is spanned by diagonal double coset elements T(a₁,...,aₙ).