File: Mathlib/RingTheory/DedekindDomain/SelmerGroup.lean

full_name: «_aux_Mathlib_RingTheory_DedekindDomain_SelmerGroup___macroRules_term_/__1_1»
code: local notation K "/" n => Kˣ ⧸ (powMonoidHom n : Kˣ →* Kˣ).range
goal: Lean.Macro

full_name: IsDedekindDomain.HeightOneSpectrum.valuationOfNeZeroToFun
code: /-- The multiplicative `v`-adic valuation on `Kˣ`. -/
def valuationOfNeZeroToFun (x : Kˣ) : Multiplicative ℤ 
goal: Multiplicative ℤ

full_name: IsDedekindDomain.HeightOneSpectrum.valuationOfNeZeroToFun_eq
code: @[simp]
theorem valuationOfNeZeroToFun_eq (x : Kˣ) :
    (v.valuationOfNeZeroToFun x : ℤₘ₀) = v.valuation (x : K) 
goal: ↑(v.valuationOfNeZeroToFun x) = v.valuation ↑x

full_name: IsDedekindDomain.HeightOneSpectrum.valuationOfNeZero
code: /-- The multiplicative `v`-adic valuation on `Kˣ`. -/
def valuationOfNeZero : Kˣ →* Multiplicative ℤ 
goal: Kˣ →* Multiplicative ℤ

full_name: IsDedekindDomain.HeightOneSpectrum.valuationOfNeZero_eq
code: @[simp]
theorem valuationOfNeZero_eq (x : Kˣ) : (v.valuationOfNeZero x : ℤₘ₀) = v.valuation (x : K) 
goal: ↑(v.valuationOfNeZero x) = v.valuation ↑x

full_name: IsDedekindDomain.HeightOneSpectrum.valuation_of_unit_eq
code: @[simp]
theorem valuation_of_unit_eq (x : Rˣ) :
    v.valuationOfNeZero (Units.map (algebraMap R K : R →* K) x) = 1 
goal: v.valuationOfNeZero ((Units.map ↑(algebraMap R K)) x) = 1

full_name: IsDedekindDomain.HeightOneSpectrum.valuationOfNeZeroMod
code: /-- The multiplicative `v`-adic valuation on `Kˣ` modulo `n`-th powers. -/
def valuationOfNeZeroMod (n : ℕ) : (K/n) →* Multiplicative (ZMod n) 
goal: Kˣ ⧸ (powMonoidHom n).range →* Multiplicative (ZMod n)

full_name: IsDedekindDomain.HeightOneSpectrum.valuation_of_unit_mod_eq
code: @[simp]
theorem valuation_of_unit_mod_eq (n : ℕ) (x : Rˣ) :
    v.valuationOfNeZeroMod n (Units.map (algebraMap R K : R →* K) x : K/n) = 1 
goal: (v.valuationOfNeZeroMod n) ↑((Units.map ↑(algebraMap R K)) x) = 1

full_name: IsDedekindDomain.selmerGroup
code: /-- The Selmer group `K⟮S, n⟯`. -/
def selmerGroup : Subgroup <| K/n 
goal: Subgroup (Kˣ ⧸ (powMonoidHom n).range)

full_name: IsDedekindDomain.«_aux_Mathlib_RingTheory_DedekindDomain_SelmerGroup___macroRules_IsDedekindDomain_term_⟮_,_⟯_1»
code: local notation K "⟮" S "," n "⟯" => @selmerGroup _ _ _ K _ _ _ S n
goal: Lean.Macro

full_name: IsDedekindDomain.selmerGroup.monotone
code: theorem monotone (hS : S ≤ S') : K⟮S,n⟯ ≤ K⟮S',n⟯ 
goal: IsDedekindDomain.selmerGroup ≤ IsDedekindDomain.selmerGroup

full_name: IsDedekindDomain.selmerGroup.valuation
code: /-- The multiplicative `v`-adic valuations on `K⟮S, n⟯` for all `v ∈ S`. -/
def valuation : K⟮S,n⟯ →* S → Multiplicative (ZMod n) 
goal: ↥IsDedekindDomain.selmerGroup →* ↑S → Multiplicative (ZMod n)

full_name: IsDedekindDomain.selmerGroup.valuation_ker_eq
code: theorem valuation_ker_eq :
    valuation.ker = K⟮(∅ : Set <| HeightOneSpectrum R),n⟯.subgroupOf (K⟮S,n⟯) 
goal: IsDedekindDomain.selmerGroup.valuation.ker = IsDedekindDomain.selmerGroup.subgroupOf IsDedekindDomain.selmerGroup

full_name: IsDedekindDomain.selmerGroup.fromUnit
code: /-- The natural homomorphism from `Rˣ` to `K⟮∅, n⟯`. -/
def fromUnit {n : ℕ} : Rˣ →* K⟮(∅ : Set <| HeightOneSpectrum R),n⟯ 
goal: Rˣ →* ↥IsDedekindDomain.selmerGroup

full_name: IsDedekindDomain.selmerGroup.fromUnit_ker
code: theorem fromUnit_ker [hn : Fact <| 0 < n] :
    (@fromUnit R _ _ K _ _ _ n).ker = (powMonoidHom n : Rˣ →* Rˣ).range 
goal: IsDedekindDomain.selmerGroup.fromUnit.ker = (powMonoidHom n).range

full_name: IsDedekindDomain.selmerGroup.fromUnitLift
code: /-- The injection induced by the natural homomorphism from `Rˣ` to `K⟮∅, n⟯`. -/
def fromUnitLift [Fact <| 0 < n] : (R/n) →* K⟮(∅ : Set <| HeightOneSpectrum R),n⟯ 
goal: Rˣ ⧸ (powMonoidHom n).range →* ↥IsDedekindDomain.selmerGroup

full_name: IsDedekindDomain.selmerGroup.fromUnitLift_injective
code: theorem fromUnitLift_injective [Fact <| 0 < n] :
    Function.Injective <| @fromUnitLift R _ _ K _ _ _ n _ 
goal: Function.Injective ⇑IsDedekindDomain.selmerGroup.fromUnitLift