ModuleCyclotomicPrincipalIdele.lean
Nyll.ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicPrincipalIdele
32 declarations indexed from sourceView source ↗ Module documentation
Principal ideles and the rational cyclotomic value
This file isolates the part of the rational principal-idele product formula which follows from the existing archimedean reciprocity API. Every rational idele is split into its archimedean and finite parts. The archimedean part has Artin image of order at most two at every finite layer; the actual Galois group of the rational ZHat-extension is torsion-free, so its image in that extension is trivial.
Consequently the rational cyclotomic value of a principal idele is exactly the value of its finite part. At every finite cyclotomic layer that remaining value is the genuine finite product of the chosen local Artin maps. Proving that product trivial requires a pointwise compatibility theorem between the chosen finite-place Artin map and the explicit cyclotomic action; no such compatibility is assumed here.
Declarations
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicPrimePowerNumberField
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicPrimePowerIsGalois
Source context 6 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicPrimePowerIsAbelianGalois
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
GlobalClassFieldTheory.Reciprocity.cyclotomicPrincipalLevelIsAbelianGalois
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
GlobalClassFieldTheory.Reciprocity.finiteSubfieldOfRationalCyclotomicField_le_level
DocumentationEvery finite subextension of the rational cyclotomic closure is contained in one of its internal finite cyclotomic levels. The proof uses finite generation of the intermediate field together with the divisibility-directed presentation of ℚ(μ∞).
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.finiteSubfieldOfRationalCyclotomicZHatField_mapsIntoLevel
DocumentationEvery finite Galois coordinate of the rational cyclotomic ZHat-extension has a canonical image inside a finite internal cyclotomic level. The image field is retained explicitly so that restriction of actual global Artin automorphisms can be applied in a scalar tower.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicFullRestrictionToZHat_commutes
DocumentationRestriction to the lifted torsion-free cyclotomic field commutes with its canonical inclusion into the full rational cyclotomic field. Keeping this pointwise compatibility separate prevents the finite-coordinate Artin comparison below from accumulating the cost of unfolding the lift.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.restrictNormalHom_eq_of_commuting_square
DocumentationRestriction along the two sides of a commuting tower square gives the same automorphism of the finite bottom field. Keeping the field types abstract makes this a stable interface for concrete inverse-limit fields.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicZHatGlobalArtin_eq_fullRestriction
DocumentationThe infinite Artin automorphism of the actual rational ZHat-field is the restriction of the infinite Artin automorphism of the full rational cyclotomic field. The statement uses the genuine torsion-fixed subfield and its actual lift inside SeparableClosure ℚ.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicZHatIdeleValue_eq_fullCharacterFreePart
DocumentationThe rational cyclotomic idele value is the genuine torsion-free factor of the full cyclotomic character of its infinite Artin symbol.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalIdeleArchimedeanPart
DocumentationThe archimedean part of a rational idele, with all finite components replaced by one.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalIdeleFinitePart
DocumentationThe finite part of a rational idele, with its archimedean component replaced by one.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalIdeleArchimedeanPart_infiniteComponent
DocumentationThe archimedean part preserves every infinite component.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalIdeleArchimedeanPart_finiteComponent
DocumentationEvery finite component of the archimedean part is one.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalIdeleFinitePart_infiniteComponent
DocumentationEvery infinite component of the finite part is one.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalIdeleFinitePart_finiteComponent
DocumentationThe finite part preserves every finite component.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.globalArtinMonoidHom_rationalIdeleFinitePart
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalIdeleArchimedeanPart_mul_finitePart
DocumentationThe archimedean and finite parts multiply back to the original rational idele.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.globalArtinMonoidHom_rationalIdeleArchimedeanPart_sq
DocumentationAt a finite abelian layer, the global Artin image of the archimedean part of a rational idele has order at most two.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicZHatGlobalArtin_rationalIdeleArchimedeanPart
DocumentationThe actual rational ZHat Artin homomorphism kills every idele supported at the archimedean place. The finite-layer images have order at most two, while the inverse-limit Galois group is torsion-free.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicZHatIdeleValue_rationalIdeleArchimedeanPart
DocumentationThe rational cyclotomic value kills the archimedean part of every rational idele.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicZHatIdeleValue_eq_finitePart
DocumentationThe rational cyclotomic value depends only on the finite part of an idele.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicGlobalArtin_restrict_primePowerLevel
DocumentationRestriction of the infinite Artin symbol to a concrete prime-power cyclotomic level is its finite global Artin symbol.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicGlobalArtin_projection_toZModPow
DocumentationApplying the prime-power cyclotomic character to a finite projection of the infinite Artin symbol gives the finite global Artin symbol. This is kept separate from character evaluation so both dependent comparisons elaborate within the default heartbeat budget.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicGlobalArtin_character_toZModPow
DocumentationEvaluating the actual infinite global Artin symbol in the full rational cyclotomic extension at the p ^ k cyclotomic character is exactly the finite global Artin symbol at the internal p ^ k-th cyclotomic level. This is the field-theoretic bridge from the inverse limit Artin map to the explicit cyclotomic character.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicGlobalArtin_character_toZModPow_finitePart
DocumentationAfter removing the archimedean component, the p ^ k coordinate of the full rational cyclotomic Artin character is the genuine finite product of the chosen finite-place Artin maps.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicGlobalArtin_character_toZModPow_finitePart_eq_finprod
DocumentationThe finite-part cyclotomic character is the finprod of the actual chosen local Artin characters. This is the pointwise form into which the p-adic unit formula and the unramified Frobenius formula substitute directly.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.rationalCyclotomicZHatIdeleValue_principalIdele_eq_finitePart
DocumentationPrincipal-idele evaluation reduced to its genuine finite local part.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.restrictNormalHom_rationalCyclotomicZHatGlobalArtin_finitePart
DocumentationAt a finite cyclotomic layer, the Artin image of the finite part of a rational idele is exactly the finite product of the chosen local Artin symbols.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.cyclotomicZHatNormComposite_principalIdele_eq_finitePart
DocumentationThe unnormalized value on a principal idele over a number field is the rational cyclotomic value of the finite part of its field-norm principal idele.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }
GlobalClassFieldTheory.Reciprocity.normalizedCyclotomicZHatIdeleValue_principalIdele_eq_zero_iff_finitePart
DocumentationNormalized principal-idele vanishing is equivalent to the remaining rational finite-part product formula. Thus the only missing input for descent to the idele class group is the finite local cyclotomic compatibility, not an archimedean calculation.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped BigOperators NumberField IsMulCommutative
open NumberField IsDedekindDomain ClassFormation
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
-- Keep the prime-power presentation explicit for canonical instance synthesis.
-- Both structures are the existing canonical cyclotomic-level instances.
local instance rationalCyclotomicPrimePowerNumberField
(p : Nat.Primes) (k : ℕ) :
NumberField
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_numberField
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsGalois
(p : Nat.Primes) (k : ℕ) :
IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
KummerTheory.rationalCyclotomicLevel_isGalois
⟨p.1 ^ k, pow_pos p.2.pos k⟩
local instance rationalCyclotomicPrimePowerIsAbelianGalois
(p : Nat.Primes) (k : ℕ) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩) :=
IsAbelianGalois.of_algHom
(KummerTheory.rationalCyclotomicLevel
⟨p.1 ^ k, pow_pos p.2.pos k⟩).val
local instance (p : Nat.Primes) : Fact p.1.Prime :=
⟨p.2⟩
noncomputable local instance
cyclotomicPrincipalLevelIsAbelianGalois
(m : ℕ+) :
IsAbelianGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) := by
have : IsGalois ℚ
(KummerTheory.rationalCyclotomicLevel m) :=
inferInstance
let e :=
IsCyclotomicExtension.Rat.galEquivZMod
(m : ℕ) (KummerTheory.rationalCyclotomicLevel m)
exact
{ is_comm.comm σ τ := by
apply e.injective
simp only [map_mul]
exact mul_comm _ _ }