13. Miniproject: Hecke Operators
13.1. Status
This is an active miniproject. The abstract theory is completely formalized; at the time of writing the concrete theory has no sorried definitions but it does have some sorried proofs.
13.2. Goal
The goal of this project is to get sorry-free definitions of Hecke operators
acting on spaces of automorphic forms. These Hecke operators generate
Hecke algebras, which are the rings called T in the modularity lifting theorems,
or R=T theorems, crucially introduced by Wiles in order to prove FLT.
The theory comes in two parts; the "abstract" theory, which is pure algebra, and the "concrete" theory where we apply the abstract constructions to produce endomorphisms of spaces of automorphic forms. The abstract theory is short (and completely formalized); the concrete theory still needs some work because to apply the theory to the adelic groups we care about we need to develop some more API around the theory of restricted products, and of compact open subgroups of matrix groups.
13.3. Abstract theory
The set-up: we have a commutative ring $R$, the coefficient ring, and all of our spaces which the operators act on will be $R$-modules.
We have a group G acting R-linearly on an R-module A.
We have subgroups U and V of G.
We will be particularly interested in the R-modules A^U and A^V
of invariant elements.
Given an element g \in G, then under a certain finiteness hypothesis
we will be able to define an R-linear map T_g or [UgV]
from A^V to A^U. The finiteness hypothesis is that the
double coset UgV can be written as a finite union of single
cosets g_iV.
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
Assuming UgV is a finite union of cosets g_iV,
we define [UgV] : A^V \to A^U to be the map sending a \in A^V
to \sum_i g_i a.
Code for Definition13.1●1 definition
Associated Lean declarations
-
def AbstractHeckeOperator.HeckeOperator_toFun.{u_1, u_2} {G
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType u_1] {AType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommMonoidAddCommMonoid.{u} (M : Type u) : Type uAn additive commutative monoid is an additive monoid with commutative `(+)`.AType u_2] [DistribMulActionDistribMulAction.{u_12, u_13} (M : Type u_12) (A : Type u_13) [Monoid M] [AddMonoid A] : Type (max u_12 u_13)Typeclass for multiplicative actions on additive structures. For example, if `G` is a group (with group law written as multiplication) and `A` is an abelian group (with group law written as addition), then to give `A` a `G`-module structure (for example, to use the theory of group cohomology) is to say `[DistribMulAction G A]`. Note in that we do not use the `Module` typeclass for `G`-modules, as the `Module` typeclass is for modules over a ring rather than a group. Mathematically, `DistribMulAction G A` is equivalent to giving `A` the structure of a `ℤ[G]`-module.GType u_1AType u_2] {gG: GType u_1} {USubgroup GVSubgroup G: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.GType u_1} (h(QuotientGroup.mk '' (↑U * {g})).Finite: (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.gG}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.) (a↑(MulAction.fixedPoints (↥V) A): ↑(MulAction.fixedPointsMulAction.fixedPoints.{u_1, u_3} (M : Type u_1) (α : Type u_3) [Monoid M] [MulAction M α] : Set αThe set of elements fixed under the whole action.(↥VSubgroup G) AType u_2)) : ↑(MulAction.fixedPointsMulAction.fixedPoints.{u_1, u_3} (M : Type u_1) (α : Type u_3) [Monoid M] [MulAction M α] : Set αThe set of elements fixed under the whole action.(↥USubgroup G) AType u_2)def AbstractHeckeOperator.HeckeOperator_toFun.{u_1, u_2} {G
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType u_1] {AType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommMonoidAddCommMonoid.{u} (M : Type u) : Type uAn additive commutative monoid is an additive monoid with commutative `(+)`.AType u_2] [DistribMulActionDistribMulAction.{u_12, u_13} (M : Type u_12) (A : Type u_13) [Monoid M] [AddMonoid A] : Type (max u_12 u_13)Typeclass for multiplicative actions on additive structures. For example, if `G` is a group (with group law written as multiplication) and `A` is an abelian group (with group law written as addition), then to give `A` a `G`-module structure (for example, to use the theory of group cohomology) is to say `[DistribMulAction G A]`. Note in that we do not use the `Module` typeclass for `G`-modules, as the `Module` typeclass is for modules over a ring rather than a group. Mathematically, `DistribMulAction G A` is equivalent to giving `A` the structure of a `ℤ[G]`-module.GType u_1AType u_2] {gG: GType u_1} {USubgroup GVSubgroup G: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.GType u_1} (h(QuotientGroup.mk '' (↑U * {g})).Finite: (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.gG}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.) (a↑(MulAction.fixedPoints (↥V) A): ↑(MulAction.fixedPointsMulAction.fixedPoints.{u_1, u_3} (M : Type u_1) (α : Type u_3) [Monoid M] [MulAction M α] : Set αThe set of elements fixed under the whole action.(↥VSubgroup G) AType u_2)) : ↑(MulAction.fixedPointsMulAction.fixedPoints.{u_1, u_3} (M : Type u_1) (α : Type u_3) [Monoid M] [MulAction M α] : Set αThe set of elements fixed under the whole action.(↥USubgroup G) AType u_2)The Hecke operator T_g = [UgV] : A^V → A^U associated to the double coset UgV.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
AbstractHeckeOperator.HeckeOperator[complete]
Definition 13.1
Assuming UgV is a finite union of cosets g_iV,
we define [UgV] : A^V \to A^U to be the map sending a \in A^V
to \sum_i g_i a.g_i), has image in A^U and is R-linear.
Code for Lemma13.2●1 definition
Associated Lean declarations
-
AbstractHeckeOperator.HeckeOperator[complete]
-
AbstractHeckeOperator.HeckeOperator[complete]
-
def AbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType u_1] {AType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommMonoidAddCommMonoid.{u} (M : Type u) : Type uAn additive commutative monoid is an additive monoid with commutative `(+)`.AType u_2] [DistribMulActionDistribMulAction.{u_12, u_13} (M : Type u_12) (A : Type u_13) [Monoid M] [AddMonoid A] : Type (max u_12 u_13)Typeclass for multiplicative actions on additive structures. For example, if `G` is a group (with group law written as multiplication) and `A` is an abelian group (with group law written as addition), then to give `A` a `G`-module structure (for example, to use the theory of group cohomology) is to say `[DistribMulAction G A]`. Note in that we do not use the `Module` typeclass for `G`-modules, as the `Module` typeclass is for modules over a ring rather than a group. Mathematically, `DistribMulAction G A` is equivalent to giving `A` the structure of a `ℤ[G]`-module.GType u_1AType u_2] (gG: GType u_1) (USubgroup GVSubgroup G: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.GType u_1) (h(QuotientGroup.mk '' (↑U * {g})).Finite: (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.gG}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.) {RType u_3: Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [RingRing.{u} (R : Type u) : Type uA `Ring` is a `Semiring` with negation making it an additive group.RType u_3] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.RType u_3AType u_2] [SMulCommClassSMulCommClass.{u_9, u_10, u_11} (M : Type u_9) (N : Type u_10) (α : Type u_11) [SMul M α] [SMul N α] : PropA typeclass mixin saying that two multiplicative actions on the same space commute.GType u_1RType u_3AType u_2] : ↑(MulAction.fixedPointsMulAction.fixedPoints.{u_1, u_3} (M : Type u_1) (α : Type u_3) [Monoid M] [MulAction M α] : Set αThe set of elements fixed under the whole action.(↥VSubgroup G) AType u_2) →ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.RType u_3]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.↑(MulAction.fixedPointsMulAction.fixedPoints.{u_1, u_3} (M : Type u_1) (α : Type u_3) [Monoid M] [MulAction M α] : Set αThe set of elements fixed under the whole action.(↥USubgroup G) AType u_2)def AbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType u_1] {AType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommMonoidAddCommMonoid.{u} (M : Type u) : Type uAn additive commutative monoid is an additive monoid with commutative `(+)`.AType u_2] [DistribMulActionDistribMulAction.{u_12, u_13} (M : Type u_12) (A : Type u_13) [Monoid M] [AddMonoid A] : Type (max u_12 u_13)Typeclass for multiplicative actions on additive structures. For example, if `G` is a group (with group law written as multiplication) and `A` is an abelian group (with group law written as addition), then to give `A` a `G`-module structure (for example, to use the theory of group cohomology) is to say `[DistribMulAction G A]`. Note in that we do not use the `Module` typeclass for `G`-modules, as the `Module` typeclass is for modules over a ring rather than a group. Mathematically, `DistribMulAction G A` is equivalent to giving `A` the structure of a `ℤ[G]`-module.GType u_1AType u_2] (gG: GType u_1) (USubgroup GVSubgroup G: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.GType u_1) (h(QuotientGroup.mk '' (↑U * {g})).Finite: (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.gG}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.) {RType u_3: Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [RingRing.{u} (R : Type u) : Type uA `Ring` is a `Semiring` with negation making it an additive group.RType u_3] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.RType u_3AType u_2] [SMulCommClassSMulCommClass.{u_9, u_10, u_11} (M : Type u_9) (N : Type u_10) (α : Type u_11) [SMul M α] [SMul N α] : PropA typeclass mixin saying that two multiplicative actions on the same space commute.GType u_1RType u_3AType u_2] : ↑(MulAction.fixedPointsMulAction.fixedPoints.{u_1, u_3} (M : Type u_1) (α : Type u_3) [Monoid M] [MulAction M α] : Set αThe set of elements fixed under the whole action.(↥VSubgroup G) AType u_2) →ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.RType u_3]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.↑(MulAction.fixedPointsMulAction.fixedPoints.{u_1, u_3} (M : Type u_1) (α : Type u_3) [Monoid M] [MulAction M α] : Set αThe set of elements fixed under the whole action.(↥USubgroup G) AType u_2)
Well-definedness is because if we change g_i to g'_i := g_i v
for some v \in V then g_i a = g'_i a because a \in A^V.
The image lands in A^U because left multiplication by u
fixes UgV and hence permutes the cosets g_iV.
Finally R-linearity is because the G-action is R-linear.
The finiteness hypothesis that the decomposition UgV = \coprod_i g_iV is
into a finite union is necessary for the theory to work. If G is a topological
group then here is a criterion which gives the finiteness hypothesis for free.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
If U and V are compact subgroups of a topological group G, if V is
also open, and if g \in G, then the double coset space UgV is a finite union
of left cosets g_iV.
Code for Lemma13.3●1 theorem
Associated Lean declarations
-
theorem QuotientGroup.mk_image_finite_of_compact_of_open.{u_1} {G
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType u_1] [TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.GType u_1] [IsTopologicalGroupIsTopologicalGroup.{u_4} (G : Type u_4) [TopologicalSpace G] [Group G] : PropA topological group is a group in which the multiplication and inversion operations are continuous. When you declare an instance that does not already have a `UniformSpace` instance, you should also provide an instance of `UniformSpace` and `IsUniformGroup` using `IsTopologicalGroup.rightUniformSpace` and `isUniformGroup_of_commGroup`.GType u_1] {gG: GType u_1} {USubgroup GVSubgroup G: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.GType u_1} (hUIsCompact ↑U: IsCompactIsCompact.{u_1} {X : Type u_1} [TopologicalSpace X] (s : Set X) : PropA set `s` is compact if for every nontrivial filter `f` that contains `s`, there exists `a ∈ s` such that every set of `f` meets every neighborhood of `a`.↑USubgroup G) (hVopenIsOpen ↑V: IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑VSubgroup G) : (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.gG}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.theorem QuotientGroup.mk_image_finite_of_compact_of_open.{u_1} {G
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType u_1] [TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.GType u_1] [IsTopologicalGroupIsTopologicalGroup.{u_4} (G : Type u_4) [TopologicalSpace G] [Group G] : PropA topological group is a group in which the multiplication and inversion operations are continuous. When you declare an instance that does not already have a `UniformSpace` instance, you should also provide an instance of `UniformSpace` and `IsUniformGroup` using `IsTopologicalGroup.rightUniformSpace` and `isUniformGroup_of_commGroup`.GType u_1] {gG: GType u_1} {USubgroup GVSubgroup G: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.GType u_1} (hUIsCompact ↑U: IsCompactIsCompact.{u_1} {X : Type u_1} [TopologicalSpace X] (s : Set X) : PropA set `s` is compact if for every nontrivial filter `f` that contains `s`, there exists `a ∈ s` such that every set of `f` meets every neighborhood of `a`.↑USubgroup G) (hVopenIsOpen ↑V: IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑VSubgroup G) : (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.gG}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.
The subset UgV of G is a continuous image of the compact set U \times V
and is hence compact, and it is covered by the disjoint left cosets g_iV;
this cover must thus be finite.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
AbstractHeckeOperator.comm[complete]
Lemma 13.2
Definition 13.1
This function is well-defined (that is, independent of the
choice of g_i), has image in A^U and is R-linear.g,h \in G and suppose we have UgU=\coprod_i g_iU
and UhU=\coprod_j h_j and that g_i h_j = h_j g_i for all i,j.
Then [UgU][UhU]=[UhU][UgU], that is, the Hecke operators
acting on A^U commute.
Code for Lemma13.4●1 theorem
Associated Lean declarations
-
AbstractHeckeOperator.comm[complete]
-
AbstractHeckeOperator.comm[complete]
-
theorem AbstractHeckeOperator.comm.{u_1, u_2, u_3} {G
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType u_1] {AType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommMonoidAddCommMonoid.{u} (M : Type u) : Type uAn additive commutative monoid is an additive monoid with commutative `(+)`.AType u_2] [DistribMulActionDistribMulAction.{u_12, u_13} (M : Type u_12) (A : Type u_13) [Monoid M] [AddMonoid A] : Type (max u_12 u_13)Typeclass for multiplicative actions on additive structures. For example, if `G` is a group (with group law written as multiplication) and `A` is an abelian group (with group law written as addition), then to give `A` a `G`-module structure (for example, to use the theory of group cohomology) is to say `[DistribMulAction G A]`. Note in that we do not use the `Module` typeclass for `G`-modules, as the `Module` typeclass is for modules over a ring rather than a group. Mathematically, `DistribMulAction G A` is equivalent to giving `A` the structure of a `ℤ[G]`-module.GType u_1AType u_2] {USubgroup G: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.GType u_1} {RType u_3: Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [RingRing.{u} (R : Type u) : Type uA `Ring` is a `Semiring` with negation making it an additive group.RType u_3] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.RType u_3AType u_2] [SMulCommClassSMulCommClass.{u_9, u_10, u_11} (M : Type u_9) (N : Type u_10) (α : Type u_11) [SMul M α] [SMul N α] : PropA typeclass mixin saying that two multiplicative actions on the same space commute.GType u_1RType u_3AType u_2] {g₁Gg₂G: GType u_1} (h₁(QuotientGroup.mk '' (↑U * {g₁})).Finite: (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.g₁G}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.) (h₂(QuotientGroup.mk '' (↑U * {g₂})).Finite: (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.g₂G}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.) (hcomm∃ s₁ s₂, Set.BijOn QuotientGroup.mk s₁ (QuotientGroup.mk '' (↑U * {g₁})) ∧ Set.BijOn QuotientGroup.mk s₂ (QuotientGroup.mk '' (↑U * {g₂})) ∧ ∀ a ∈ s₁, ∀ b ∈ s₂, a * b = b * a: ∃ s₁Set Gs₂Set G, Set.BijOnSet.BijOn.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) (t : Set β) : Prop`f` is bijective from `s` to `t` if `f` is injective on `s` and `f '' s = t`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.s₁Set G(Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.g₁G}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).Set.BijOnSet.BijOn.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) (t : Set β) : Prop`f` is bijective from `s` to `t` if `f` is injective on `s` and `f '' s = t`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.s₂Set G(Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.g₂G}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).∀ aG∈ s₁Set G, ∀ bG∈ s₂Set G, aG*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`.bG=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`.bG*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`.aG) : AbstractHeckeOperator.HeckeOperatorAbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G : Type u_1} [Group G] {A : Type u_2} [AddCommMonoid A] [DistribMulAction G A] (g : G) (U V : Subgroup G) (h : (QuotientGroup.mk '' (↑U * {g})).Finite) {R : Type u_3} [Ring R] [Module R A] [SMulCommClass G R A] : ↑(MulAction.fixedPoints (↥V) A) →ₗ[R] ↑(MulAction.fixedPoints (↥U) A)g₁GUSubgroup GUSubgroup Gh₁(QuotientGroup.mk '' (↑U * {g₁})).Finite∘ₗLinearMap.comp.{u_2, u_3, u_4, u_9, u_10, u_11} {R₁ : Type u_2} {R₂ : Type u_3} {R₃ : Type u_4} {M₁ : Type u_9} {M₂ : Type u_10} {M₃ : Type u_11} [Semiring R₁] [Semiring R₂] [Semiring R₃] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] {module_M₁ : Module R₁ M₁} {module_M₂ : Module R₂ M₂} {module_M₃ : Module R₃ M₃} {σ₁₂ : R₁ →+* R₂} {σ₂₃ : R₂ →+* R₃} {σ₁₃ : R₁ →+* R₃} [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] (f : M₂ →ₛₗ[σ₂₃] M₃) (g : M₁ →ₛₗ[σ₁₂] M₂) : M₁ →ₛₗ[σ₁₃] M₃Composition of two linear maps is a linear mapAbstractHeckeOperator.HeckeOperatorAbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G : Type u_1} [Group G] {A : Type u_2} [AddCommMonoid A] [DistribMulAction G A] (g : G) (U V : Subgroup G) (h : (QuotientGroup.mk '' (↑U * {g})).Finite) {R : Type u_3} [Ring R] [Module R A] [SMulCommClass G R A] : ↑(MulAction.fixedPoints (↥V) A) →ₗ[R] ↑(MulAction.fixedPoints (↥U) A)g₂GUSubgroup GUSubgroup Gh₂(QuotientGroup.mk '' (↑U * {g₂})).Finite=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`.AbstractHeckeOperator.HeckeOperatorAbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G : Type u_1} [Group G] {A : Type u_2} [AddCommMonoid A] [DistribMulAction G A] (g : G) (U V : Subgroup G) (h : (QuotientGroup.mk '' (↑U * {g})).Finite) {R : Type u_3} [Ring R] [Module R A] [SMulCommClass G R A] : ↑(MulAction.fixedPoints (↥V) A) →ₗ[R] ↑(MulAction.fixedPoints (↥U) A)g₂GUSubgroup GUSubgroup Gh₂(QuotientGroup.mk '' (↑U * {g₂})).Finite∘ₗLinearMap.comp.{u_2, u_3, u_4, u_9, u_10, u_11} {R₁ : Type u_2} {R₂ : Type u_3} {R₃ : Type u_4} {M₁ : Type u_9} {M₂ : Type u_10} {M₃ : Type u_11} [Semiring R₁] [Semiring R₂] [Semiring R₃] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] {module_M₁ : Module R₁ M₁} {module_M₂ : Module R₂ M₂} {module_M₃ : Module R₃ M₃} {σ₁₂ : R₁ →+* R₂} {σ₂₃ : R₂ →+* R₃} {σ₁₃ : R₁ →+* R₃} [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] (f : M₂ →ₛₗ[σ₂₃] M₃) (g : M₁ →ₛₗ[σ₁₂] M₂) : M₁ →ₛₗ[σ₁₃] M₃Composition of two linear maps is a linear mapAbstractHeckeOperator.HeckeOperatorAbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G : Type u_1} [Group G] {A : Type u_2} [AddCommMonoid A] [DistribMulAction G A] (g : G) (U V : Subgroup G) (h : (QuotientGroup.mk '' (↑U * {g})).Finite) {R : Type u_3} [Ring R] [Module R A] [SMulCommClass G R A] : ↑(MulAction.fixedPoints (↥V) A) →ₗ[R] ↑(MulAction.fixedPoints (↥U) A)g₁GUSubgroup GUSubgroup Gh₁(QuotientGroup.mk '' (↑U * {g₁})).Finitetheorem AbstractHeckeOperator.comm.{u_1, u_2, u_3} {G
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType u_1] {AType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommMonoidAddCommMonoid.{u} (M : Type u) : Type uAn additive commutative monoid is an additive monoid with commutative `(+)`.AType u_2] [DistribMulActionDistribMulAction.{u_12, u_13} (M : Type u_12) (A : Type u_13) [Monoid M] [AddMonoid A] : Type (max u_12 u_13)Typeclass for multiplicative actions on additive structures. For example, if `G` is a group (with group law written as multiplication) and `A` is an abelian group (with group law written as addition), then to give `A` a `G`-module structure (for example, to use the theory of group cohomology) is to say `[DistribMulAction G A]`. Note in that we do not use the `Module` typeclass for `G`-modules, as the `Module` typeclass is for modules over a ring rather than a group. Mathematically, `DistribMulAction G A` is equivalent to giving `A` the structure of a `ℤ[G]`-module.GType u_1AType u_2] {USubgroup G: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.GType u_1} {RType u_3: Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [RingRing.{u} (R : Type u) : Type uA `Ring` is a `Semiring` with negation making it an additive group.RType u_3] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.RType u_3AType u_2] [SMulCommClassSMulCommClass.{u_9, u_10, u_11} (M : Type u_9) (N : Type u_10) (α : Type u_11) [SMul M α] [SMul N α] : PropA typeclass mixin saying that two multiplicative actions on the same space commute.GType u_1RType u_3AType u_2] {g₁Gg₂G: GType u_1} (h₁(QuotientGroup.mk '' (↑U * {g₁})).Finite: (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.g₁G}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.) (h₂(QuotientGroup.mk '' (↑U * {g₂})).Finite: (Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.g₂G}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`..FiniteSet.Finite.{u} {α : Type u} (s : Set α) : PropA set is finite if the corresponding `Subtype` is finite, i.e., if there exists a natural `n : ℕ` and an equivalence `s ≃ Fin n`.) (hcomm∃ s₁ s₂, Set.BijOn QuotientGroup.mk s₁ (QuotientGroup.mk '' (↑U * {g₁})) ∧ Set.BijOn QuotientGroup.mk s₂ (QuotientGroup.mk '' (↑U * {g₂})) ∧ ∀ a ∈ s₁, ∀ b ∈ s₂, a * b = b * a: ∃ s₁Set Gs₂Set G, Set.BijOnSet.BijOn.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) (t : Set β) : Prop`f` is bijective from `s` to `t` if `f` is injective on `s` and `f '' s = t`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.s₁Set G(Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.g₁G}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).Set.BijOnSet.BijOn.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) (t : Set β) : Prop`f` is bijective from `s` to `t` if `f` is injective on `s` and `f '' s = t`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.s₂Set G(Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.QuotientGroup.mkQuotientGroup.mk.{u_1} {α : Type u_1} [Group α] {s : Subgroup α} (a : α) : α ⧸ sThe canonical map from a group `α` to the quotient `α ⧸ s`.''Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.(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`.↑USubgroup G*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`.{Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.g₂G}Singleton.singleton.{u, v} {α : outParam (Type u)} {β : Type v} [self : Singleton α β] : α → β`singleton x` is a collection with the single element `x` (notation: `{x}`). Conventions for notations in identifiers: * The recommended spelling of `{x}` in identifiers is `singleton`.)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`.)Set.image.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) : Set βThe image of `s : Set α` by `f : α → β`, written `f '' s`, is the set of `b : β` such that `f a = b` for some `a ∈ s`.∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).∀ aG∈ s₁Set G, ∀ bG∈ s₂Set G, aG*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`.bG=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`.bG*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`.aG) : AbstractHeckeOperator.HeckeOperatorAbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G : Type u_1} [Group G] {A : Type u_2} [AddCommMonoid A] [DistribMulAction G A] (g : G) (U V : Subgroup G) (h : (QuotientGroup.mk '' (↑U * {g})).Finite) {R : Type u_3} [Ring R] [Module R A] [SMulCommClass G R A] : ↑(MulAction.fixedPoints (↥V) A) →ₗ[R] ↑(MulAction.fixedPoints (↥U) A)g₁GUSubgroup GUSubgroup Gh₁(QuotientGroup.mk '' (↑U * {g₁})).Finite∘ₗLinearMap.comp.{u_2, u_3, u_4, u_9, u_10, u_11} {R₁ : Type u_2} {R₂ : Type u_3} {R₃ : Type u_4} {M₁ : Type u_9} {M₂ : Type u_10} {M₃ : Type u_11} [Semiring R₁] [Semiring R₂] [Semiring R₃] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] {module_M₁ : Module R₁ M₁} {module_M₂ : Module R₂ M₂} {module_M₃ : Module R₃ M₃} {σ₁₂ : R₁ →+* R₂} {σ₂₃ : R₂ →+* R₃} {σ₁₃ : R₁ →+* R₃} [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] (f : M₂ →ₛₗ[σ₂₃] M₃) (g : M₁ →ₛₗ[σ₁₂] M₂) : M₁ →ₛₗ[σ₁₃] M₃Composition of two linear maps is a linear mapAbstractHeckeOperator.HeckeOperatorAbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G : Type u_1} [Group G] {A : Type u_2} [AddCommMonoid A] [DistribMulAction G A] (g : G) (U V : Subgroup G) (h : (QuotientGroup.mk '' (↑U * {g})).Finite) {R : Type u_3} [Ring R] [Module R A] [SMulCommClass G R A] : ↑(MulAction.fixedPoints (↥V) A) →ₗ[R] ↑(MulAction.fixedPoints (↥U) A)g₂GUSubgroup GUSubgroup Gh₂(QuotientGroup.mk '' (↑U * {g₂})).Finite=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`.AbstractHeckeOperator.HeckeOperatorAbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G : Type u_1} [Group G] {A : Type u_2} [AddCommMonoid A] [DistribMulAction G A] (g : G) (U V : Subgroup G) (h : (QuotientGroup.mk '' (↑U * {g})).Finite) {R : Type u_3} [Ring R] [Module R A] [SMulCommClass G R A] : ↑(MulAction.fixedPoints (↥V) A) →ₗ[R] ↑(MulAction.fixedPoints (↥U) A)g₂GUSubgroup GUSubgroup Gh₂(QuotientGroup.mk '' (↑U * {g₂})).Finite∘ₗLinearMap.comp.{u_2, u_3, u_4, u_9, u_10, u_11} {R₁ : Type u_2} {R₂ : Type u_3} {R₃ : Type u_4} {M₁ : Type u_9} {M₂ : Type u_10} {M₃ : Type u_11} [Semiring R₁] [Semiring R₂] [Semiring R₃] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] {module_M₁ : Module R₁ M₁} {module_M₂ : Module R₂ M₂} {module_M₃ : Module R₃ M₃} {σ₁₂ : R₁ →+* R₂} {σ₂₃ : R₂ →+* R₃} {σ₁₃ : R₁ →+* R₃} [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] (f : M₂ →ₛₗ[σ₂₃] M₃) (g : M₁ →ₛₗ[σ₁₂] M₂) : M₁ →ₛₗ[σ₁₃] M₃Composition of two linear maps is a linear mapAbstractHeckeOperator.HeckeOperatorAbstractHeckeOperator.HeckeOperator.{u_1, u_2, u_3} {G : Type u_1} [Group G] {A : Type u_2} [AddCommMonoid A] [DistribMulAction G A] (g : G) (U V : Subgroup G) (h : (QuotientGroup.mk '' (↑U * {g})).Finite) {R : Type u_3} [Ring R] [Module R A] [SMulCommClass G R A] : ↑(MulAction.fixedPoints (↥V) A) →ₗ[R] ↑(MulAction.fixedPoints (↥U) A)g₁GUSubgroup GUSubgroup Gh₁(QuotientGroup.mk '' (↑U * {g₁})).Finite
We have [UgU][UhU]a=\sum_ig_i(\sum_jh_ja)=\sum_{i,j}g_ih_ja
and [UhU][UgU]a=\sum_jh_j\sum_ig_ia=\sum_{j,i}h_jg_ia and these
sums are equal because g_ih_j=h_jg_i.
13.4. Restricted products
In the concrete example of Hecke operators which we care about, the invariants
A^G will be spaces of quaternionic automorphic forms by definition. We do
not need to worry about the definition of A in this project at all.
However we will need to do various computations with the specific groups
G which we are interested in, and they are restricted products. So we now
develop some theory for restricted products, starting by recalling the
definition.
If I is an index set, if X_i are sets indexed by i\in I and if
Y_i are subsets, then the restricted product \prod'_iX_i is defined to
be the subset of the full product \prod_i X_i consisting of those tuples
(x_i) such that x_i\in Y_i for all but finitely many i. We suppress
the Y_i from the notation in this document, although in Lean we cannot do
this and the restricted product looks something like
\prod{}^{r} i,[X\ i, Y\ i].
It is straightforward to check that if the X_i are groups or rings or
R-modules, and the Y_i are subgroups or subrings or submodules, then
the restricted product is a group, ring or R-module. Indeed the structure
is inherited via the inclusion \prod'_iX_i\subseteq\prod_iX_i and the fact
that arbitrary products of groups, rings, and modules are groups, rings, and
modules.
More subtle is the theory of topological space structures. If the X_i are
topological spaces then we do not give \prod'_iX_i the subspace topology
coming from the product topology on \prod_iX_i; instead we give it the
finest topology making all of the natural maps
\prod_{i\in S}X_i\times\prod_{i\notin S}Y_i\to \prod'_iX_i continuous, as
S runs through all finite subsets of I. Here the product of X_is
and Y_is has the product topology. For example if all of the Y_i are
open then one can check that \prod_iY_i is an open subset of
\prod'_iX_i, whereas it is not of the form
\left(\prod'_iX_i\right)\cap U for any open subset U of \prod_iX_i
in general; the map from \prod'_iX_i to \prod_iX_i is continuous but is
not in general an embedding.
If you have seen automorphic forms before, then here is an obvious-sounding
claim: because the adeles \mathbb{A}_F of a number field are a restricted
product of completions F_v with respect to the integer rings
\mathcal{O}_v, then GL_2(\mathbb{A}_F) is obviously topologically a
restricted product of GL_2(F_v) with respect to
GL_2(\mathcal{O}_v). We now spend some time justifying this claim, which is
a little more intricate than it sounds.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
Homeomorph.restrictedProductProd[complete]
If A_i is a family of topological spaces equipped with open subsets B_i,
and C_i is a family of topological spaces equipped with open subsets D_i,
and A_i \times C_i is equipped with the open subset B_i \times D_i, then the natural
bijection
\prod'_i(A_i \times C_i)= (\prod'_i A_i) \times (\prod'_i B_i)
is a homeomorphism.
Code for Lemma13.5●1 definition
Associated Lean declarations
-
Homeomorph.restrictedProductProd[complete]
-
Homeomorph.restrictedProductProd[complete]
-
def Homeomorph.restrictedProductProd.{u_4, u_5, u_6} {ι
Type u_4: Type u_4A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {Aι → Type u_5: ιType u_4→ Type u_5A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {Bι → Type u_6: ιType u_4→ Type u_6A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {C(i : ι) → Set (A i): (iι: ιType u_4) → SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`. Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets and predicates.(Aι → Type u_5iι)} {D(i : ι) → Set (B i): (iι: ιType u_4) → SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`. Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets and predicates.(Bι → Type u_6iι)} [(iι: ιType u_4) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Aι → Type u_5iι)] [(iι: ιType u_4) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Bι → Type u_6iι)] (hCopen∀ (i : ι), IsOpen (C i): ∀ (iι: ιType u_4), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(C(i : ι) → Set (A i)iι)) (hDopen∀ (i : ι), IsOpen (D i): ∀ (iι: ιType u_4), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(D(i : ι) → Set (B i)iι)) : RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Aι → Type u_5iι×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`.Bι → Type u_6iι) (fun iι↦ C(i : ι) → Set (A i)iι×ˢSProd.sprod.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : SProd α β γ] : α → β → γThe Cartesian product `s ×ˢ t` is the set of `(a, b)` such that `a ∈ s` and `b ∈ t`.D(i : ι) → Set (B i)iι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.≃ₜHomeomorph.{u_5, u_6} (X : Type u_5) (Y : Type u_6) [TopologicalSpace X] [TopologicalSpace Y] : Type (max u_5 u_6)Homeomorphism between `X` and `Y`, also called topological isomorphismRestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Aι → Type u_5iι) (fun iι↦ C(i : ι) → Set (A i)iι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.×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`.RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Bι → Type u_6iι) (fun iι↦ D(i : ι) → Set (B i)iι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.def Homeomorph.restrictedProductProd.{u_4, u_5, u_6} {ι
Type u_4: Type u_4A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {Aι → Type u_5: ιType u_4→ Type u_5A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {Bι → Type u_6: ιType u_4→ Type u_6A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {C(i : ι) → Set (A i): (iι: ιType u_4) → SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`. Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets and predicates.(Aι → Type u_5iι)} {D(i : ι) → Set (B i): (iι: ιType u_4) → SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`. Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets and predicates.(Bι → Type u_6iι)} [(iι: ιType u_4) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Aι → Type u_5iι)] [(iι: ιType u_4) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Bι → Type u_6iι)] (hCopen∀ (i : ι), IsOpen (C i): ∀ (iι: ιType u_4), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(C(i : ι) → Set (A i)iι)) (hDopen∀ (i : ι), IsOpen (D i): ∀ (iι: ιType u_4), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(D(i : ι) → Set (B i)iι)) : RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Aι → Type u_5iι×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`.Bι → Type u_6iι) (fun iι↦ C(i : ι) → Set (A i)iι×ˢSProd.sprod.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : SProd α β γ] : α → β → γThe Cartesian product `s ×ˢ t` is the set of `(a, b)` such that `a ∈ s` and `b ∈ t`.D(i : ι) → Set (B i)iι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.≃ₜHomeomorph.{u_5, u_6} (X : Type u_5) (Y : Type u_6) [TopologicalSpace X] [TopologicalSpace Y] : Type (max u_5 u_6)Homeomorphism between `X` and `Y`, also called topological isomorphismRestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Aι → Type u_5iι) (fun iι↦ C(i : ι) → Set (A i)iι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.×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`.RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Bι → Type u_6iι) (fun iι↦ D(i : ι) → Set (B i)iι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.The homeomorphism between restricted product of binary products, and the binary projuct of the restricted products, when the products are with respect to open subsets.
This may well not be true if B_i and D_i are not open, because
filtered colimits and binary products do not appear in general to commute
in the category of topological spaces. I don't know an explicit counterexample though.
We need to check continuity in both directions. The easy way is
continuity of the map from the restricted product to the map from the binary
product; the lemma RestrictedProduct.continuous_dom in mathlib
tells us that a map from a restricted product is continuous when its restriction
to \left(\prod_{i\in S}(A_i\times C_i)\right)\times\left(\prod_{i\notin S}(B_i\times D_i)\right)
is continuous for all finite S\subseteq I; the universal property of the binary
product tells us that the map into the binary product is continuous iff the maps into
the factors are continuous, but the map into \prod'_iX_i is a product of the
natural maps from \left(\prod_{i\in S}(A_i\times C_i)\right)\times\left(\prod_{i\notin S}(B_i\times D_i)\right)
to \left(\prod_{i\in S}A_i\right)\times\left(\prod_{i\notin S}B_i\right)
and the inclusion, and both are known to be continuous (an arbitrary product of continuous
maps is continuous, and the other claim is in the restricted product API in mathlib).
The harder direction is the other way, because we are working against both universal
properties. The trick is RestrictedProduct.continuous_dom_prod in mathlib
(this is where we assume B_i and D_i are open), which tells us that a map out of
a binary product of restricted products is continuous when its restriction to
\left(\left(\prod_{i\in S}A_i\right)\times\left(\prod_{i\notin S}B_i\right)\right)\times
\left(\left(\prod_{i\in S}C_i\right)\times\left(\prod_{i\notin S}D_i\right)\right)$
is, for all finite S (note that the S in the mathlib lemma is actually our I-S).
The map from this to the restricted product factors through
\left(\prod_{i\in S}(A_i\times C_i)\right)\times\left(\prod_{i\notin S}(B_i\times D_i)\right);
the first map is a homeomorphism (use the fact that \prod_i X_i\times Y_i is homeomorphic
to \left(\prod_i X_i\right)\times\left(\prod_i Y_i\right)), and the second is continuous
by definition of the topology on a restricted product.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
Homeomorph.restrictedProductPi[complete]
Restricted products with respect to open subspaces commute with finite products.
In other words, if j runs through a finite set J and i runs through an
arbitrary set I, and if X_{ji} are topological spaces equipped with open
subspaces Y_{ji}, then the obvious bijection
\prod'_i(\prod_j X_{ji})=\prod_j(\prod'_i X_{ji}) is a homeomorphism.
Code for Corollary13.6●1 definition
Associated Lean declarations
-
Homeomorph.restrictedProductPi[complete]
-
Homeomorph.restrictedProductPi[complete]
-
def Homeomorph.restrictedProductPi.{u_7, u_8, u_9} {ι
Type u_7: Type u_7A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {nType u_8: Type u_8A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.nType u_8] {An → ι → Type u_9: nType u_8→ ιType u_7→ Type u_9A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(jn: nType u_8) → (iι: ιType u_7) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(An → ι → Type u_9jniι)] {C(j : n) → (i : ι) → Set (A j i): (jn: nType u_8) → (iι: ιType u_7) → SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`. Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets and predicates.(An → ι → Type u_9jniι)} (hCopen∀ (j : n) (i : ι), IsOpen (C j i): ∀ (jn: nType u_8) (iι: ιType u_7), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(C(j : n) → (i : ι) → Set (A j i)jniι)) : RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ (jn: nType u_8) → An → ι → Type u_9jniι) (fun iι↦ {setOf.{u} {α : Type u} (p : α → Prop) : Set αTurn a predicate `p : α → Prop` into a set, also written as `{x | p x}`f(fun i ↦ (j : n) → A j i) i|setOf.{u} {α : Type u} (p : α → Prop) : Set αTurn a predicate `p : α → Prop` into a set, also written as `{x | p x}`∀ (jn: nType u_8), f(fun i ↦ (j : n) → A j i) ijn∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.C(j : n) → (i : ι) → Set (A j i)jniι}setOf.{u} {α : Type u} (p : α → Prop) : Set αTurn a predicate `p : α → Prop` into a set, also written as `{x | p x}`) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.≃ₜHomeomorph.{u_5, u_6} (X : Type u_5) (Y : Type u_6) [TopologicalSpace X] [TopologicalSpace Y] : Type (max u_5 u_6)Homeomorphism between `X` and `Y`, also called topological isomorphism((jn: nType u_8) → RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ An → ι → Type u_9jniι) (fun iι↦ C(j : n) → (i : ι) → Set (A j i)jniι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.)def Homeomorph.restrictedProductPi.{u_7, u_8, u_9} {ι
Type u_7: Type u_7A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {nType u_8: Type u_8A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.nType u_8] {An → ι → Type u_9: nType u_8→ ιType u_7→ Type u_9A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(jn: nType u_8) → (iι: ιType u_7) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(An → ι → Type u_9jniι)] {C(j : n) → (i : ι) → Set (A j i): (jn: nType u_8) → (iι: ιType u_7) → SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`. Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets and predicates.(An → ι → Type u_9jniι)} (hCopen∀ (j : n) (i : ι), IsOpen (C j i): ∀ (jn: nType u_8) (iι: ιType u_7), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(C(j : n) → (i : ι) → Set (A j i)jniι)) : RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ (jn: nType u_8) → An → ι → Type u_9jniι) (fun iι↦ {setOf.{u} {α : Type u} (p : α → Prop) : Set αTurn a predicate `p : α → Prop` into a set, also written as `{x | p x}`f(fun i ↦ (j : n) → A j i) i|setOf.{u} {α : Type u} (p : α → Prop) : Set αTurn a predicate `p : α → Prop` into a set, also written as `{x | p x}`∀ (jn: nType u_8), f(fun i ↦ (j : n) → A j i) ijn∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.C(j : n) → (i : ι) → Set (A j i)jniι}setOf.{u} {α : Type u} (p : α → Prop) : Set αTurn a predicate `p : α → Prop` into a set, also written as `{x | p x}`) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.≃ₜHomeomorph.{u_5, u_6} (X : Type u_5) (Y : Type u_6) [TopologicalSpace X] [TopologicalSpace Y] : Type (max u_5 u_6)Homeomorphism between `X` and `Y`, also called topological isomorphism((jn: nType u_8) → RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ An → ι → Type u_9jniι) (fun iι↦ C(j : n) → (i : ι) → Set (A j i)jniι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.)The homeomorphism between a restricted product of finite products, and a finite product of restricted products, when the products are with respect to open subsets.
Induction on the size of the finite set, using
Lemma 13.5
If A_i is a family of topological spaces equipped with open subsets B_i,
and C_i is a family of topological spaces equipped with open subsets D_i,
and A_i \times C_i is equipped with the open subset B_i \times D_i, then the natural
bijection
\prod'_i(A_i \times C_i)= (\prod'_i A_i) \times (\prod'_i B_i)
is a homeomorphism.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
Homeomorph.restrictedProductMatrix[complete]
If X_i are topological spaces and the Y_i are open subspaces, then the
obvious map M_n(\prod'_iX_i)=\prod'_iM_n(X_i) is a homeomorphism.
Code for Corollary13.7●1 definition
Associated Lean declarations
-
Homeomorph.restrictedProductMatrix[complete]
-
Homeomorph.restrictedProductMatrix[complete]
-
def Homeomorph.restrictedProductMatrix.{u_7, u_8, u_9, u_10} {ι
Type u_7: Type u_7A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {mType u_8: Type u_8A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {nType u_9: Type u_9A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.mType u_8] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.nType u_9] {Aι → Type u_10: ιType u_7→ Type u_10A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(iι: ιType u_7) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Aι → Type u_10iι)] {C(i : ι) → Set (A i): (iι: ιType u_7) → SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`. Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets and predicates.(Aι → Type u_10iι)} (hCopen∀ (i : ι), IsOpen (C i): ∀ (iι: ιType u_7), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(C(i : ι) → Set (A i)iι)) : RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ 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`.mType u_8nType u_9(Aι → Type u_10iι)) (fun iι↦ (C(i : ι) → Set (A i)iι).matrixSet.matrix.{v, u_2, u_3} {m : Type u_2} {n : Type u_3} {α : Type v} (S : Set α) : Set (Matrix m n α)Given a set `S`, `S.matrix` is the set of matrices `M` all of whose entries `M i j` belong to `S`.) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.≃ₜHomeomorph.{u_5, u_6} (X : Type u_5) (Y : Type u_6) [TopologicalSpace X] [TopologicalSpace Y] : Type (max u_5 u_6)Homeomorphism between `X` and `Y`, also called topological isomorphismMatrixMatrix.{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`.mType u_8nType u_9(RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Aι → Type u_10iι) (fun iι↦ C(i : ι) → Set (A i)iι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.)def Homeomorph.restrictedProductMatrix.{u_7, u_8, u_9, u_10} {ι
Type u_7: Type u_7A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {mType u_8: Type u_8A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {nType u_9: Type u_9A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.mType u_8] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.nType u_9] {Aι → Type u_10: ιType u_7→ Type u_10A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(iι: ιType u_7) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Aι → Type u_10iι)] {C(i : ι) → Set (A i): (iι: ιType u_7) → SetSet.{u} (α : Type u) : Type uA set is a collection of elements of some type `α`. Although `Set` is defined as `α → Prop`, this is an implementation detail which should not be relied on. Instead, `setOf` and membership of a set (`∈`) should be used to convert between sets and predicates.(Aι → Type u_10iι)} (hCopen∀ (i : ι), IsOpen (C i): ∀ (iι: ιType u_7), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(C(i : ι) → Set (A i)iι)) : RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ 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`.mType u_8nType u_9(Aι → Type u_10iι)) (fun iι↦ (C(i : ι) → Set (A i)iι).matrixSet.matrix.{v, u_2, u_3} {m : Type u_2} {n : Type u_3} {α : Type v} (S : Set α) : Set (Matrix m n α)Given a set `S`, `S.matrix` is the set of matrices `M` all of whose entries `M i j` belong to `S`.) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.≃ₜHomeomorph.{u_5, u_6} (X : Type u_5) (Y : Type u_6) [TopologicalSpace X] [TopologicalSpace Y] : Type (max u_5 u_6)Homeomorphism between `X` and `Y`, also called topological isomorphismMatrixMatrix.{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`.mType u_8nType u_9(RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Aι → Type u_10iι) (fun iι↦ C(i : ι) → Set (A i)iι) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.)The homeomorphism between a restricted product of m x n matrices, and m x n matrices of restricted products, when the products are with respect to open sets.
Immediate from the previous corollary Corollary 13.6
Restricted products with respect to open subspaces commute with finite products.
In other words, if j runs through a finite set J and i runs through an
arbitrary set I, and if X_{ji} are topological spaces equipped with open
subspaces Y_{ji}, then the obvious bijection
\prod'_i(\prod_j X_{ji})=\prod_j(\prod'_i X_{ji}) is a homeomorphism.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
Submonoid.units_isOpen[complete]
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Uses target in- proof
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Uses target in- proof
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Uses target in- proof
-
-
«ContinuousMulEquiv.restrictedProductUnits»
- proof
If M is a topological monoid and U is an open submonoid, then the units
U^\times of U are naturally an open subgroup of M^\times.
Code for Lemma13.8●1 theorem
Associated Lean declarations
-
Submonoid.units_isOpen[complete]
-
Submonoid.units_isOpen[complete]
-
theorem Submonoid.units_isOpen.{u_1} {M
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.MType u_1] [MonoidMonoid.{u} (M : Type u) : Type uA `Monoid` is a `Semigroup` with an element `1` such that `1 * a = a * 1 = a`.MType u_1] {USubmonoid M: SubmonoidSubmonoid.{u_3} (M : Type u_3) [MulOneClass M] : Type u_3A submonoid of a monoid `M` is a subset containing 1 and closed under multiplication.MType u_1} (hUIsOpen ↑U: IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑USubmonoid M) : IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑USubmonoid M.unitsSubmonoid.units.{u_1} {M : Type u_1} [Monoid M] (S : Submonoid M) : Subgroup MˣThe units of `S`, packaged as a subgroup of `Mˣ`.theorem Submonoid.units_isOpen.{u_1} {M
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.MType u_1] [MonoidMonoid.{u} (M : Type u) : Type uA `Monoid` is a `Semigroup` with an element `1` such that `1 * a = a * 1 = a`.MType u_1] {USubmonoid M: SubmonoidSubmonoid.{u_3} (M : Type u_3) [MulOneClass M] : Type u_3A submonoid of a monoid `M` is a subset containing 1 and closed under multiplication.MType u_1} (hUIsOpen ↑U: IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑USubmonoid M) : IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑USubmonoid M.unitsSubmonoid.units.{u_1} {M : Type u_1} [Monoid M] (S : Submonoid M) : Subgroup MˣThe units of `S`, packaged as a subgroup of `Mˣ`.
M^\times does not get the subspace topology from M; it is embedded into
M \times M via g \mapsto (g, g^{-1}) and gets the subspace topology from
the product. This makes it into a topological group.
We have U \times U is an open subset of M \times M, and if we view M^\times
embedded in M \times M via g \mapsto (g, g^{-1}), then the intersection of
this subgroup with U \times U is open in M^\times and consists of the elements of
M^\times which are in U and whose inverse is also in U, which is easily checked
to be the copy of U^\times we're talking about.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
Submonoid.units_isCompact[complete]
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Uses target in- proof
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Uses target in- proof
-
-
«nolean-compactopen-GL2»
- proof
If M is a Hausdorff topological monoid and U is a compact submonoid, then
the units U^\times of U are naturally a compact subgroup of M^\times.
Code for Lemma13.9●1 theorem
Associated Lean declarations
-
Submonoid.units_isCompact[complete]
-
Submonoid.units_isCompact[complete]
-
theorem Submonoid.units_isCompact.{u} {α
Type u: Type uA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [MonoidMonoid.{u} (M : Type u) : Type uA `Monoid` is a `Semigroup` with an element `1` such that `1 * a = a * 1 = a`.αType u] [TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.αType u] [T1SpaceT1Space.{u} (X : Type u) [TopologicalSpace X] : PropA T₁ space, also known as a Fréchet space, is a topological space where every singleton set is closed. Equivalently, for every pair `x ≠ y`, there is an open set containing `x` and not `y`.αType u] [ContinuousMulContinuousMul.{u_1} (M : Type u_1) [TopologicalSpace M] [Mul M] : PropBasic hypothesis to talk about a topological monoid or a topological semigroup. A topological monoid over `M`, for example, is obtained by requiring both the instances `Monoid M` and `ContinuousMul M`. Continuity in only the left/right argument can be stated using `ContinuousConstSMul α α`/`ContinuousConstSMul αᵐᵒᵖ α`.αType u] {SSubmonoid α: SubmonoidSubmonoid.{u_3} (M : Type u_3) [MulOneClass M] : Type u_3A submonoid of a monoid `M` is a subset containing 1 and closed under multiplication.αType u} (hSIsCompact ↑S: IsCompactIsCompact.{u_1} {X : Type u_1} [TopologicalSpace X] (s : Set X) : PropA set `s` is compact if for every nontrivial filter `f` that contains `s`, there exists `a ∈ s` such that every set of `f` meets every neighborhood of `a`.↑SSubmonoid α) : IsCompactIsCompact.{u_1} {X : Type u_1} [TopologicalSpace X] (s : Set X) : PropA set `s` is compact if for every nontrivial filter `f` that contains `s`, there exists `a ∈ s` such that every set of `f` meets every neighborhood of `a`.↑SSubmonoid α.unitsSubmonoid.units.{u_1} {M : Type u_1} [Monoid M] (S : Submonoid M) : Subgroup MˣThe units of `S`, packaged as a subgroup of `Mˣ`.theorem Submonoid.units_isCompact.{u} {α
Type u: Type uA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [MonoidMonoid.{u} (M : Type u) : Type uA `Monoid` is a `Semigroup` with an element `1` such that `1 * a = a * 1 = a`.αType u] [TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.αType u] [T1SpaceT1Space.{u} (X : Type u) [TopologicalSpace X] : PropA T₁ space, also known as a Fréchet space, is a topological space where every singleton set is closed. Equivalently, for every pair `x ≠ y`, there is an open set containing `x` and not `y`.αType u] [ContinuousMulContinuousMul.{u_1} (M : Type u_1) [TopologicalSpace M] [Mul M] : PropBasic hypothesis to talk about a topological monoid or a topological semigroup. A topological monoid over `M`, for example, is obtained by requiring both the instances `Monoid M` and `ContinuousMul M`. Continuity in only the left/right argument can be stated using `ContinuousConstSMul α α`/`ContinuousConstSMul αᵐᵒᵖ α`.αType u] {SSubmonoid α: SubmonoidSubmonoid.{u_3} (M : Type u_3) [MulOneClass M] : Type u_3A submonoid of a monoid `M` is a subset containing 1 and closed under multiplication.αType u} (hSIsCompact ↑S: IsCompactIsCompact.{u_1} {X : Type u_1} [TopologicalSpace X] (s : Set X) : PropA set `s` is compact if for every nontrivial filter `f` that contains `s`, there exists `a ∈ s` such that every set of `f` meets every neighborhood of `a`.↑SSubmonoid α) : IsCompactIsCompact.{u_1} {X : Type u_1} [TopologicalSpace X] (s : Set X) : PropA set `s` is compact if for every nontrivial filter `f` that contains `s`, there exists `a ∈ s` such that every set of `f` meets every neighborhood of `a`.↑SSubmonoid α.unitsSubmonoid.units.{u_1} {M : Type u_1} [Monoid M] (S : Submonoid M) : Subgroup MˣThe units of `S`, packaged as a subgroup of `Mˣ`.
Is Hausdorffness necessary?
First I claim that M^\times embedded in M \times M via g \mapsto (g, g^{-1}) is a closed
subset of M \times M. Indeed, if p : M \times M \to M is (a,b) \mapsto ab and
q : M \times M \to M is (a,b) \mapsto ba, then p and q are continuous,
M^\times \subseteq M \times M is the intersection p^{-1}\{1\} \cap q^{-1}\{1\}, and \{1\}
is closed because M is Hausdorff.
We have U \times U is a compact subset of M \times M, and so
U^\times = M^\times \cap U \times U is a closed subspace of a compact space and is thus compact.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
ContinuousMulEquiv.piUnits[complete]
If U_i are topological monoids then the canonical group isomorphism
(\prod_i U_i)^\times = \prod_i (U_i^\times) is a homeomorphism.
Code for Lemma13.10●1 definition
Associated Lean declarations
-
ContinuousMulEquiv.piUnits[complete]
-
ContinuousMulEquiv.piUnits[complete]
-
def ContinuousMulEquiv.piUnits.{u_1, u_2} {ι
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {Mι → Type u_2: ιType u_1→ Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(iι: ιType u_1) → MonoidMonoid.{u} (M : Type u) : Type uA `Monoid` is a `Semigroup` with an element `1` such that `1 * a = a * 1 = a`.(Mι → Type u_2iι)] [(iι: ιType u_1) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Mι → Type u_2iι)] : ((iι: ιType u_1) → Mι → Type u_2iι)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`. An element of a `Monoid` is a unit if it has a two-sided inverse. This version bundles the inverse element so that it can be computed. For a predicate see `IsUnit`.≃ₜ*ContinuousMulEquiv.{u, v} (G : Type u) [TopologicalSpace G] (H : Type v) [TopologicalSpace H] [Mul G] [Mul H] : Type (max u v)The structure of two-sided continuous isomorphisms between groups. Note that both the map and its inverse have to be continuous.((iι: ιType u_1) → (Mι → Type u_2iι)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`. An element of a `Monoid` is a unit if it has a two-sided inverse. This version bundles the inverse element so that it can be computed. For a predicate see `IsUnit`.)def ContinuousMulEquiv.piUnits.{u_1, u_2} {ι
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {Mι → Type u_2: ιType u_1→ Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(iι: ιType u_1) → MonoidMonoid.{u} (M : Type u) : Type uA `Monoid` is a `Semigroup` with an element `1` such that `1 * a = a * 1 = a`.(Mι → Type u_2iι)] [(iι: ιType u_1) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Mι → Type u_2iι)] : ((iι: ιType u_1) → Mι → Type u_2iι)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`. An element of a `Monoid` is a unit if it has a two-sided inverse. This version bundles the inverse element so that it can be computed. For a predicate see `IsUnit`.≃ₜ*ContinuousMulEquiv.{u, v} (G : Type u) [TopologicalSpace G] (H : Type v) [TopologicalSpace H] [Mul G] [Mul H] : Type (max u v)The structure of two-sided continuous isomorphisms between groups. Note that both the map and its inverse have to be continuous.((iι: ιType u_1) → (Mι → Type u_2iι)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`. An element of a `Monoid` is a unit if it has a two-sided inverse. This version bundles the inverse element so that it can be computed. For a predicate see `IsUnit`.)The isomorphism of topological groups between the units of a product and the product of the units.
We prove that the maps in both directions are continuous. Let's start with the map from left to right.
A map into a product is continuous when the maps to the factors are continuous.
A map into the units of a monoid is continuous when the two projection maps to
the monoid (the inclusion and the map u \mapsto u^{-1}) are continuous
(because M^\times has the topology induced from M \times M). This reduces us to
checking that the maps (\prod_i U_i)^\times \to U_j sending (u_i) to u_j resp
u_j^{-1} are continuous. But the former map is the continuous inclusion
(\prod_i U_i)^\times \to \prod_i U_i followed by the continuous projection to U_j,
and the latter map is the continuous inclusion (\prod_i U_i)^\times \to \prod_i U_i
sending x to x^{-1} followed by the projection.
To go the other way: because the units have the induced topology it suffices to
check that the two maps \prod_i(U_i^\times) \to \prod_i U_i sending (u_i) to
(u_i) resp (u_i^{-1}) are continuous. A map to a product is continuous
when the induced maps to the factors are. A projection from a project is
continuous, and the identity and inverse are continuous maps U_j^\times \to U_j, and
the maps we're concerned with are composites of these maps and are hence
continuous.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
If M_i are a family of topological monoids equipped with open submonoids
U_i, then the canonical map (\prod'_i M_i)^\times \to \prod'_i(M_i^\times) is a
homeomorphism.
Code for Theorem13.11●1 definition
Associated Lean declarations
-
def ContinuousMulEquiv.restrictedProductUnits.{u_7, u_8, u_9} {ι
Type u_7: Type u_7A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {Mι → Type u_8: ιType u_7→ Type u_8A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(iι: ιType u_7) → MonoidMonoid.{u} (M : Type u) : Type uA `Monoid` is a `Semigroup` with an element `1` such that `1 * a = a * 1 = a`.(Mι → Type u_8iι)] [(iι: ιType u_7) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Mι → Type u_8iι)] [∀ (iι: ιType u_7), ContinuousMulContinuousMul.{u_1} (M : Type u_1) [TopologicalSpace M] [Mul M] : PropBasic hypothesis to talk about a topological monoid or a topological semigroup. A topological monoid over `M`, for example, is obtained by requiring both the instances `Monoid M` and `ContinuousMul M`. Continuity in only the left/right argument can be stated using `ContinuousConstSMul α α`/`ContinuousConstSMul αᵐᵒᵖ α`.(Mι → Type u_8iι)] {Sι → Type u_9: ιType u_7→ Type u_9A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(iι: ιType u_7) → SetLikeSetLike.{u_1, u_2} (A : Type u_1) (B : outParam (Type u_2)) : Type (max u_1 u_2)A class to indicate that there is a canonical injection between `A` and `Set B`. This has the effect of giving terms of `A` elements of type `B` (through a `Membership` instance) and a compatible coercion to `Type*` as a subtype. Note: if `SetLike.coe` is a projection, implementers should create a simp lemma such as ``` @[simp] lemma mem_carrier {p : MySubobject X} : x ∈ p.carrier ↔ x ∈ (p : Set X) := Iff.rfl ``` to normalize terms. If you declare an unbundled subclass of `SetLike`, for example: ``` class MulMemClass (S : Type*) (M : Type*) [Mul M] [SetLike S M] where ... ``` Then you should *not* repeat the `outParam` declaration so `SetLike` will supply the value instead. This ensures your subclass will not have issues with synthesis of the `[Mul M]` parameter starting before the value of `M` is known.(Sι → Type u_9iι) (Mι → Type u_8iι)] [∀ (iι: ιType u_7), SubmonoidClassSubmonoidClass.{u_3, u_4} (S : Type u_3) (M : outParam (Type u_4)) [MulOneClass M] [SetLike S M] : Prop`SubmonoidClass S M` says `S` is a type of subsets `s ≤ M` that contain `1` and are closed under `(*)`(Sι → Type u_9iι) (Mι → Type u_8iι)] (A(i : ι) → S i: (iι: ιType u_7) → Sι → Type u_9iι) (hA∀ (i : ι), IsOpen ↑(A i): ∀ (iι: ιType u_7), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑(A(i : ι) → S iiι)) : (RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Mι → Type u_8iι) (fun iι↦ ↑(A(i : ι) → S iiι)) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`. An element of a `Monoid` is a unit if it has a two-sided inverse. This version bundles the inverse element so that it can be computed. For a predicate see `IsUnit`.≃ₜ*ContinuousMulEquiv.{u, v} (G : Type u) [TopologicalSpace G] (H : Type v) [TopologicalSpace H] [Mul G] [Mul H] : Type (max u v)The structure of two-sided continuous isomorphisms between groups. Note that both the map and its inverse have to be continuous.RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ (Mι → Type u_8iι)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`. An element of a `Monoid` is a unit if it has a two-sided inverse. This version bundles the inverse element so that it can be computed. For a predicate see `IsUnit`.) (fun iι↦ ↑(Submonoid.ofClassSubmonoid.ofClass.{u_3, u_4} {S : Type u_3} {M : Type u_4} [Monoid M] [SetLike S M] [SubmonoidClass S M] (s : S) : Submonoid MThe actual `Submonoid` obtained from an element of a `SubmonoidClass`(A(i : ι) → S iiι)).unitsSubmonoid.units.{u_1} {M : Type u_1} [Monoid M] (S : Submonoid M) : Subgroup MˣThe units of `S`, packaged as a subgroup of `Mˣ`.) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.def ContinuousMulEquiv.restrictedProductUnits.{u_7, u_8, u_9} {ι
Type u_7: Type u_7A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {Mι → Type u_8: ιType u_7→ Type u_8A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(iι: ιType u_7) → MonoidMonoid.{u} (M : Type u) : Type uA `Monoid` is a `Semigroup` with an element `1` such that `1 * a = a * 1 = a`.(Mι → Type u_8iι)] [(iι: ιType u_7) → TopologicalSpaceTopologicalSpace.{u} (X : Type u) : Type uA topology on `X`.(Mι → Type u_8iι)] [∀ (iι: ιType u_7), ContinuousMulContinuousMul.{u_1} (M : Type u_1) [TopologicalSpace M] [Mul M] : PropBasic hypothesis to talk about a topological monoid or a topological semigroup. A topological monoid over `M`, for example, is obtained by requiring both the instances `Monoid M` and `ContinuousMul M`. Continuity in only the left/right argument can be stated using `ContinuousConstSMul α α`/`ContinuousConstSMul αᵐᵒᵖ α`.(Mι → Type u_8iι)] {Sι → Type u_9: ιType u_7→ Type u_9A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [(iι: ιType u_7) → SetLikeSetLike.{u_1, u_2} (A : Type u_1) (B : outParam (Type u_2)) : Type (max u_1 u_2)A class to indicate that there is a canonical injection between `A` and `Set B`. This has the effect of giving terms of `A` elements of type `B` (through a `Membership` instance) and a compatible coercion to `Type*` as a subtype. Note: if `SetLike.coe` is a projection, implementers should create a simp lemma such as ``` @[simp] lemma mem_carrier {p : MySubobject X} : x ∈ p.carrier ↔ x ∈ (p : Set X) := Iff.rfl ``` to normalize terms. If you declare an unbundled subclass of `SetLike`, for example: ``` class MulMemClass (S : Type*) (M : Type*) [Mul M] [SetLike S M] where ... ``` Then you should *not* repeat the `outParam` declaration so `SetLike` will supply the value instead. This ensures your subclass will not have issues with synthesis of the `[Mul M]` parameter starting before the value of `M` is known.(Sι → Type u_9iι) (Mι → Type u_8iι)] [∀ (iι: ιType u_7), SubmonoidClassSubmonoidClass.{u_3, u_4} (S : Type u_3) (M : outParam (Type u_4)) [MulOneClass M] [SetLike S M] : Prop`SubmonoidClass S M` says `S` is a type of subsets `s ≤ M` that contain `1` and are closed under `(*)`(Sι → Type u_9iι) (Mι → Type u_8iι)] (A(i : ι) → S i: (iι: ιType u_7) → Sι → Type u_9iι) (hA∀ (i : ι), IsOpen ↑(A i): ∀ (iι: ιType u_7), IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑(A(i : ι) → S iiι)) : (RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ Mι → Type u_8iι) (fun iι↦ ↑(A(i : ι) → S iiι)) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`. An element of a `Monoid` is a unit if it has a two-sided inverse. This version bundles the inverse element so that it can be computed. For a predicate see `IsUnit`.≃ₜ*ContinuousMulEquiv.{u, v} (G : Type u) [TopologicalSpace G] (H : Type v) [TopologicalSpace H] [Mul G] [Mul H] : Type (max u v)The structure of two-sided continuous isomorphisms between groups. Note that both the map and its inverse have to be continuous.RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun iι↦ (Mι → Type u_8iι)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`. An element of a `Monoid` is a unit if it has a two-sided inverse. This version bundles the inverse element so that it can be computed. For a predicate see `IsUnit`.) (fun iι↦ ↑(Submonoid.ofClassSubmonoid.ofClass.{u_3, u_4} {S : Type u_3} {M : Type u_4} [Monoid M] [SetLike S M] [SubmonoidClass S M] (s : S) : Submonoid MThe actual `Submonoid` obtained from an element of a `SubmonoidClass`(A(i : ι) → S iiι)).unitsSubmonoid.units.{u_1} {M : Type u_1} [Monoid M] (S : Submonoid M) : Subgroup MˣThe units of `S`, packaged as a subgroup of `Mˣ`.) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.The monoid homeomorphism between the units of a restricted product of topological monoids and the restricted product of the units of the monoids, when the products are with respect to open submonoids.
Lemma 13.10
If
If U_i are topological monoids then the canonical group isomorphism
(\prod_i U_i)^\times = \prod_i (U_i^\times) is a homeomorphism.M is a topological monoid and U is an open submonoid, then the units
U^\times of U are naturally an open subgroup of M^\times.X and Y of
the identity elements on each side such that the map induces a homeomorphism
from X to Y. We choose the units of \prod_i U_i and the product
\prod_i(U_iˣ). Note that the former is open because of
Submonoid.units_isOpen. The result now follows from the previous lemma
ContinuousMulEquiv.piUnits.
We could work over a general nonarchimedean normed field but we still do not have them
in mathlib, so we stick to the case of interest which is the completion of a number
field K at a finite place v. Such a completion is a topological field K_v
equipped with a discrete valuation, a ring of integers \calO_v having a principal
maximal ideal (\varpi), and a finite residue field k_v := \calO_v/(\varpi).
There is no formal Lean code for the lemmas in this section; it would seem more sensible to prove them in the right generality, and we don't have a definition of nonarchimedean local field yet.
13.5. Some local theory
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
NumberField.isOpenAdicCompletionIntegers[complete]
\calO_v is an open subring of K_v.
Code for Lemma13.12●1 theorem
Associated Lean declarations
-
NumberField.isOpenAdicCompletionIntegers[complete]
-
NumberField.isOpenAdicCompletionIntegers[complete]
-
theorem NumberField.isOpenAdicCompletionIntegers.{u_1} (K
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.KType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.KType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers K): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.KType u_1)) : IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegersIsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers.{u_1, u_2} {R : Type u_1} [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] (v : IsDedekindDomain.HeightOneSpectrum R) : ValuationSubring (IsDedekindDomain.HeightOneSpectrum.adicCompletion K v)The ring of integers of `adicCompletion`.KType u_1vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers K))theorem NumberField.isOpenAdicCompletionIntegers.{u_1} (K
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.KType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.KType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers K): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.KType u_1)) : IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`↑(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegersIsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers.{u_1, u_2} {R : Type u_1} [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] (v : IsDedekindDomain.HeightOneSpectrum R) : ValuationSubring (IsDedekindDomain.HeightOneSpectrum.adicCompletion K v)The ring of integers of `adicCompletion`.KType u_1vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers K))
Openness is already in mathlib.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
\calO_v is a compact subring of K_v.
Code for Lemma13.13●1 theorem
Associated Lean declarations
-
theorem NumberField.instCompactSpaceAdicCompletionIntegers.{u_1} (K
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.KType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.KType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers K): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.KType u_1)) : CompactSpaceCompactSpace.{u_1} (X : Type u_1) [TopologicalSpace X] : PropType class for compact spaces. Separation is sometimes included in the definition, especially in the French literature, but we do not include it here.↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegersIsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers.{u_1, u_2} {R : Type u_1} [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] (v : IsDedekindDomain.HeightOneSpectrum R) : ValuationSubring (IsDedekindDomain.HeightOneSpectrum.adicCompletion K v)The ring of integers of `adicCompletion`.KType u_1vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers K))theorem NumberField.instCompactSpaceAdicCompletionIntegers.{u_1} (K
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.KType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.KType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers K): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.KType u_1)) : CompactSpaceCompactSpace.{u_1} (X : Type u_1) [TopologicalSpace X] : PropType class for compact spaces. Separation is sometimes included in the definition, especially in the French literature, but we do not include it here.↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegersIsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers.{u_1, u_2} {R : Type u_1} [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] (v : IsDedekindDomain.HeightOneSpectrum R) : ValuationSubring (IsDedekindDomain.HeightOneSpectrum.adicCompletion K v)The ring of integers of `adicCompletion`.KType u_1vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers K))
Compactness lies a little deeper because it assumes that the residue field of
K_v is finite.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
M_2(\calO_v) is an open subring of M_2(K_v).
Code for Lemma13.14●1 theorem
Associated Lean declarations
-
theorem IsDedekindDomain.M2.localFullLevel.isOpen.{u_1} {F
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.FType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.FType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.FType u_1)) : IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(IsDedekindDomain.M2.localFullLevelIsDedekindDomain.M2.localFullLevel.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) : Subring (Matrix (Fin 2) (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v))`M_2(O_v)` as a subring of `M_2(F_v)`.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)).carrierSubsemigroup.carrier.{u_3} {M : Type u_3} [Mul M] (self : Subsemigroup M) : Set MThe carrier of a subsemigroup.theorem IsDedekindDomain.M2.localFullLevel.isOpen.{u_1} {F
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.FType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.FType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.FType u_1)) : IsOpenIsOpen.{u} {X : Type u} [TopologicalSpace X] : Set X → Prop`IsOpen s` means that `s` is open in the ambient topological space on `X`(IsDedekindDomain.M2.localFullLevelIsDedekindDomain.M2.localFullLevel.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) : Subring (Matrix (Fin 2) (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v))`M_2(O_v)` as a subring of `M_2(F_v)`.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)).carrierSubsemigroup.carrier.{u_3} {M : Type u_3} [Mul M] (self : Subsemigroup M) : Set MThe carrier of a subsemigroup.
Topologically
M_2(\calO_v) \cong \calO_v^4 as a subset of K_v^4, so this
follows from Lemma 13.12\calO_v is an open subring of K_v.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
M_2(\calO_v) is a compact subring of M_2(K_v).
Code for Lemma13.15●1 theorem
Associated Lean declarations
-
theorem IsDedekindDomain.M2.localFullLevel.isCompact.{u_1} {F
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.FType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.FType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.FType u_1)) : IsCompactIsCompact.{u_1} {X : Type u_1} [TopologicalSpace X] (s : Set X) : PropA set `s` is compact if for every nontrivial filter `f` that contains `s`, there exists `a ∈ s` such that every set of `f` meets every neighborhood of `a`.(IsDedekindDomain.M2.localFullLevelIsDedekindDomain.M2.localFullLevel.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) : Subring (Matrix (Fin 2) (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v))`M_2(O_v)` as a subring of `M_2(F_v)`.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)).carrierSubsemigroup.carrier.{u_3} {M : Type u_3} [Mul M] (self : Subsemigroup M) : Set MThe carrier of a subsemigroup.theorem IsDedekindDomain.M2.localFullLevel.isCompact.{u_1} {F
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.FType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.FType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.FType u_1)) : IsCompactIsCompact.{u_1} {X : Type u_1} [TopologicalSpace X] (s : Set X) : PropA set `s` is compact if for every nontrivial filter `f` that contains `s`, there exists `a ∈ s` such that every set of `f` meets every neighborhood of `a`.(IsDedekindDomain.M2.localFullLevelIsDedekindDomain.M2.localFullLevel.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) : Subring (Matrix (Fin 2) (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v))`M_2(O_v)` as a subring of `M_2(F_v)`.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)).carrierSubsemigroup.carrier.{u_3} {M : Type u_3} [Mul M] (self : Subsemigroup M) : Set MThe carrier of a subsemigroup.
Theorem 9.1
If K is a number field and v is a nonzero prime ideal of the integers of K,
then the integers of K_v is a compact open subgroup.M_2(\calO_v) \cong \calO_v^4 as a subset of K_v^4, so this
follows from theorem Theorem 9.1
because a product of compacts is compact and a product of opens is open.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
- No associated Lean code or declarations.
GL_2(\calO_v) is a compact open subgroup of GL_2(K_v).
Lemma 13.16
If GL_2(\calO_v) is a compact open subgroup of GL_2(K_v).K_v is known to be Hausdorff, so M_2(K_v) is Hausdorff and the result
follows from Lemma 13.8 and
Lemma 13.9M is a Hausdorff topological monoid and U is a compact submonoid, then
the units U^\times of U are naturally a compact subgroup of M^\times.
Recall that there is a projection \calO_v \to k_v where k_v is the
residue field of v, a finite field. This induces a ring homomorphism
M_2(\calO_v) \to M_2(k_v) with kernel M_2(\varpi\calO_v), an ideal
I of M_2(\calO_v) isomorphic to (\varpi\calO_v)^4 and hence also
compact and open.
Say \Gamma_v is a subgroup of GL_2(k_v). Then \Gamma_v is finite.
Consider it as a submonoid of the multiplicative monoid M_2(k_v). Its
preimage U_v in M_2(\calO_v) is easily checked to be a submonoid of
M_2(\calO_v); furthermore it is a finite union of cosets of I and is
hence compact and open as a submonoid of M_2(\calO_v) and hence of
M_2(K_v).
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
- No associated Lean code or declarations.
U_v is a compact open subgroup of GL_2(K_v).
Γ_v is a group and hence its preimage U_v is a subgroup of the monoid
M_2(K_v). It is compact and open as we just saw. Hence its units (also
U_v) are a subgroup of GL_2(K_v), which is compact and open, again by
Lemma 13.8 and
Lemma 13.9.
Say now \begin{pmatrix}1&*\\0&1\end{pmatrix}\subseteq\Gamma_v\subseteq\begin{pmatrix}*&*\\0&*\end{pmatrix}
and let U:=U_v be its preimage in GL_2(\calO_v), considered as a compact open subgroup
of GL_2(K_v). Choose 0\not=\alpha\in\calO_v and define
g=\begin{pmatrix}\alpha&0\\0&1\end{pmatrix}\in GL_2(K_v). Let's do an explicit
double coset decomposition in preparation for a calculation with Hecke operators.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
The double coset space UgU is the disjoint union of g_tU as t ranges
through \calO_v/\alpha\calO_v and g_t:=\begin{pmatrix}\alpha&\tilde{t}\\0&1\end{pmatrix},
where \tilde{t} is any lift of t to \calO_v.
Code for Lemma13.18●1 theorem
Associated Lean declarations
-
theorem TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.bijOn_unipotent_mul_diagU1_U1diagU1.{u_1} {F
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.FType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.FType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.FType u_1)) (α↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v): ↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegersIsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers.{u_1, u_2} {R : Type u_1} [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] (v : IsDedekindDomain.HeightOneSpectrum R) : ValuationSubring (IsDedekindDomain.HeightOneSpectrum.adicCompletion K v)The ring of integers of `adicCompletion`.FType u_1vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F))) (hαα ≠ 0: α↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) : Set.BijOnSet.BijOn.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) (t : Set β) : Prop`f` is bijective from `s` to `t` if `f` is injective on `s` and `f '' s = t`.(TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.unipotent_mul_diagU1TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.unipotent_mul_diagU1.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) (α : ↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)) (hα : α ≠ 0) (t : ↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v) ⧸ Ideal.span {α}) : GL (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v) ⧸ TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.U1 vFor each `t ∈ O_v / αO_v`, the left coset `unipotent_mul_diag U1` for a lift of t to `O_v`.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)α↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)hαα ≠ 0) ⊤Top.top.{u_1} {α : Type u_1} [self : Top α] : αThe top (`⊤`, `\top`) element Conventions for notations in identifiers: * The recommended spelling of `⊤` in identifiers is `top`.(TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.U1diagU1TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.U1diagU1.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) (α : ↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)) (hα : α ≠ 0) : Set (GL (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v) ⧸ TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.U1 v)The double coset space `U1 diag U1` as a set of left cosets.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)α↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)hαα ≠ 0)theorem TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.bijOn_unipotent_mul_diagU1_U1diagU1.{u_1} {F
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.FType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.FType u_1] (vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F): IsDedekindDomain.HeightOneSpectrumIsDedekindDomain.HeightOneSpectrum.{u_1} (R : Type u_1) [CommRing R] : Type u_1The height one prime spectrum of a Dedekind domain `R` is the type of nonzero prime ideals of `R`. Note that this equals the maximal spectrum if `R` has Krull dimension 1.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.FType u_1)) (α↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v): ↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegersIsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers.{u_1, u_2} {R : Type u_1} [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] (v : IsDedekindDomain.HeightOneSpectrum R) : ValuationSubring (IsDedekindDomain.HeightOneSpectrum.adicCompletion K v)The ring of integers of `adicCompletion`.FType u_1vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F))) (hαα ≠ 0: α↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) : Set.BijOnSet.BijOn.{u, v} {α : Type u} {β : Type v} (f : α → β) (s : Set α) (t : Set β) : Prop`f` is bijective from `s` to `t` if `f` is injective on `s` and `f '' s = t`.(TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.unipotent_mul_diagU1TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.unipotent_mul_diagU1.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) (α : ↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)) (hα : α ≠ 0) (t : ↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v) ⧸ Ideal.span {α}) : GL (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v) ⧸ TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.U1 vFor each `t ∈ O_v / αO_v`, the left coset `unipotent_mul_diag U1` for a lift of t to `O_v`.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)α↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)hαα ≠ 0) ⊤Top.top.{u_1} {α : Type u_1} [self : Top α] : αThe top (`⊤`, `\top`) element Conventions for notations in identifiers: * The recommended spelling of `⊤` in identifiers is `top`.(TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.U1diagU1TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.U1diagU1.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) (α : ↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)) (hα : α ≠ 0) : Set (GL (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v) ⧸ TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm.HeckeOperator.Local.U1 v)The double coset space `U1 diag U1` as a set of left cosets.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)α↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers F v)hαα ≠ 0)The double coset space `U1diagU1` is the disjoint union of `unipotent_mul_diagU1` as t ranges over `O_v / αO_v`.
We first manipulate the statement into a statement about finite groups.
We have UgU=\coprod_t g_tU\iff UgUg^{-1}=\coprod_t g_tUg^{-1}=\coprod_t g_tg^{-1}(gUg^{-1}).
By the second isomorphism theorem this is true if
U=\coprod_t g_tg^{-1}(gUg^{-1}\cap U). So when is an element of U
in gUg^{-1}? Equivalently, if x\in U, when is g^{-1}xg\in U? An explicit calculation
of matrices shows us that this is true iff g=\begin{pmatrix} a&b\\c&d\end{pmatrix} with
\alpha\mid b. Define U^\alpha to be this subgroup of U. We have reduced the question
to showing that the matrices h_t:=\begin{pmatrix}1&\tilde{t}\\0&1\end{pmatrix}
are a set of left coset representatives for the subgroup U^\alpha of U.
It thus suffices to show that if u=\begin{pmatrix} a&b\\c&d\end{pmatrix}\in U
then u\in h_tU^\alpha iff b\in\calO_v reduces mod \alpha to t\in\calO_v/\alpha.
We do this by computing h_t^{-1}u=\begin{pmatrix} a-\tilde{t}c&b-\tilde{t}d\\c&d\end{pmatrix}
and observing that its top right hand entry mod~\alpha is zero iff b mod \alpha is t.
13.6. Adelic groups
We are finally ready to discuss the group G and the subgroups U which we will be
using to define our Hecke operators. Let K be a number field, let D a quaternion algebra
over K and let A_K^\infty be the finite adeles of K; recall that this is a commutative
topological ring, defined to be the restricted
product of the commutative topological fields K_v as v runs through the finite places
of K, with respect to the compact open subrings \calO_v.
The group~$G$ we are interested in for the rest of this miniproject is the group $(DotimesKAK^infty)^times$. We want to write down compact open subgroups of this group, but the first thing we need to do is to find a way of talking about elements of the group.
We will assume that there exists an \A_K^\infty-algebra isomorphism
D\otimes_K\A_K^\infty=M_2(\A_K^\infty) and we will fix such an
isomorphism r, called a rigidification in the Lean code. We give both of
these \A_K^\infty-algebras the \A_K^\infty-module topology, which is a
fancy way of saying the product topology. They are both free of rank 4 as
\A_K^\infty-modules, and the rigidification is then a homeomorphism because
all \A_K^\infty-module maps between modules with the
\A_K^\infty-module topology are continuous.
This means that our group~$G$ is isomorphic (both algebraically and topologically) to $GL2(AK^infty)$. Before we go any further, let say something about matrix rings over complete fields.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
G is isomorphic and homeomorphic to the restricted product of GL₂(K_v) with respect
to the compact open subgroups GL₂(\mathcal{O}_v).
Code for Theorem13.19●1 definition
Associated Lean declarations
-
def IsDedekindDomain.FiniteAdeleRing.GL2.restrictedProduct.{u_1} {F
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.FType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.FType u_1] : 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.2) (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`.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.FType u_1) FType u_1) ≃ₜ*ContinuousMulEquiv.{u, v} (G : Type u) [TopologicalSpace G] (H : Type v) [TopologicalSpace H] [Mul G] [Mul H] : Type (max u v)The structure of two-sided continuous isomorphisms between groups. Note that both the map and its inverse have to be continuous.RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)↦ 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.2) (IsDedekindDomain.HeightOneSpectrum.adicCompletionIsDedekindDomain.HeightOneSpectrum.adicCompletion.{u_1, u_2} {R : Type u_1} [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] (v : IsDedekindDomain.HeightOneSpectrum R) : Type u_2The completion of `K` with respect to its `v`-adic valuation.FType u_1vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F))) (fun vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)↦ ↑(IsDedekindDomain.M2.localFullLevelIsDedekindDomain.M2.localFullLevel.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) : Subring (Matrix (Fin 2) (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v))`M_2(O_v)` as a subring of `M_2(F_v)`.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)).unitsSubmonoid.units.{u_1} {M : Type u_1} [Monoid M] (S : Submonoid M) : Subgroup MˣThe units of `S`, packaged as a subgroup of `Mˣ`.) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.def IsDedekindDomain.FiniteAdeleRing.GL2.restrictedProduct.{u_1} {F
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FieldField.{u} (K : Type u) : Type uA `Field` is a `CommRing` with multiplicative inverses for nonzero elements. An instance of `Field K` includes maps `ratCast : ℚ → K` and `qsmul : ℚ → K → K`. Those two fields are needed to implement the `DivisionRing K → Algebra ℚ K` instance since we need to control the specific definitions for some special cases of `K` (in particular `K = ℚ` itself). See also note [forgetful inheritance]. If the field has positive characteristic `p`, our division by zero convention forces `ratCast (1 / p) = 1 / 0 = 0`.FType u_1] [NumberFieldNumberField.{u_1} (K : Type u_1) [Field K] : PropA number field is a field which has characteristic zero and is finite dimensional over ℚ.FType u_1] : 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.2) (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`.(NumberField.RingOfIntegersNumberField.RingOfIntegers.{u_1} (K : Type u_1) [Field K] : Type u_1The ring of integers (or number ring) corresponding to a number field is the integral closure of ℤ in the number field. This is defined as its own type, rather than a `Subalgebra`, for performance reasons: looking for instances of the form `SMul (RingOfIntegers _) (RingOfIntegers _)` makes much more effective use of the discrimination tree than instances of the form `SMul (Subtype _) (Subtype _)`. The drawback is we have to copy over instances manually.FType u_1) FType u_1) ≃ₜ*ContinuousMulEquiv.{u, v} (G : Type u) [TopologicalSpace G] (H : Type v) [TopologicalSpace H] [Mul G] [Mul H] : Type (max u v)The structure of two-sided continuous isomorphisms between groups. Note that both the map and its inverse have to be continuous.RestrictedProductRestrictedProduct.{u_1, u_2} {ι : Type u_1} (R : ι → Type u_2) (A : (i : ι) → Set (R i)) (𝓕 : Filter ι) : Type (max u_1 u_2)The **restricted product** of a family `R : ι → Type*` of types, relative to subsets `A : (i : ι) → Set (R i)` and the filter `𝓕 : Filter ι`, is the set of all `x : Π i, R i` such that the set `{j | x j ∈ A j}` belongs to `𝓕`. We denote it by `Πʳ i, [R i, A i]_[𝓕]`. The most common use case is with `𝓕 = cofinite`, in which case the restricted product is the set of all `x : Π i, R i` such that `x j ∈ A j` for all but finitely many `j`. We denote it simply by `Πʳ i, [R i, A i]`. Similarly, if `S` is a principal filter, the restricted product `Πʳ i, [R i, A i]_[𝓟 s]` is the set of all `x : Π i, R i` such that `∀ j ∈ S, x j ∈ A j`.(fun vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)↦ 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.2) (IsDedekindDomain.HeightOneSpectrum.adicCompletionIsDedekindDomain.HeightOneSpectrum.adicCompletion.{u_1, u_2} {R : Type u_1} [CommRing R] [IsDedekindDomain R] (K : Type u_2) [Field K] [Algebra R K] [IsFractionRing R K] (v : IsDedekindDomain.HeightOneSpectrum R) : Type u_2The completion of `K` with respect to its `v`-adic valuation.FType u_1vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F))) (fun vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)↦ ↑(IsDedekindDomain.M2.localFullLevelIsDedekindDomain.M2.localFullLevel.{u_1} {F : Type u_1} [Field F] [NumberField F] (v : IsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)) : Subring (Matrix (Fin 2) (Fin 2) (IsDedekindDomain.HeightOneSpectrum.adicCompletion F v))`M_2(O_v)` as a subring of `M_2(F_v)`.vIsDedekindDomain.HeightOneSpectrum (NumberField.RingOfIntegers F)).unitsSubmonoid.units.{u_1} {M : Type u_1} [Monoid M] (S : Submonoid M) : Subgroup MˣThe units of `S`, packaged as a subgroup of `Mˣ`.) Filter.cofiniteFilter.cofinite.{u_2} {α : Type u_2} : Filter αThe cofinite filter is the filter of subsets whose complements are finite.`GL_2(𝔸_F^∞)` is isomorphic and homeomorphic to the restricted product of the local components `GL_2(F_v)`.
Theorem 13.11
If
If M_i are a family of topological monoids equipped with open submonoids
U_i, then the canonical map (\prod'_i M_i)^\times \to \prod'_i(M_i^\times) is a
homeomorphism.X_i are topological spaces and the Y_i are open subspaces, then the
obvious map M_n(\prod'_iX_i)=\prod'_iM_n(X_i) is a homeomorphism.
If S is a finite set of finite places of K, and for each v \in S we choose
a subgroup Γ_v of GL₂(k_v) then we saw in the previous section how to create a
compact open subgroup \tilde{Γ}_v of GL₂(K_v). For v \notin S define
\tilde{Γ}_v = GL₂(\mathcal{O}_v). Then \prod_v \tilde{Γ}_v is a compact open
subgroup of \prod_v GL₂(\mathcal{O}_v). It is compact subgroups of this form
which we shall be using.
13.7. Automorphic forms
We recall some of the definitions of spaces of automorphic forms, from the quaternion algebra project.
We fix a totally real field F, a totally definite quaternion algebra
D/F, and a coefficient additive abelian group R. Set
G = (D \otimes_F \A_F^\infty)^\times as in the previous section. Note that
G naturally contains copies of D^\times and (\A_F^\infty)^\times. Recall from
definition TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicForm that an
R-valued weight 2 automorphic form is a function f : G \to R
satisfying the following axioms:
-
f(dg) = f(g)for alld \in D^\times \subseteq (D \otimes_F \A_F^\infty)^\times. -
There exists a compact open subgroup
U, the level off, such thatf(gu) = f(g)for allg \in Gandu \in U. -
f(gz) = f(g)for allz \in (\A_F^\infty)^\times.
It can be checked that the collection of all such forms is an additive abelian
group, and if R is a ring then it is naturally an R-module. Let's call this
group A for short. Then A has a left action of G, with g \cdot f
defined via (g \cdot f)(x) := f(xg). Recall from
definition TotallyDefiniteQuaternionAlgebra.WeightTwoAutomorphicFormOfLevel that
a weight 2 automorphic form of level U is simply an element of the fixed
points A^U. In other words, the forms of level U are the forms satisfying
the three axioms defining an automorphic form but with the compact open subgroup
in the second axiom being U.
13.8. Concrete Hecke operators
Let F be a number field. For each finite place v we have the completion
F_v of F at v, which is a normed field equipped with its integer
ring \calO_v, a local ring with finite residue field k_v.
For v a finite place of F, let \Delta_v be a subgroup of
k_v^\times and consider the subgroup \Gamma_v of GL_2(k_v)
consisting of matrices \begin{pmatrix}a&b\\0&d\end{pmatrix} with
a,d\in k_v^\times and a/d\in\Delta_v.
It is easily checked that this is a subgroup, and that
\begin{pmatrix}1&*\\0&1\end{pmatrix}\subseteq\Gamma_v\subseteq\begin{pmatrix}*&*\\0&*\end{pmatrix},
so the local double-coset decomposition above applies. Let
U_{\Delta_v} be the preimage of this subgroup in GL_2(\calO_v). This
is a compact open subgroup of GL_2(\calO_v), by the remarks above.
Let S be a finite set of finite places of F, and define U_\Delta(S)
to be the matrices in \prod_v GL_2(\calO_v) which are in U_{\Delta_v}
for all v\in S (we put no condition at the places v\notin S). We can
consider U_\Delta(S) as a subgroup of GL_2(\A_F^\infty); it is a
product of compact subgroups and thus compact, and it is a product of opens
all but finitely many of which are GL_2(\calO_v) and is thus open. Because
the inclusion \prod_v GL_2(\calO_v)\to GL_2(\A_F^\infty) is an open
embedding, we can regard U_\Delta(S) as a compact open subgroup of
GL_2(\A_F^\infty).
If we fix r a rigidification, it induces an isomorphism
GL_2(\A_F^\infty)=(D\otimes_F\A_F^\infty)^\times and so we can identify
U_\Delta(S) with its image in (D\otimes_F\A_F^\infty).
We introduce Hecke operators of two types.
First, for v any place not in S, we choose a uniformiser
\varpi_v\in F_v, form the invertible 2\times 2 matrix
\begin{pmatrix}\varpi_v&0\\0&1\end{pmatrix}\in GL_2(F_v), and extend this
element to an element g\in G by letting its component at all finite places
w\not=v be the identity. We define the Hecke operator
T_v:A^U\to A^U to be [UgU], using the notation defined at the
beginning of this section.
For the second kind of Hecke operator we choose 0\not=\alpha\in\calO_v and
we consider the 2\times 2 matrix in GL_2(\A_K^\infty) which is
\begin{pmatrix}\alpha&0\\0&1\end{pmatrix} at v and 1 at all other
local components. Via the rigidification r we obtain an element g\in G.
We define the Hecke operator U_{v,\alpha} to be [UgU].
The Hecke algebra of interest to us will be generated by the Hecke operators
T_v for v\notin S and U_{v,\alpha} for v\in S.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.21Blueprint label
-
«nolean-product-of-U-alpha»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
- No associated Lean code or declarations.
Say R is a Noetherian ring. Then the subalgebra of the R-linear
endomorphisms of A^U generated by the Hecke operators T_v for v\notin S
and U_{v,\alpha} for v\in S is a Noetherian commutative ring.
13.9. Analysis of the Hecke algebra
First we discuss commutativity of the Hecke operators. First, assume that
v \notin S. Then U = GL₂(\mathcal{O}_v) \times U' where U' is a subgroup
of the restricted product of GL₂(F_w) for w \not=v. We can use
RestrictedProduct.SubmonoidClass.isProductAt to express this concept of being
an internal direct product. If g is the element of G used to make T_v then
g is also supported at w, so the double coset space UgU is just
(GL₂(\mathcal{O}_v)\begin{pmatrix}\varpi&0\\0&1\end{pmatrix}GL₂(\mathcal{O}_v))\times U'
and in particular can be decomposed into single left U-cosets of the form g_iU
where g_i is also supported at v. This is
RestrictedProduct.mem_coset_and_mulSupport_subset_of_isProductAt.
Similarly if v \in S, if 0 \not=\alpha \in \calO_v and if
g_v=\begin{pmatrix}\alpha&0\\0&1\end{pmatrix} and is 1 elsewhere, then the
double coset space UgU can again be written as \coprod_i g_iU with the
g_i supported only at v.
We deduce immediately from AbstractHeckeOperator.comm that two Hecke operators
associated to different finite places of F commute.
What remains is to check that U_{α,v} and U_{β,v} commute. In fact we claim
more, namely that U_{α,v}U_{β,v}=U_{αβ,v}. This will suffice
because αβ=βα.
-
Definition 13.1Blueprint label
-
«AbstractHeckeOperator.HeckeOperator_toFun»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.2Blueprint label
-
«AbstractHeckeOperator.HeckeOperator»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.3Blueprint label
-
«QuotientGroup.mk_image_finite_of_compact_of_open»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.4Blueprint label
-
«AbstractHeckeOperator.comm»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.5Blueprint label
-
«Homeomorph.restrictedProductProd»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.6Blueprint label
-
«Homeomorph.restrictedProductPi»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Corollary 13.7Blueprint label
-
«Homeomorph.restrictedProductMatrix»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.8Blueprint label
-
«Submonoid.units_isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.9Blueprint label
-
«Submonoid.units_isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.10Blueprint label
-
«ContinuousMulEquiv.piUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.11Blueprint label
-
«ContinuousMulEquiv.restrictedProductUnits»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.12Blueprint label
-
«NumberField.isOpenAdicCompletionIntegers»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.13Blueprint label
-
local_integer_ring_compact
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.14Blueprint label
-
«M2.localFullLevel.isOpen»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.15Blueprint label
-
«M2.localFullLevel.isCompact»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.16Blueprint label
-
«nolean-compactopen-GL2»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.17Blueprint label
-
«nolean-compactopen-U1p»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Lemma 13.18Blueprint label
-
bijOn_unipotent_mul_diagU1_U1diagU1
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.19Blueprint label
-
«GL2.restrictedProduct»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
Theorem 13.20Blueprint label
-
«nolean-hecke-algebra-commutative-noetherian»
Group- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
-
-
«AbstractHeckeOperator.HeckeOperator_toFun»
- This miniproject packages the abstract double-coset formalism and then applies it to spaces of automorphic forms.
- No associated Lean code or declarations.
If v\in S and \begin{pmatrix}1&*\\0&1\end{pmatrix}\subseteq\Gamma_v\subseteq\begin{pmatrix}*&*\\0&*\end{pmatrix}
then U_{\alpha,v}U_{\beta,v}=U_{\alpha\beta,v}.
Follows easily from the explicit double coset decomposition proved above.
The reason that the Hecke algebra is Noetherian is that the main theorem of the Fujisaki
miniproject immediately implies that A^G is a submodule of a finite free R-module
and is hence Noetherian. Its endomorphism algebra is hence a Noetherian R-module,
so the sub-R-algebra generated by the Hecke operators is also a Noetherian R-module
and thus a Noetherian ring.