File: Mathlib/RingTheory/DedekindDomain/FiniteAdeleRing.lean

full_name: DedekindDomain.FiniteIntegralAdeles
code: /-- The product of all `adicCompletionIntegers`, where `v` runs over the maximal ideals of `R`. -/
def FiniteIntegralAdeles : Type _ 
goal: Type (max u_1 u_2)

full_name: DedekindDomain.instCommRingFiniteIntegralAdeles
code: instance : CommRing (FiniteIntegralAdeles R K) 
goal: CommRing (DedekindDomain.FiniteIntegralAdeles R K)

full_name: DedekindDomain.instTopologicalSpaceFiniteIntegralAdeles
code: instance : TopologicalSpace (FiniteIntegralAdeles R K) 
goal: TopologicalSpace (DedekindDomain.FiniteIntegralAdeles R K)

full_name: DedekindDomain.instTopologicalRingFiniteIntegralAdeles
code: instance : TopologicalRing (FiniteIntegralAdeles R K) 
goal: TopologicalRing (DedekindDomain.FiniteIntegralAdeles R K)

full_name: DedekindDomain.instInhabitedFiniteIntegralAdeles
code: instance : Inhabited (FiniteIntegralAdeles R K) 
goal: Inhabited (DedekindDomain.FiniteIntegralAdeles R K)

full_name: DedekindDomain._aux_Mathlib_RingTheory_DedekindDomain_FiniteAdeleRing___unexpand_DedekindDomain_FiniteIntegralAdeles_1
code: local notation "R_hat" => FiniteIntegralAdeles
goal: Lean.PrettyPrinter.Unexpander

full_name: DedekindDomain._aux_Mathlib_RingTheory_DedekindDomain_FiniteAdeleRing___macroRules_DedekindDomain_termR_hat_1
code: local notation "R_hat" => FiniteIntegralAdeles
goal: Lean.Macro

full_name: DedekindDomain.ProdAdicCompletions
code: /-- The product of all `adicCompletion`, where `v` runs over the maximal ideals of `R`. -/
def ProdAdicCompletions 
goal: Type (max u_1 u_2)

