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🔗

Definition7.1
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.2
Blueprint label
  • «AutomorphicForm.GLn.IsSlowlyIncreasing»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
XL∃∀Nused by 1

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.

Definition7.2
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.1
Blueprint label
  • «AutomorphicForm.GLn.IsSmooth»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
L∃∀Nused by 1

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).

Code for Definition7.21 definition
  • structure AutomorphicForm.GLn.IsSlowlyIncreasing {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.IsSlowlyIncreasing
      {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`. 

    Constructor

    AutomorphicForm.GLn.IsSlowlyIncreasing.mk
      {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`. }
      (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`.
    
     * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`).
              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) ℝ) : ℝ 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) :
      AutomorphicForm.GLn.IsSlowlyIncreasingAutomorphicForm.GLn.IsSlowlyIncreasing {n : ℕ} (f : GL (Fin n) ℝ → ℂ) : Prop
        fGL (Fin n) ℝ → ℂ

    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`.
    
     * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`). 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) ℝ) : ℝ 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
    complete

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🔗

Definition7.3
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.1
Blueprint label
  • «AutomorphicForm.GLn.IsSmooth»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
L∃∀Nused by 1

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).

Code for Definition7.31 definition
  • structure AutomorphicForm.GLn.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.
    ) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure AutomorphicForm.GLn.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.
    ) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 

    Constructor

    AutomorphicForm.GLn.Weight.mk {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.
    }
      (wAutomorphicForm.GLn.preweight n : AutomorphicForm.GLn.preweightAutomorphicForm.GLn.preweight (n : ℕ) : Type n)
      (isSimpleCategoryTheory.Simple (AutomorphicForm.GLn.preweight.fdRep n 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) ℝ)
            n wAutomorphicForm.GLn.preweight n)) :
      AutomorphicForm.GLn.WeightAutomorphicForm.GLn.Weight (n : ℕ) : Type n

    Fields

    wAutomorphicForm.GLn.preweight n : AutomorphicForm.GLn.preweightAutomorphicForm.GLn.preweight (n : ℕ) : Type 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) ℝ) n selfAutomorphicForm.GLn.Weight n.wAutomorphicForm.GLn.Weight.w {n : ℕ} (self : AutomorphicForm.GLn.Weight n) : AutomorphicForm.GLn.preweight n)
    complete

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🔗

Definition7.4
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.1
Blueprint label
  • «AutomorphicForm.GLn.IsSmooth»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
XL∃∀Nused by 1

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).

Definition7.5
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.1
Blueprint label
  • «AutomorphicForm.GLn.IsSmooth»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
XL∃∀Nused by 1

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.

Definition7.6
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.1
Blueprint label
  • «AutomorphicForm.GLn.IsSmooth»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
XL∃∀Nused by 1

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.

Definition7.7
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.1
Blueprint label
  • «AutomorphicForm.GLn.IsSmooth»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
XL∃∀Nused by 1

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.

Definition7.8
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.1
Blueprint label
  • «AutomorphicForm.GLn.IsSmooth»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
L∃∀Nused by 0

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.

