Fermat's Last Theorem Blueprint

7. Automorphic forms and the Langlands Conjectures🔗

7.1. Definition of an automorphic form for GLn over Q🔗

The global Langlands reciprocity conjectures relate automorphic forms to Galois representations. The statements for a general connected reductive group involve the construction of the Langlands dual group, and we do not have quite enough Lie algebra theory to push this definition through in general. However if we restrict the special case of the group \GL_n/\Q, the dual group is just \GL_n(\bbC) and several other technical obstructions are also removed. In this section we will explain the definition of an automorphic form for the group \GL_n/\Q, following the exposition by Borel and Jacquet in Corvallis (volume, 1979).

7.2. The Finite Adeles Of The Rationals🔗

Mathlib already has the definition of the finite adeles \A_{\Q}^f of the rationals as a commutative \Q-algebra, and the proof that it's a topological ring.

7.3. The Group GLn Of The Adeles🔗

The adeles \A_{\Q} of \Q are the product \A_{\Q}^f \times \R, with the product topology. They are a topological ring. Hence \GL_n(\A_{\Q}) = \GL_n(\A_{\Q}^f) \times \GL_n(\R) is a topological group, where we are being a bit liberal with our use of the equality symbol.

7.4. Smooth Functions🔗

A function f : \GL_n(\A_{\Q}^f) \times \GL_n(\R) \to \bbC is smooth if it has the following three properties:

  1. f is continuous.

  2. For all x \in \GL_n(\A_{\Q}^f), the function y \mapsto f(x,y) is smooth.

  3. For all y \in \GL_n(\R), the function x \mapsto f(x,y) is locally constant.

Current state of this definition: I've half-formalised it; I don't know how to say the the function is smooth on the infinite part, because I have never used the manifold library before and I have no idea what my model with corners is supposed to be.

7.5. Slowly-Increasing Functions🔗

Automorphic representations satisfy a growth condition which we may as well factor out into a separate definition.

We define the following temporary "size" function s : \GL_n(\R) \to \R by s(M) = \operatorname{trace}(MM^T + M^{-1}M^{-T}), where M^{-T} denotes inverse-transpose. Note that s(M) is always positive, and is large if M has a very large or very small, in absolute value, eigenvalue.

We say that a function f : \GL_n(\R) \to \bbC is slowly-increasing if there is some real constant C and positive integer n such that |f(M)| \leq C s(M)^n for all M \in \GL_n(\R).