full_name: DedekindDomain.instNonUnitalNonAssocRingProdAdicCompletions
code: instance : NonUnitalNonAssocRing (ProdAdicCompletions R K) 
goal: NonUnitalNonAssocRing (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.instTopologicalSpaceProdAdicCompletions
code: instance : TopologicalSpace (ProdAdicCompletions R K) 
goal: TopologicalSpace (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.instTopologicalRingProdAdicCompletions
code: instance : TopologicalRing (ProdAdicCompletions R K) 
goal: TopologicalRing (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.instCommRingProdAdicCompletions
code: instance : CommRing (ProdAdicCompletions R K) 
goal: CommRing (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.instInhabitedProdAdicCompletions
code: instance : Inhabited (ProdAdicCompletions R K) 
goal: Inhabited (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain._aux_Mathlib_RingTheory_DedekindDomain_FiniteAdeleRing___macroRules_DedekindDomain_termK_hat_1
code: local notation "K_hat" => ProdAdicCompletions
goal: Lean.Macro

full_name: DedekindDomain._aux_Mathlib_RingTheory_DedekindDomain_FiniteAdeleRing___unexpand_DedekindDomain_ProdAdicCompletions_1
code: local notation "K_hat" => ProdAdicCompletions
goal: Lean.PrettyPrinter.Unexpander

full_name: DedekindDomain.FiniteIntegralAdeles.instCoeProdAdicCompletions
code: noncomputable instance : Coe (R_hat R K) (K_hat R K) 
goal: Coe (DedekindDomain.FiniteIntegralAdeles R K) (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.FiniteIntegralAdeles.coe_apply
code: theorem coe_apply (x : R_hat R K) (v : HeightOneSpectrum R) : (x : K_hat R K) v = ↑(x v) 
goal: (fun v => ↑(x v)) v = ↑(x v)

full_name: DedekindDomain.FiniteIntegralAdeles.Coe.addMonoidHom
code: /-- The inclusion of `R_hat` in `K_hat` as a homomorphism of additive monoids. -/
@[simps]
def Coe.addMonoidHom : AddMonoidHom (R_hat R K) (K_hat R K) 
goal: DedekindDomain.FiniteIntegralAdeles R K →+ DedekindDomain.ProdAdicCompletions R K

full_name: DedekindDomain.FiniteIntegralAdeles.Coe.addMonoidHom_apply
code: /-- The inclusion of `R_hat` in `K_hat` as a homomorphism of additive monoids. -/
@[simps]
def Coe.addMonoidHom : AddMonoidHom (R_hat R K) (K_hat R K) 
goal: (DedekindDomain.FiniteIntegralAdeles.Coe.addMonoidHom R K) x v = ↑(x v)

full_name: DedekindDomain.FiniteIntegralAdeles.Coe.ringHom_apply
code: /-- The inclusion of `R_hat` in `K_hat` as a ring homomorphism. -/
@[simps]
def Coe.ringHom : RingHom (R_hat R K) (K_hat R K) 
goal: (DedekindDomain.FiniteIntegralAdeles.Coe.ringHom R K) x v = ↑(x v)

full_name: DedekindDomain.FiniteIntegralAdeles.Coe.ringHom
code: /-- The inclusion of `R_hat` in `K_hat` as a ring homomorphism. -/
@[simps]
def Coe.ringHom : RingHom (R_hat R K) (K_hat R K) 
goal: DedekindDomain.FiniteIntegralAdeles R K →+* DedekindDomain.ProdAdicCompletions R K

full_name: DedekindDomain.instAlgebraProdAdicCompletions
code: instance : Algebra K (K_hat R K) 
goal: Algebra K (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.ProdAdicCompletions.algebraMap_apply'
code: @[simp]
lemma ProdAdicCompletions.algebraMap_apply' (k : K) :
    algebraMap K (K_hat R K) k v = (k : v.adicCompletion K) 
goal: (algebraMap K (DedekindDomain.ProdAdicCompletions R K)) k v = ↑K k

full_name: DedekindDomain.ProdAdicCompletions.algebra'
code: instance ProdAdicCompletions.algebra' : Algebra R (K_hat R K) 
goal: Algebra R (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.ProdAdicCompletions.algebraMap_apply
code: @[simp]
lemma ProdAdicCompletions.algebraMap_apply (r : R) :
    algebraMap R (K_hat R K) r v = (algebraMap R K r : v.adicCompletion K) 
goal: (algebraMap R (DedekindDomain.ProdAdicCompletions R K)) r v = ↑K ((algebraMap R K) r)

full_name: DedekindDomain.instIsScalarTowerProdAdicCompletions
code: instance : IsScalarTower R K (K_hat R K) 
goal: IsScalarTower R K (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.instAlgebraFiniteIntegralAdeles
code: instance : Algebra R (R_hat R K) 
goal: Algebra R (DedekindDomain.FiniteIntegralAdeles R K)

full_name: DedekindDomain.ProdAdicCompletions.algebraCompletions
code: instance ProdAdicCompletions.algebraCompletions : Algebra (R_hat R K) (K_hat R K) 
goal: Algebra (DedekindDomain.FiniteIntegralAdeles R K) (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.ProdAdicCompletions.isScalarTower_completions
code: instance ProdAdicCompletions.isScalarTower_completions : IsScalarTower R (R_hat R K) (K_hat R K) 
goal: IsScalarTower R (DedekindDomain.FiniteIntegralAdeles R K) (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.FiniteIntegralAdeles.Coe.algHom
code: /-- The inclusion of `R_hat` in `K_hat` as an algebra homomorphism. -/
def Coe.algHom : AlgHom R (R_hat R K) (K_hat R K) 
goal: DedekindDomain.FiniteIntegralAdeles R K →ₐ[R] DedekindDomain.ProdAdicCompletions R K

full_name: DedekindDomain.FiniteIntegralAdeles.Coe.algHom_apply
code: theorem Coe.algHom_apply (x : R_hat R K) (v : HeightOneSpectrum R) : (Coe.algHom R K) x v = x v 
goal: (DedekindDomain.FiniteIntegralAdeles.Coe.algHom R K) x v = ↑(x v)

full_name: DedekindDomain.ProdAdicCompletions.IsFiniteAdele
code: /-- An element `x : K_hat R K` is a finite adèle if for all but finitely many height one ideals
  `v`, the component `x v` is a `v`-adic integer. -/
def IsFiniteAdele (x : K_hat R K) 
goal: Prop

full_name: DedekindDomain.ProdAdicCompletions.isFiniteAdele_iff
code: @[simp]
lemma isFiniteAdele_iff (x : K_hat R K) :
    x.IsFiniteAdele ↔ {v | x v ∉ adicCompletionIntegers K v}.Finite 
goal: x.IsFiniteAdele ↔ {v | x v ∉ IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v}.Finite

full_name: DedekindDomain.ProdAdicCompletions.IsFiniteAdele.add
code: /-- The sum of two finite adèles is a finite adèle. -/
theorem add {x y : K_hat R K} (hx : x.IsFiniteAdele) (hy : y.IsFiniteAdele) :
    (x + y).IsFiniteAdele 
goal: (x + y).IsFiniteAdele

full_name: DedekindDomain.ProdAdicCompletions.IsFiniteAdele.zero
code: /-- The tuple `(0)_v` is a finite adèle. -/
theorem zero : (0 : K_hat R K).IsFiniteAdele 
goal: DedekindDomain.ProdAdicCompletions.IsFiniteAdele 0

full_name: DedekindDomain.ProdAdicCompletions.IsFiniteAdele.neg
code: /-- The negative of a finite adèle is a finite adèle. -/
theorem neg {x : K_hat R K} (hx : x.IsFiniteAdele) : (-x).IsFiniteAdele 
goal: (-x).IsFiniteAdele

full_name: DedekindDomain.ProdAdicCompletions.IsFiniteAdele.mul
code: /-- The product of two finite adèles is a finite adèle. -/
theorem mul {x y : K_hat R K} (hx : x.IsFiniteAdele) (hy : y.IsFiniteAdele) :
    (x * y).IsFiniteAdele 
goal: (x * y).IsFiniteAdele

full_name: DedekindDomain.ProdAdicCompletions.IsFiniteAdele.one
code: /-- The tuple `(1)_v` is a finite adèle. -/
theorem one : (1 : K_hat R K).IsFiniteAdele 
goal: DedekindDomain.ProdAdicCompletions.IsFiniteAdele 1

full_name: DedekindDomain.ProdAdicCompletions.IsFiniteAdele.algebraMap'
code: theorem algebraMap' (k : K) : (_root_.algebraMap K (K_hat R K) k).IsFiniteAdele 
goal: ((algebraMap K (DedekindDomain.ProdAdicCompletions R K)) k).IsFiniteAdele

full_name: DedekindDomain.FiniteAdeleRing
code: /-- The finite adèle ring of `R` is the restricted product over all maximal ideals `v` of `R`
of `adicCompletion`, with respect to `adicCompletionIntegers`.

Note that we make this a `Type` rather than a `Subtype` (e.g., a `subalgebra`) since we wish
to endow it with a finer topology than that of the subspace topology. -/
def FiniteAdeleRing : Type _ 
goal: Type (max u_1 u_2)

full_name: DedekindDomain.FiniteAdeleRing.subalgebra
code: /-- The finite adèle ring of `R`, regarded as a `K`-subalgebra of the
product of the local completions of `K`.

Note that this definition exists to streamline the proof that the finite adèles are an algebra
over `K`, rather than to express their relationship to `K_hat R K` which is essentially a
detail of their construction.
-/
def subalgebra : Subalgebra K (K_hat R K) 
goal: Subalgebra K (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.FiniteAdeleRing.instCommRing
code: instance : CommRing (FiniteAdeleRing R K) 
goal: CommRing (DedekindDomain.FiniteAdeleRing R K)

full_name: DedekindDomain.FiniteAdeleRing.instAlgebra
code: instance : Algebra K (FiniteAdeleRing R K) 
goal: Algebra K (DedekindDomain.FiniteAdeleRing R K)

full_name: DedekindDomain.FiniteAdeleRing.instAlgebra_1
code: instance : Algebra R (FiniteAdeleRing R K) 
goal: Algebra R (DedekindDomain.FiniteAdeleRing R K)

full_name: DedekindDomain.FiniteAdeleRing.instIsScalarTower
code: instance : IsScalarTower R K (FiniteAdeleRing R K) 
goal: IsScalarTower R K (DedekindDomain.FiniteAdeleRing R K)

full_name: DedekindDomain.FiniteAdeleRing.instCoeProdAdicCompletions
code: instance : Coe (FiniteAdeleRing R K) (K_hat R K) 
goal: Coe (DedekindDomain.FiniteAdeleRing R K) (DedekindDomain.ProdAdicCompletions R K)

full_name: DedekindDomain.FiniteAdeleRing.ext
code: @[ext]
lemma ext {a₁ a₂ : FiniteAdeleRing R K} (h : (a₁ : K_hat R K) = a₂) : a₁ = a₂ 
goal: a₁ = a₂

full_name: DedekindDomain.FiniteAdeleRing.instAlgebraFiniteIntegralAdeles
code: /-- The finite adele ring is an algebra over the finite integral adeles. -/
instance : Algebra (R_hat R K) (FiniteAdeleRing R K) 
goal: Algebra (DedekindDomain.FiniteIntegralAdeles R K) (DedekindDomain.FiniteAdeleRing R K)

full_name: DedekindDomain.FiniteAdeleRing.instCoeFunForallAdicCompletion
code: instance : CoeFun (FiniteAdeleRing R K)
    (fun _ ↦ ∀ (v : HeightOneSpectrum R), adicCompletion K v) 
goal: CoeFun (DedekindDomain.FiniteAdeleRing R K) fun x =>
  (v : IsDedekindDomain.HeightOneSpectrum R) → IsDedekindDomain.HeightOneSpectrum.adicCompletion K v

full_name: DedekindDomain.FiniteAdeleRing.exists_finiteIntegralAdele_iff
code: lemma exists_finiteIntegralAdele_iff (a : FiniteAdeleRing R K) : (∃ c : R_hat R K,
    a = c) ↔ ∀ (v : HeightOneSpectrum R), a v ∈ adicCompletionIntegers K v 
goal: (∃ c, a = ↑c) ↔
  ∀ (v : IsDedekindDomain.HeightOneSpectrum R),
    (fun v => ↑a v) v ∈ IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v

full_name: DedekindDomain.FiniteAdeleRing.mul_nonZeroDivisor_mem_finiteIntegralAdeles
code: lemma mul_nonZeroDivisor_mem_finiteIntegralAdeles (a : FiniteAdeleRing R K) :
    ∃ (b : R⁰) (c : R_hat R K), a * ((b : R) : FiniteAdeleRing R K) = c 
goal: ∃ b c, a * ↑↑b = ↑c

full_name: DedekindDomain.FiniteAdeleRing.submodulesRingBasis
code: theorem submodulesRingBasis : SubmodulesRingBasis
    (fun (r : R⁰) ↦ Submodule.span (R_hat R K) {((r : R) : FiniteAdeleRing R K)}) 
goal: SubmodulesRingBasis fun r => Submodule.span (DedekindDomain.FiniteIntegralAdeles R K) {↑↑r}

full_name: DedekindDomain.FiniteAdeleRing.instTopologicalSpace
code: instance : TopologicalSpace (FiniteAdeleRing R K) 
goal: TopologicalSpace (DedekindDomain.FiniteAdeleRing R K)