Code for Definition7.81 definition
  • structure AutomorphicForm.GLn.AutomorphicFormForGLnOverQ (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 : ℕ) : Type n) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure AutomorphicForm.GLn.AutomorphicFormForGLnOverQ
      (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 : ℕ) : Type n) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    Automorphic forms for GL_n/Q with weight ρ. 

    Constructor

    AutomorphicForm.GLn.AutomorphicFormForGLnOverQ.mk
      {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 : ℕ) : Type n}
      (toFunGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (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)
              (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`. )
      (is_smoothAutomorphicForm.GLn.IsSmooth toFun :
        AutomorphicForm.GLn.IsSmoothAutomorphicForm.GLn.IsSmooth {n : ℕ} (f : GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂ) : Prop toFunGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂ)
      (is_periodic∀ (g : GL (Fin n) ℚ) (x : GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)) (y : GL (Fin n) ℝ),
      toFun
          (((algebraMap ℚ (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)).GL (Fin n)) g * x, ((algebraMap ℚ ℝ).GL (Fin n)) g * y) =
        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. ),
          toFunGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (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`.((algebraMapalgebraMap.{u, v} (R : Type u) (A : Type v) [CommSemiring R] [Semiring A] [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 B
                      (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`.
                ((algebraMapalgebraMap.{u, v} (R : Type u) (A : Type v) [CommSemiring R] [Semiring A] [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 B
                      (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`.
            toFunGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (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`.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 ↦ 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) ℝ → ℂ) : Prop
            fun yGL (Fin n) ℝ  toFunGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (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`.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 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) ℝ → ℂ) : Prop USubgroup (GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ))
            toFunGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂ)
      (is_finite_cod∀ (x : GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)),
      FiniteDimensional ℂ
        (↥(AutomorphicForm.GLn.Z (GL (Fin n) ℝ) (Matrix (Fin n) (Fin n) ℝ)) ⧸
          Submodule.comap (AutomorphicForm.GLn.actionTensorCAlg'3 (GL (Fin n) ℝ) (Matrix (Fin n) (Fin n) ℝ)).toLinearMap
            (AutomorphicForm.GLn.annihilator ⟨fun y ↦ 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.
    )),
          FiniteDimensionalFiniteDimensional.{u_1, u_2} (K : Type u_1) (V : Type u_2) [DivisionRing K] [AddCommGroup V] [Module K V] : Prop`FiniteDimensional` vector spaces are defined to be finite modules.
    Use `Module.Basis.finiteDimensional_of_finite` to prove finite dimension from another definition.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. 
            (HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    (AutomorphicForm.GLn.ZAutomorphicForm.GLn.Z (G : Type) [TopologicalSpace G] [Group G] (E : Type) [NormedAddCommGroup E] [NormedSpace ℝ E]
      [ChartedSpace E G] [LieGroup (modelWithCornersSelf ℝ E) ⊤ G] : Subalgebra ℂ (AutomorphicForm.GLn.Alg G E)
                  (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. )
                  (MatrixMatrix.{u, u', v} (m : Type u) (n : Type u') (α : Type v) : Type (max u u' v)`Matrix m n R` is the type of matrices with entries in `R`, whose rows are indexed by `m`
    and whose columns are indexed by `n`.  (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) (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. )) HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    
              Submodule.comapSubmodule.comap.{u_1, u_3, u_5, u_7} {R : Type u_1} {R₂ : Type u_3} {M : Type u_5} {M₂ : Type u_7} [Semiring R]
      [Semiring R₂] [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module R₂ M₂] {σ₁₂ : R →+* R₂} (f : M →ₛₗ[σ₁₂] M₂)
      (p : Submodule R₂ M₂) : Submodule R MThe pullback of a submodule `p ⊆ M₂` along `f : M → M₂` 
                (AutomorphicForm.GLn.actionTensorCAlg'3AutomorphicForm.GLn.actionTensorCAlg'3 (G : Type) [TopologicalSpace G] [Group G] (E : Type) [NormedAddCommGroup E]
      [NormedSpace ℝ E] [ChartedSpace E G] [LieGroup (modelWithCornersSelf ℝ E) ⊤ G] :
      ↥(AutomorphicForm.GLn.Z G E) →ₐ[ℂ]
        Module.End ℂ (ContMDiffMap (modelWithCornersSelf ℝ E) (modelWithCornersSelf ℝ ℂ) G ℂ ↑⊤)
                    (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. )
                    (MatrixMatrix.{u, u', v} (m : Type u) (n : Type u') (α : Type v) : Type (max u u' v)`Matrix m n R` is the type of matrices with entries in `R`, whose rows are indexed by `m`
    and whose columns are indexed by `n`.  (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) (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. )).toLinearMapAlgHom.toLinearMap.{u, v, w} {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B]
      [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) : A →ₗ[R] BR-Alg ⥤ R-Mod 
                (AutomorphicForm.GLn.annihilatorAutomorphicForm.GLn.annihilator.{u_1, u_2, u_3} {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M]
      [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] (a : M) : Submodule R (M →ₗ[R] N)
                  Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype pfun yGL (Fin n) ℝ  toFunGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (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`.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`.,Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p
                    Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p))HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    ) :
      AutomorphicForm.GLn.AutomorphicFormForGLnOverQAutomorphicForm.GLn.AutomorphicFormForGLnOverQ (n : ℕ) (ρ : AutomorphicForm.GLn.Weight n) : TypeAutomorphic forms for GL_n/Q with weight ρ. 
        n ρAutomorphicForm.GLn.Weight n

    Fields

    toFunGL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (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) (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`. 
    is_smoothAutomorphicForm.GLn.IsSmooth self.toFun : AutomorphicForm.GLn.IsSmoothAutomorphicForm.GLn.IsSmooth {n : ℕ} (f : GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂ) : Prop 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) ℝ → ℂ
    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) ℝ → ℂ
          (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`.((algebraMapalgebraMap.{u, v} (R : Type u) (A : Type v) [CommSemiring R] [Semiring A] [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 B (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`. ((algebraMapalgebraMap.{u, v} (R : Type u) (A : Type v) [CommSemiring R] [Semiring A] [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 B (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) ℝ → ℂ (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) ℝ → ℂ) : Prop 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) ℝ → ℂ (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) ℝ → ℂ) : Prop 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) ℝ → ℂ
    is_finite_cod∀ (x : GL (Fin n) (IsDedekindDomain.FiniteAdeleRing ℤ ℚ)),
      FiniteDimensional ℂ
        (↥(AutomorphicForm.GLn.Z (GL (Fin n) ℝ) (Matrix (Fin n) (Fin n) ℝ)) ⧸
          Submodule.comap (AutomorphicForm.GLn.actionTensorCAlg'3 (GL (Fin n) ℝ) (Matrix (Fin n) (Fin n) ℝ)).toLinearMap
            (AutomorphicForm.GLn.annihilator ⟨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.
    )),
      FiniteDimensionalFiniteDimensional.{u_1, u_2} (K : Type u_1) (V : Type u_2) [DivisionRing K] [AddCommGroup V] [Module K V] : Prop`FiniteDimensional` vector spaces are defined to be finite modules.
    Use `Module.Basis.finiteDimensional_of_finite` to prove finite dimension from another definition.  Complex : TypeComplex numbers consist of two `Real`s: a real part `re` and an imaginary part `im`. 
        (HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    (AutomorphicForm.GLn.ZAutomorphicForm.GLn.Z (G : Type) [TopologicalSpace G] [Group G] (E : Type) [NormedAddCommGroup E] [NormedSpace ℝ E]
      [ChartedSpace E G] [LieGroup (modelWithCornersSelf ℝ E) ⊤ G] : Subalgebra ℂ (AutomorphicForm.GLn.Alg G E) (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. ) (MatrixMatrix.{u, u', v} (m : Type u) (n : Type u') (α : Type v) : Type (max u u' v)`Matrix m n R` is the type of matrices with entries in `R`, whose rows are indexed by `m`
    and whose columns are indexed by `n`.  (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) (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. )) HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    
          Submodule.comapSubmodule.comap.{u_1, u_3, u_5, u_7} {R : Type u_1} {R₂ : Type u_3} {M : Type u_5} {M₂ : Type u_7} [Semiring R]
      [Semiring R₂] [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module R₂ M₂] {σ₁₂ : R →+* R₂} (f : M →ₛₗ[σ₁₂] M₂)
      (p : Submodule R₂ M₂) : Submodule R MThe pullback of a submodule `p ⊆ M₂` along `f : M → M₂`  (AutomorphicForm.GLn.actionTensorCAlg'3AutomorphicForm.GLn.actionTensorCAlg'3 (G : Type) [TopologicalSpace G] [Group G] (E : Type) [NormedAddCommGroup E]
      [NormedSpace ℝ E] [ChartedSpace E G] [LieGroup (modelWithCornersSelf ℝ E) ⊤ G] :
      ↥(AutomorphicForm.GLn.Z G E) →ₐ[ℂ]
        Module.End ℂ (ContMDiffMap (modelWithCornersSelf ℝ E) (modelWithCornersSelf ℝ ℂ) G ℂ ↑⊤) (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. ) (MatrixMatrix.{u, u', v} (m : Type u) (n : Type u') (α : Type v) : Type (max u u' v)`Matrix m n R` is the type of matrices with entries in `R`, whose rows are indexed by `m`
    and whose columns are indexed by `n`.  (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) (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. )).toLinearMapAlgHom.toLinearMap.{u, v, w} {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B]
      [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) : A →ₗ[R] BR-Alg ⥤ R-Mod 
            (AutomorphicForm.GLn.annihilatorAutomorphicForm.GLn.annihilator.{u_1, u_2, u_3} {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M]
      [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] (a : M) : Submodule R (M →ₗ[R] N) Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype pfun 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) ℝ → ℂ (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`.,Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p))HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    
    complete

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🔗

Lemma7.9
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.1
Blueprint label
  • «AutomorphicForm.GLn.IsSmooth»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
XL∃∀Nused by 0

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.

Lemma7.10
Group: This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q . (9)
Hover another entry in this group to preview it.
Preview
Definition 7.1
Blueprint label
  • «AutomorphicForm.GLn.IsSmooth»
Group
  • This chapter came from discussions between Patrick, Mario and myself, all currently visiting the Hausdorff Research Institute for Mathematics in Bonn. The ultimate goal is to formally state some version of the global Langlands reciprocity conjectures for GL_n over Q .
XL∃∀Nused by 0

This function is well-defined, in the sense that it sends a U-invariant form to a U-invariant form and is independent of the choice of the representatives g_i.

Proof

Easy group theory.