Lean code for Definition7.21 definition
  • structure(1 field)defined in FLT/GlobalLanglandsConjectures/GLnDefs.lean
    complete
    structure AutomorphicForm.GLn.IsSlowlyIncreasingAutomorphicForm.GLn.IsSlowlyIncreasing {n : ℕ} (f : GL (Fin n) ℝ → ℂ) : PropA function `f : GL_n(ℝ) → ℂ` is slowly increasing if there exist `C, N` such
    that `‖f M‖ ≤ C · s(M)^N` for all `M`, where `s` is an auxiliary "size" function.  {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } (fGL (Fin n) ℝ → ℂ : GLMatrix.GeneralLinearGroup.{u, v} (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] : Type (max v u)`GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
    Defined as a subtype of matrices  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n) Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers.   Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    structure AutomorphicForm.GLn.IsSlowlyIncreasingAutomorphicForm.GLn.IsSlowlyIncreasing {n : ℕ} (f : GL (Fin n) ℝ → ℂ) : PropA function `f : GL_n(ℝ) → ℂ` is slowly increasing if there exist `C, N` such
    that `‖f M‖ ≤ C · s(M)^N` for all `M`, where `s` is an auxiliary "size" function. 
      {n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } (fGL (Fin n) ℝ → ℂ : GLMatrix.GeneralLinearGroup.{u, v} (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] : Type (max v u)`GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
    Defined as a subtype of matrices  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n) Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers.   Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. ) : PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    A function `f : GL_n(ℝ) → ℂ` is slowly increasing if there exist `C, N` such
    that `‖f M‖ ≤ C · s(M)^N` for all `M`, where `s` is an auxiliary "size" function. 

    Fields

    bounded_by∃ C N, ∀ (M : GL (Fin n) ℝ), ‖f M‖ ≤ C * AutomorphicForm.GLn.s ↑M ^ N :  C N,  (MGL (Fin n) ℝ : GLMatrix.GeneralLinearGroup.{u, v} (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] : Type (max v u)`GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
    Defined as a subtype of matrices  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n) Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. ), Norm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function. fGL (Fin n) ℝ → ℂ MGL (Fin n) ℝNorm.norm.{u_8} {E : Type u_8} [self : Norm E] : E → ℝthe `ℝ`-valued norm function.  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. C *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. AutomorphicForm.GLn.sAutomorphicForm.GLn.s {n : ℕ} (M : Matrix (Fin n) (Fin n) ℝ) : ℝAn auxiliary "size" function on invertible real matrices used in the slowly
    increasing condition; namely `tr(MMᵀ) + tr(M⁻¹(M⁻¹)ᵀ)`.  MGL (Fin n) ℝ ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. N

Note: the book says n is positive, but \{M|s(M)\leq 1\} is compact so I don't think it makes any difference.

7.6. Weights At Infinity🔗

The weight of an automorphic form for \GL_n/\Q can be thought of as a finite-dimensional continuous complex representation \rho of a maximal compact subgroup of \GL_n(\R), and it's convenient to choose one (they're all conjugate) so we choose O_n(\R).

Lean code for Definition7.31 definition
  • structure(2 fields)defined in FLT/GlobalLanglandsConjectures/GLnDefs.lean
    complete
    structure AutomorphicForm.GLn.WeightAutomorphicForm.GLn.Weight (n : ℕ) : TypeA weight for `GLₙ`: a preweight whose associated `O(n)`-representation is simple.  (n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure AutomorphicForm.GLn.WeightAutomorphicForm.GLn.Weight (n : ℕ) : TypeA weight for `GLₙ`: a preweight whose associated `O(n)`-representation is simple.  (n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    A weight for `GLₙ`: a preweight whose associated `O(n)`-representation is simple. 

    Fields

    wAutomorphicForm.GLn.preweight nThe underlying preweight, i.e. continuous representation of `O(n)`.  : AutomorphicForm.GLn.preweightAutomorphicForm.GLn.preweight (n : ℕ) : TypeA preweight for `GLₙ` is a continuous representation of the real orthogonal
    group `O(n)` on a finite-dimensional complex vector space.  n
    The underlying preweight, i.e. continuous representation of `O(n)`. 
    isSimpleCategoryTheory.Simple (AutomorphicForm.GLn.preweight.fdRep n self.w) : CategoryTheory.SimpleCategoryTheory.Simple.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C]
      (X : C) : PropAn object is simple if monomorphisms into it are (exclusively) either isomorphisms or zero.  (AutomorphicForm.GLn.preweight.fdRepAutomorphicForm.GLn.preweight.fdRep (n : ℕ) (w : AutomorphicForm.GLn.preweight n) :
      FDRep ℂ ↥(Matrix.orthogonalGroup (Fin n) ℝ)The finite-dimensional `ℂ`-representation of `O(n)` associated to a preweight `w`.  n selfAutomorphicForm.GLn.Weight n.wAutomorphicForm.GLn.Weight.w {n : ℕ} (self : AutomorphicForm.GLn.Weight n) : AutomorphicForm.GLn.preweight nThe underlying preweight, i.e. continuous representation of `O(n)`. )

The Lean definition is incomplete right now -- I don't demand irreducibility (I wasn't sure whether I was doing this the right way; if I used category theory then I might have struggled to say that the representation was continuous).

7.7. The Action Of The Universal Enveloping Algebra🔗

There is a natural action of the real Lie algebra of \GL_n(\R) on the complex vector space of smooth complex-valued functions on \GL_n(\R).

This extends to a natural complex Lie algebra action of the complexification of the real Lie algebra on the smooth complex-valued functions on \GL_n(\R). This depends on Definition 7.4.

By functoriality, we get an action of the universal enveloping algebra of this complexified Lie algebra on the smooth complex-valued functions. This depends on Definition 7.5.

Thus the centre Z_n of this universal enveloping algebra also acts on the smooth complex-valued functions. This depends on Definition 7.6.

The centre we just defined is a commutative ring which contains a copy of \bbC. Note that Harish-Chandra, or possibly this was known earlier, showed that it is a polynomial ring in n variables over the complexes. We shall not need this.

7.8. Automorphic Forms🔗

From here on there is no more Lean right now, only LaTeX.

A smooth function f : \GL_n(\A_{\Q}^f) \times \GL_n(\R) \to \bbC is an O_n(\R)-automorphic form on \GL_n(\A_{\Q}) if it satisfies the following five conditions. This depends on Definition 7.1, Definition 7.2, Definition 7.3, and Definition 7.7.

  1. Periodicity: for all g \in \GL_n(\Q), we have f(gx,gy) = f(x,y).

  2. It has a finite level: there exists a compact open subgroup U \subseteq \GL_n(\A_{\Q}^f) such that f(xu,y) = f(x,y) for all u \in U, x \in \GL_n(\A_{\Q}^f), and y \in \GL_n(\R).

  3. It has weight \rho: there exists a continuous finite-dimensional irreducible complex representation \rho of O_n(\R) such that for every (x,y) \in \GL_n(\A_{\Q}), the complex vector space spanned by the functions k \mapsto f(x,yk) is finite-dimensional and isomorphic, as an O_n(\R)-representation, to a direct sum \rho^{\oplus m} of copies of \rho for some m.

  4. It has an infinite level: there is an ideal I \subseteq Z_n of the centre Z_n described in the previous section, with finite complex codimension, and I annihilates the function y \mapsto f(x,y) for all x \in \GL_n(\A_{\Q}^f). This is a very fancy way of saying that the function satisfies some natural differential equations. In the case of modular forms, these are the Cauchy-Riemann equations, which is why modular forms are holomorphic.

  5. It satisfies the growth condition: for every x \in \GL_n(\A_{\Q}^f), the function y \mapsto f(x,y) on \GL_n(\R) is slowly-increasing.

Lean code for Definition7.81 definition
  • structure(5 fields)defined in FLT/GlobalLanglandsConjectures/GLnDefs.lean
    complete
    structure AutomorphicForm.GLn.AutomorphicFormForGLnOverQAutomorphicForm.GLn.AutomorphicFormForGLnOverQ (n : ℕ) (ρ : AutomorphicForm.GLn.Weight n) : TypeAutomorphic forms for GL_n/Q with weight ρ.  (n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    )
      (ρAutomorphicForm.GLn.Weight n : AutomorphicForm.GLn.WeightAutomorphicForm.GLn.Weight (n : ℕ) : TypeA weight for `GLₙ`: a preweight whose associated `O(n)`-representation is simple.  n) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure AutomorphicForm.GLn.AutomorphicFormForGLnOverQAutomorphicForm.GLn.AutomorphicFormForGLnOverQ (n : ℕ) (ρ : AutomorphicForm.GLn.Weight n) : TypeAutomorphic forms for GL_n/Q with weight ρ. 
      (n : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    )
      (ρAutomorphicForm.GLn.Weight n : AutomorphicForm.GLn.WeightAutomorphicForm.GLn.Weight (n : ℕ) : TypeA weight for `GLₙ`: a preweight whose associated `O(n)`-representation is simple.  n) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    Automorphic forms for GL_n/Q with weight ρ. 

    Fields

    toFunGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂThe underlying function `GL_n(𝔸_f) × GL_n(ℝ) → ℂ`.  : GLMatrix.GeneralLinearGroup.{u, v} (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] : Type (max v u)`GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
    Defined as a subtype of matrices  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n) (IsDedekindDomain.FiniteAdeleRingIsDedekindDomain.FiniteAdeleRing.{u_1, u_2} (R : Type u_1) [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K]
      [Algebra R K] [IsFractionRing R K] : Type (max u_2 u_1)If `K` is the field of fractions of the Dedekind domain `R` then `FiniteAdeleRing R K` is
    the ring of finite adeles of `K`, defined as the restricted product of the completions
    `K_v` with respect to the subrings `R_v`. Here `v` runs through the nonzero primes of `R`
    and the restricted product is the subring of `∏_v K_v` consisting of elements which
    are in `R_v` for all but finitely many `v`.
     Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
     Rat : TypeRational numbers, implemented as a pair of integers `num / den` such that the
    denominator is positive and the numerator and denominator are coprime.
    ) ×Prod.{u, v} (α : Type u) (β : Type v) : Type (max u v)The product type, usually written `α × β`. Product types are also called pair or tuple types.
    Elements of this type are pairs in which the first element is an `α` and the second element is a
    `β`.
    
    Products nest to the right, so `(x, y, z) : α × β × γ` is equivalent to `(x, (y, z)) : α × (β × γ)`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `×` in identifiers is `Prod`. GLMatrix.GeneralLinearGroup.{u, v} (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] : Type (max v u)`GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
    Defined as a subtype of matrices  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n) Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers.   Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. 
    The underlying function `GL_n(𝔸_f) × GL_n(ℝ) → ℂ`. 
    is_smoothAutomorphicForm.GLn.IsSmooth self.toFun : AutomorphicForm.GLn.IsSmoothAutomorphicForm.GLn.IsSmooth {n : ℕ} (f : GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂ) : PropA function on `GL_n(𝔸_f) × GL_n(ℝ)` is smooth if it is continuous, locally constant
    in the finite-adelic variable, and `C^∞` in the archimedean variable.  selfAutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ.toFunAutomorphicForm.GLn.AutomorphicFormForGLnOverQ.toFun {n : ℕ} {ρ : AutomorphicForm.GLn.Weight n}
      (self : AutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ) :
      GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂThe underlying function `GL_n(𝔸_f) × GL_n(ℝ) → ℂ`. 
    is_periodic∀ (g : GL (Fin n) ℚ) (x : GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)) (y : GL (Fin n) ℝ),
      self.toFun
          (((algebraMap ℚ (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)).GL (Fin n)) g * x, ((algebraMap ℚ ℝ).GL (Fin n)) g * y) =
        self.toFun (x, y) :  (gGL (Fin n) ℚ : GLMatrix.GeneralLinearGroup.{u, v} (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] : Type (max v u)`GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
    Defined as a subtype of matrices  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n) Rat : TypeRational numbers, implemented as a pair of integers `num / den` such that the
    denominator is positive and the numerator and denominator are coprime.
    ) (xGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) : GLMatrix.GeneralLinearGroup.{u, v} (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] : Type (max v u)`GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
    Defined as a subtype of matrices  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n) (IsDedekindDomain.FiniteAdeleRingIsDedekindDomain.FiniteAdeleRing.{u_1, u_2} (R : Type u_1) [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K]
      [Algebra R K] [IsFractionRing R K] : Type (max u_2 u_1)If `K` is the field of fractions of the Dedekind domain `R` then `FiniteAdeleRing R K` is
    the ring of finite adeles of `K`, defined as the restricted product of the completions
    `K_v` with respect to the subrings `R_v`. Here `v` runs through the nonzero primes of `R`
    and the restricted product is the subring of `∏_v K_v` consisting of elements which
    are in `R_v` for all but finitely many `v`.
     Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
     Rat : TypeRational numbers, implemented as a pair of integers `num / den` such that the
    denominator is positive and the numerator and denominator are coprime.
    )) (yGL (Fin n) ℝ : GLMatrix.GeneralLinearGroup.{u, v} (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] : Type (max v u)`GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
    Defined as a subtype of matrices  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n) Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. ),
      selfAutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ.toFunAutomorphicForm.GLn.AutomorphicFormForGLnOverQ.toFun {n : ℕ} {ρ : AutomorphicForm.GLn.Weight n}
      (self : AutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ) :
      GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂThe underlying function `GL_n(𝔸_f) × GL_n(ℝ) → ℂ`. 
          (Prod.mk.{u, v} {α : Type u} {β : Type v} (fst : α) (snd : β) : α × βConstructs a pair. This is usually written `(x, y)` instead of `Prod.mk x y`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `(a, b)` in identifiers is `mk`.((algebraMapAlgebra.algebraMap.{u, v} (R : Type u) (A : Type v) {inst✝ : CommSemiring R} {inst✝¹ : Semiring A}
      [self : Algebra R A] : R →+* AEmbedding `R →+* A` given by `Algebra` structure.  Rat : TypeRational numbers, implemented as a pair of integers `num / den` such that the
    denominator is positive and the numerator and denominator are coprime.
     (IsDedekindDomain.FiniteAdeleRingIsDedekindDomain.FiniteAdeleRing.{u_1, u_2} (R : Type u_1) [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K]
      [Algebra R K] [IsFractionRing R K] : Type (max u_2 u_1)If `K` is the field of fractions of the Dedekind domain `R` then `FiniteAdeleRing R K` is
    the ring of finite adeles of `K`, defined as the restricted product of the completions
    `K_v` with respect to the subrings `R_v`. Here `v` runs through the nonzero primes of `R`
    and the restricted product is the subring of `∏_v K_v` consisting of elements which
    are in `R_v` for all but finitely many `v`.
     Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
     Rat : TypeRational numbers, implemented as a pair of integers `num / den` such that the
    denominator is positive and the numerator and denominator are coprime.
    )).GLRingHom.GL.{u_1, u_2, u_3} {A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] (φ : A →+* B) (m : Type u_3)
      [Fintype m] [DecidableEq m] : GL m A →* GL m BFunctoriality of `GLₘ`: a ring homomorphism `A →+* B` induces a group homomorphism
    `GLₘ(A) →* GLₘ(B)` by applying it entrywise.  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n)) gGL (Fin n) ℚ *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. xGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ),Prod.mk.{u, v} {α : Type u} {β : Type v} (fst : α) (snd : β) : α × βConstructs a pair. This is usually written `(x, y)` instead of `Prod.mk x y`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `(a, b)` in identifiers is `mk`. ((algebraMapAlgebra.algebraMap.{u, v} (R : Type u) (A : Type v) {inst✝ : CommSemiring R} {inst✝¹ : Semiring A}
      [self : Algebra R A] : R →+* AEmbedding `R →+* A` given by `Algebra` structure.  Rat : TypeRational numbers, implemented as a pair of integers `num / den` such that the
    denominator is positive and the numerator and denominator are coprime.
     Real : TypeThe type `ℝ` of real numbers constructed as equivalence classes of Cauchy sequences of rational
    numbers. ).GLRingHom.GL.{u_1, u_2, u_3} {A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] (φ : A →+* B) (m : Type u_3)
      [Fintype m] [DecidableEq m] : GL m A →* GL m BFunctoriality of `GLₘ`: a ring homomorphism `A →+* B` induces a group homomorphism
    `GLₘ(A) →* GLₘ(B)` by applying it entrywise.  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n)) gGL (Fin n) ℚ *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. yGL (Fin n) ℝ)Prod.mk.{u, v} {α : Type u} {β : Type v} (fst : α) (snd : β) : α × βConstructs a pair. This is usually written `(x, y)` instead of `Prod.mk x y`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `(a, b)` in identifiers is `mk`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        selfAutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ.toFunAutomorphicForm.GLn.AutomorphicFormForGLnOverQ.toFun {n : ℕ} {ρ : AutomorphicForm.GLn.Weight n}
      (self : AutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ) :
      GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂThe underlying function `GL_n(𝔸_f) × GL_n(ℝ) → ℂ`.  (Prod.mk.{u, v} {α : Type u} {β : Type v} (fst : α) (snd : β) : α × βConstructs a pair. This is usually written `(x, y)` instead of `Prod.mk x y`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `(a, b)` in identifiers is `mk`.xGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ),Prod.mk.{u, v} {α : Type u} {β : Type v} (fst : α) (snd : β) : α × βConstructs a pair. This is usually written `(x, y)` instead of `Prod.mk x y`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `(a, b)` in identifiers is `mk`. yGL (Fin n) ℝ)Prod.mk.{u, v} {α : Type u} {β : Type v} (fst : α) (snd : β) : α × βConstructs a pair. This is usually written `(x, y)` instead of `Prod.mk x y`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `(a, b)` in identifiers is `mk`.
    is_slowly_increasing∀ (x : GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)),
      AutomorphicForm.GLn.IsSlowlyIncreasing fun y ↦ self.toFun (x, y) :  (xGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) : GLMatrix.GeneralLinearGroup.{u, v} (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] : Type (max v u)`GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
    Defined as a subtype of matrices  (FinFin (n : ℕ) : TypeNatural numbers less than some upper bound.
    
    In particular, a `Fin n` is a natural number `i` with the constraint that `i < n`. It is the
    canonical type with `n` elements.
     n) (IsDedekindDomain.FiniteAdeleRingIsDedekindDomain.FiniteAdeleRing.{u_1, u_2} (R : Type u_1) [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K]
      [Algebra R K] [IsFractionRing R K] : Type (max u_2 u_1)If `K` is the field of fractions of the Dedekind domain `R` then `FiniteAdeleRing R K` is
    the ring of finite adeles of `K`, defined as the restricted product of the completions
    `K_v` with respect to the subrings `R_v`. Here `v` runs through the nonzero primes of `R`
    and the restricted product is the subring of `∏_v K_v` consisting of elements which
    are in `R_v` for all but finitely many `v`.
     Int : TypeThe integers.
    
    This type is special-cased by the compiler and overridden with an efficient implementation. The
    runtime has a special representation for `Int` that stores “small” signed numbers directly, while
    larger numbers use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)). A “small number” is an integer that can be encoded with one fewer bits
    than the platform's pointer size (i.e. 63 bits on 64-bit architectures and 31 bits on 32-bit
    architectures).
     Rat : TypeRational numbers, implemented as a pair of integers `num / den` such that the
    denominator is positive and the numerator and denominator are coprime.
    )),
      AutomorphicForm.GLn.IsSlowlyIncreasingAutomorphicForm.GLn.IsSlowlyIncreasing {n : ℕ} (f : GL (Fin n) ℝ → ℂ) : PropA function `f : GL_n(ℝ) → ℂ` is slowly increasing if there exist `C, N` such
    that `‖f M‖ ≤ C · s(M)^N` for all `M`, where `s` is an auxiliary "size" function.  fun yGL (Fin n) ℝ  selfAutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ.toFunAutomorphicForm.GLn.AutomorphicFormForGLnOverQ.toFun {n : ℕ} {ρ : AutomorphicForm.GLn.Weight n}
      (self : AutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ) :
      GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂThe underlying function `GL_n(𝔸_f) × GL_n(ℝ) → ℂ`.  (Prod.mk.{u, v} {α : Type u} {β : Type v} (fst : α) (snd : β) : α × βConstructs a pair. This is usually written `(x, y)` instead of `Prod.mk x y`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `(a, b)` in identifiers is `mk`.xGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ),Prod.mk.{u, v} {α : Type u} {β : Type v} (fst : α) (snd : β) : α × βConstructs a pair. This is usually written `(x, y)` instead of `Prod.mk x y`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `(a, b)` in identifiers is `mk`. yGL (Fin n) ℝ)Prod.mk.{u, v} {α : Type u} {β : Type v} (fst : α) (snd : β) : α × βConstructs a pair. This is usually written `(x, y)` instead of `Prod.mk x y`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `(a, b)` in identifiers is `mk`.
    has_finite_level∃ U, AutomorphicForm.GLn.IsConstantOn U self.toFun :  USubgroup (GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)), AutomorphicForm.GLn.IsConstantOnAutomorphicForm.GLn.IsConstantOn {n : ℕ} (U : Subgroup (GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)))
      (f : GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂ) : PropThe function `f : GL_n(𝔸_f) × GL_n(ℝ) → ℂ` is right-`U`-invariant in the
    finite-adelic variable, where `U` is an open compact subgroup.  USubgroup (GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)) selfAutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ.toFunAutomorphicForm.GLn.AutomorphicFormForGLnOverQ.toFun {n : ℕ} {ρ : AutomorphicForm.GLn.Weight n}
      (self : AutomorphicForm.GLn.AutomorphicFormForGLnOverQ n ρ) :
      GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂThe underlying function `GL_n(𝔸_f) × GL_n(ℝ) → ℂ`. 

Automorphic forms of a fixed weight \rho form a complex vector space, and if we also fix the finite level U and the infinite level I then we get a subspace which is finite-dimensional; this is a theorem of Harish-Chandra. There is also the concept of a cusp form, meaning an automorphic form for which furthermore some adelic integrals vanish.

7.9. Hecke Operators🔗

The group \GL_n(\A_{\Q}^f) acts on the space of automorphic forms for \GL_n(\A_{\Q}) by the formula (g \cdot f)(x,y) = f(xg,y).

Proof

This is obvious. Note that the conjugate of a compact open subgroup is still compact and open.

A formal development of the theory of Hecke operators looks like the following.

Let U be a fixed compact open subgroup of \GL_n(\A_{\Q}^f), and let us also fix a weight \rho. Let M_\rho(n) denote the complex vector space of automorphic forms for \GL_n/\Q of weight \rho. The level U forms M_\rho(n,U) are just the U-invariants of this space. If g \in \GL_n(\A_{\Q}^f), then the double coset space UgU can be written as a finite disjoint union of single cosets g_iU: the double coset space is certainly a disjoint union of left cosets, but the double coset space is compact and the left cosets are open.

Define the Hecke operator T_g : M_\rho(n,U) \to M_\rho(n,U) by T_g(f) = \sum g_i \cdot f.

This function is well-defined, i.e. it sends a U-invariant form to a U-invariant form which is independent of the choice of g_i.

Proof

Easy group theory.