diff --git a/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusGeometry.lean b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusGeometry.lean index ba13223..d57b89f 100644 --- a/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusGeometry.lean +++ b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusGeometry.lean @@ -4,19 +4,12 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.Construction.MainNaturality -import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.Construction.DoubleCosetOrbitGeometry -set_option autoImplicit false +import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.Construction.MainTransferNormOrbitMk -/-! -# Transfer--norm Frobenius geometry -For a finite Galois extension and an intermediate field, this module builds the -Frobenius-side subgroup and orbit equivalences used in transfer--norm -naturality. The reusable orbit and double-coset constructions are isolated in -`DoubleCosetOrbitGeometry`. --/ +set_option autoImplicit false + universe u @@ -35,424 +28,9 @@ section transferFrobeniusGeometry variable {G : Type u} [Group G] [TopologicalSpace G] -/-- The absolute group of an intermediate field, identified with its -literal copy inside the absolute group of the base field. -/ -noncomputable def transferNormNaturalityIntermediateAbsoluteEquiv - (K K' : ClosedSubgroup G) - (hK'K : K'.toSubgroup ≤ K.toSubgroup) : - K'.toSubgroup ≃* extensionSubgroup K K' hK'K := - MulEquiv.ofBijective - ((Subgroup.inclusion hK'K).codRestrict - (extensionSubgroup K K' hK'K) (fun k' => k'.2)) - ⟨fun _ _ h => Subtype.ext (congrArg (fun z => z.1.1) h), by - rintro ⟨k, hk'⟩ - let k' : K'.toSubgroup := ⟨k.1, hk'⟩ - exact ⟨k', Subtype.ext rfl⟩⟩ - -/-- The absolute intermediate-field equivalence evaluates by the underlying transfer map. -/ -@[simp] -theorem transferNormNaturalityIntermediateAbsoluteEquiv_apply - (K K' : ClosedSubgroup G) - (hK'K : K'.toSubgroup ≤ K.toSubgroup) - (k' : K'.toSubgroup) : - ((transferNormNaturalityIntermediateAbsoluteEquiv K K' hK'K k').1 : G) = k'.1 := - rfl - -/-- Normality of `L | K` restricts to every intermediate field `K'`. -/ -theorem transferNormNaturality_intermediateExtension_normal - (K K' L : ClosedSubgroup G) - (hLK' : L.toSubgroup ≤ K'.toSubgroup) - (hK'K : K'.toSubgroup ≤ K.toSubgroup) - [hLnormal : (extensionSubgroup K L (hLK'.trans hK'K)).Normal] : - (extensionSubgroup K' L hLK').Normal := by - have hcomap : extensionSubgroup K' L hLK' = - (extensionSubgroup K L (hLK'.trans hK'K)).comap - (Subgroup.inclusion hK'K) := by - ext k' - rw [Subgroup.mem_comap, mem_extensionSubgroup_iff, - mem_extensionSubgroup_iff] - rfl - rw [hcomap] - exact hLnormal.comap (Subgroup.inclusion hK'K) namespace DegreeData -/-- The restriction map on the infinite Frobenius quotients is injective -when the top field is unchanged. -/ -theorem transferNormNaturalityFrobeniusTowerMap_injective - (D : DegreeData G) [IsTopologicalGroup G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : - Function.Injective - (D.finiteReciprocityNaturalityFrobeniusTowerMap - E.base.field E.field.field L L - (hL.trans E.below) hL E.below le_rfl) := by - intro x y - refine QuotientGroup.induction_on x ?_ - intro k' - refine QuotientGroup.induction_on y ?_ - intro l' h - apply QuotientGroup.eq.mpr - have hmem : - (Subgroup.inclusion E.below k')⁻¹ * Subgroup.inclusion E.below l' ∈ - D.extensionInertiaWithin E.base.field L (hL.trans E.below) := - QuotientGroup.eq.mp h - constructor - · apply (mem_extensionSubgroup_iff E.field.field L hL (k'⁻¹ * l')).2 - have hG := (mem_extensionSubgroup_iff E.base.field L - (hL.trans E.below) - ((Subgroup.inclusion E.below k')⁻¹ * - Subgroup.inclusion E.below l')).1 hmem.1 - simpa using hG - · have hI := hmem.2 - change D.degree (((Subgroup.inclusion E.below k')⁻¹ * - Subgroup.inclusion E.below l' : E.base.field.toSubgroup) : G) = 1 at hI - change D.degree ((k'⁻¹ * l' : E.field.field.toSubgroup) : G) = 1 - exact hI - -/-- The copy of `G(\widetilde L/K')` inside -`G(\widetilde L/K)`. This is the subgroup `H` used in the classical -double-coset proof of transfer--norm naturality. -/ -def transferNormNaturalityFrobeniusIntermediateSubgroup - (D : DegreeData G) [IsTopologicalGroup G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : - Subgroup (E.base.field.toSubgroup ⧸ - D.extensionInertiaWithin E.base.field L (hL.trans E.below)) := - (D.finiteReciprocityNaturalityFrobeniusTowerMap - E.base.field E.field.field L L - (hL.trans E.below) hL E.below le_rfl).range - -/-- The subgroup above is also the image of `G_K'` under the quotient -projection `G_K → G(\widetilde L/K)`. -/ -theorem transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map - (D : DegreeData G) [IsTopologicalGroup G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : - D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL = - (extensionSubgroup E.base.field E.field.field E.below).map - (QuotientGroup.mk' - (D.extensionInertiaWithin E.base.field L - (hL.trans E.below))) := by - ext q - constructor - · rintro ⟨x, rfl⟩ - refine QuotientGroup.induction_on x ?_ - intro k' - refine ⟨Subgroup.inclusion E.below k', ?_, rfl⟩ - exact k'.2 - · rintro ⟨k, hk', rfl⟩ - let k' : E.field.field.toSubgroup := ⟨k.1, hk'⟩ - refine ⟨QuotientGroup.mk k', ?_⟩ - change QuotientGroup.mk (Subgroup.inclusion E.below k') = - QuotientGroup.mk k - rfl - -/-- Quotient projection maps the literal absolute subgroup belonging to -`K'` onto its copy `H` inside `G(\widetilde L/K)`. -/ -noncomputable def transferNormNaturalityIntermediateToFrobeniusSubgroup - (D : DegreeData G) [IsTopologicalGroup G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : - extensionSubgroup E.base.field E.field.field E.below →* - D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL := by - refine ((QuotientGroup.mk' - (D.extensionInertiaWithin E.base.field L (hL.trans E.below))).comp - (extensionSubgroup E.base.field E.field.field E.below).subtype).codRestrict - (D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL) ?_ - intro m - change QuotientGroup.mk m.1 ∈ - D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL - rw [D.transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map - E L hL] - exact ⟨m.1, m.2, rfl⟩ - -/-- The map from the intermediate quotient onto the Frobenius subgroup is surjective. -/ -theorem transferNormNaturalityIntermediateToFrobeniusSubgroup_surjective - (D : DegreeData G) [IsTopologicalGroup G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : - Function.Surjective - (D.transferNormNaturalityIntermediateToFrobeniusSubgroup - E L hL) := by - intro h - have hh : h.1 ∈ - (extensionSubgroup E.base.field E.field.field E.below).map - (QuotientGroup.mk' - (D.extensionInertiaWithin E.base.field L (hL.trans E.below))) := by - rw [← D.transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map - E L hL] - exact h.2 - obtain ⟨m, hm, hval⟩ := hh - refine ⟨⟨m, hm⟩, ?_⟩ - apply Subtype.ext - unfold transferNormNaturalityIntermediateToFrobeniusSubgroup - simpa only [MonoidHom.codRestrict_apply, MonoidHom.comp_apply, - Subgroup.subtype_apply] using hval - -/-- The intermediate-to-Frobenius map has the stated value on each representative. -/ -@[simp] -theorem transferNormNaturalityIntermediateToFrobeniusSubgroup_apply - (D : DegreeData G) [IsTopologicalGroup G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] - (m : extensionSubgroup E.base.field E.field.field E.below) : - (D.transferNormNaturalityIntermediateToFrobeniusSubgroup - E L hL m).1 = - (QuotientGroup.mk m.1 : E.base.field.toSubgroup ⧸ - D.extensionInertiaWithin E.base.field L (hL.trans E.below)) := by - rfl - -/-- The canonical coset equivalence from `G_K/G_Σ` to -`G(\widetilde L/K)/Γ` intertwines the two copies of the `K'`-action. -/ -theorem frobeniusFixedCosetClosureEquiv_equivariant - (D : DegreeData G) [IsTopologicalGroup G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] - (σ : D.FrobeniusElements E.base L (hL.trans E.below)) - (m : extensionSubgroup E.base.field E.field.field E.below) - (x : E.base.field.toSubgroup ⧸ extensionSubgroup E.base.field - (D.frobeniusFixedField E.base L (hL.trans E.below) σ) - (D.frobeniusFixedField_le E.base L (hL.trans E.below) σ)) : - D.frobeniusFixedCosetClosureEquiv E.base L (hL.trans E.below) σ (m • x) = - (D.transferNormNaturalityIntermediateToFrobeniusSubgroup - E L hL m) • - D.frobeniusFixedCosetClosureEquiv E.base L - (hL.trans E.below) σ x := by - refine Quotient.inductionOn' x ?_ - intro k - change QuotientGroup.mk (QuotientGroup.mk (m.1 * k)) = - QuotientGroup.mk - ((D.transferNormNaturalityIntermediateToFrobeniusSubgroup - E L hL m).1 * QuotientGroup.mk k) - rw [D.transferNormNaturalityIntermediateToFrobeniusSubgroup_apply] - rfl - -/-- Restriction from the infinite Frobenius quotient onto the finite -Galois quotient is surjective. -/ -theorem transferNormNaturalityExtensionRestriction_surjective - (D : DegreeData G) - (K L : ClosedSubgroup G) - (hLK : L.toSubgroup ≤ K.toSubgroup) - [hLnormal : (extensionSubgroup K L hLK).Normal] : - Function.Surjective (D.extensionRestriction K L hLK) := by - intro q - refine QuotientGroup.induction_on q ?_ - intro k - exact ⟨QuotientGroup.mk k, rfl⟩ - -/-- The kernel of restriction to `G(L/K)` is contained in the subgroup -coming from `G(\widetilde L/K')`. -/ -theorem transferNormNaturalityExtensionRestriction_ker_le_intermediate - (D : DegreeData G) [IsTopologicalGroup G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : - (D.extensionRestriction E.base.field L (hL.trans E.below)).ker ≤ - D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL := by - rw [D.transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map - E L hL] - intro q hq - revert hq - refine QuotientGroup.induction_on q ?_ - intro k hk - change D.extensionRestriction E.base.field L (hL.trans E.below) - (QuotientGroup.mk k) = 1 at hk - rw [D.extensionRestriction_mk] at hk - have hkL : k ∈ - extensionSubgroup E.base.field L (hL.trans E.below) := by - exact QuotientGroup.eq_one_iff k |>.1 hk - have hkK' : k ∈ - extensionSubgroup E.base.field E.field.field E.below := by - apply (mem_extensionSubgroup_iff - E.base.field E.field.field E.below k).2 - exact hL ((mem_extensionSubgroup_iff E.base.field L - (hL.trans E.below) k).1 hkL) - exact ⟨k, hkK', rfl⟩ - -/-- `H` has finite index in `G(\widetilde L/K)`, with no normality -assumption on the intermediate extension `K'/K`. -/ -theorem transferNormNaturalityFrobeniusIntermediateFiniteIndex - (D : DegreeData G) [IsTopologicalGroup G] - (R : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ R.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup R.base.field L (hL.trans R.below)).Normal] - [hL'normal : (extensionSubgroup R.field.field L hL).Normal] : - (D.transferNormNaturalityFrobeniusIntermediateSubgroup R L hL).FiniteIndex := by - rw [D.transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map - R L hL] - let I := D.extensionInertiaWithin R.base.field L (hL.trans R.below) - let M := extensionSubgroup R.base.field R.field.field R.below - have hIM : I ≤ M := by - intro k hk - apply (mem_extensionSubgroup_iff - R.base.field R.field.field R.below k).2 - exact hL ((mem_extensionSubgroup_iff R.base.field L - (hL.trans R.below) k).1 hk.1) - let p := QuotientGroup.mk' I - have hker : p.ker ≤ M := by - simpa [p] using hIM - let : M.FiniteIndex := Subgroup.finiteIndex_of_finite_quotient - rw [Subgroup.finiteIndex_iff, - M.index_map_eq (QuotientGroup.mk'_surjective I) hker] - exact Subgroup.FiniteIndex.index_ne_zero - -/-- The copy of `G(\widetilde L/K')` is closed in -`G(\widetilde L/K)`. -/ -theorem transferNormNaturalityFrobeniusIntermediate_isClosed - (D : DegreeData G) [IsTopologicalGroup G] [CompactSpace G] [T2Space G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : - IsClosed (D.transferNormNaturalityFrobeniusIntermediateSubgroup - E L hL : Set - (E.base.field.toSubgroup ⧸ D.extensionInertiaWithin E.base.field L - (hL.trans E.below))) := by - let : CompactSpace E.field.field.toSubgroup := - isCompact_iff_compactSpace.mp E.field.field.isClosed'.isCompact - let : IsClosed - (D.extensionInertiaWithin E.field.field L hL : - Set E.field.field.toSubgroup) := - D.extensionInertiaWithin_isClosed E.field L hL - let : IsClosed (D.extensionInertiaWithin E.base.field L - (hL.trans E.below) : Set E.base.field.toSubgroup) := - D.extensionInertiaWithin_isClosed E.base L (hL.trans E.below) - let f := D.finiteReciprocityNaturalityFrobeniusTowerMapContinuous - E.base.field E.field.field L L - (hL.trans E.below) hL E.below le_rfl - change IsClosed (Set.range f) - have hrange : Set.range f = Set.range f.toContinuousMap := by - ext y - constructor <;> rintro ⟨x, rfl⟩ <;> exact ⟨x, rfl⟩ - rw [hrange] - simpa only [Set.image_univ] using - (isCompact_univ.image f.continuous).isClosed - -/-- The transfer-orbit index set -`⟨σ⟩ \ G(\widetilde L/K) / H` is canonically the norm double-coset -index set `G_K' \ G_K / G_Σ`. The equivalence is inversion of double -cosets, followed by passage from powers of `σ` to their closure `Γ` and -the canonical identification `G_K/G_Σ ≃ G(\widetilde L/K)/Γ`. -/ -noncomputable def transferNormNaturalityTransferNormOrbitEquiv - (D : DegreeData G) [IsTopologicalGroup G] [CompactSpace G] [T2Space G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] - (σ : D.FrobeniusElements E.base L (hL.trans E.below)) : - Quotient (orbitRel (Subgroup.zpowers σ.1) - ((E.base.field.toSubgroup ⧸ D.extensionInertiaWithin E.base.field L - (hL.trans E.below)) ⧸ - D.transferNormNaturalityFrobeniusIntermediateSubgroup - E L hL)) ≃ - Quotient (orbitRel - (extensionSubgroup E.base.field E.field.field E.below) - (E.base.field.toSubgroup ⧸ extensionSubgroup E.base.field - (D.frobeniusFixedField E.base L (hL.trans E.below) σ) - (D.frobeniusFixedField_le E.base L - (hL.trans E.below) σ))) := by - let P := E.base.field.toSubgroup ⧸ D.extensionInertiaWithin E.base.field L - (hL.trans E.below) - let H := D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL - let M := extensionSubgroup E.base.field E.field.field E.below - let Γ := D.frobeniusClosure E.base L (hL.trans E.below) σ - let S := D.frobeniusFixedField E.base L (hL.trans E.below) σ - let hSK := D.frobeniusFixedField_le E.base L (hL.trans E.below) σ - let f : M →* H := D.transferNormNaturalityIntermediateToFrobeniusSubgroup - E L hL - let e := D.frobeniusFixedCosetClosureEquiv - E.base L (hL.trans E.below) σ - letI : H.FiniteIndex := - D.transferNormNaturalityFrobeniusIntermediateFiniteIndex E L hL - have hHclosed : IsClosed (H : Set P) := - D.transferNormNaturalityFrobeniusIntermediate_isClosed E L hL - have hΓ : - (closedSubgroupGenerated ({σ.1} : Set P)).toSubgroup = Γ.toSubgroup := by - simp [Γ, DegreeData.frobeniusClosure] - let eΓ : P ⧸ (closedSubgroupGenerated ({σ.1} : Set P)).toSubgroup ≃ - P ⧸ Γ.toSubgroup := Subgroup.quotientEquivOfEq hΓ - have heΓ (h : H) - (x : P ⧸ (closedSubgroupGenerated ({σ.1} : Set P)).toSubgroup) : - eΓ (h • x) = h • eΓ x := by - refine Quotient.inductionOn' x ?_ - intro p - rfl - let eΓorbit := orbitQuotientEquivOfSurjectiveEquivariant - (MonoidHom.id H) Function.surjective_id eΓ heΓ - have hf : Function.Surjective f := - D.transferNormNaturalityIntermediateToFrobeniusSubgroup_surjective - E L hL - have he (m : M) - (x : E.base.field.toSubgroup ⧸ extensionSubgroup E.base.field S hSK) : - e (m • x) = f m • e x := by - exact D.frobeniusFixedCosetClosureEquiv_equivariant - E L hL σ m x - let eAction := orbitQuotientEquivOfSurjectiveEquivariant f hf e he - exact (orbitQuotientSwapEquiv (Subgroup.zpowers σ.1) H).trans - ((orbitQuotientClosedCyclicEquiv H hHclosed σ.1).trans - (eΓorbit.trans eAction.symm)) - -/-- The transfer-norm orbit equivalence sends quotient representatives to their norm orbits. -/ -@[simp] -theorem transferNormNaturalityTransferNormOrbitEquiv_mk - (D : DegreeData G) [IsTopologicalGroup G] [CompactSpace G] [T2Space G] - (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) - (hL : L.toSubgroup ≤ E.field.field.toSubgroup) - [hLnormal : - (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] - [hL'normal : (extensionSubgroup E.field.field L hL).Normal] - (σ : D.FrobeniusElements E.base L (hL.trans E.below)) - (k : E.base.field.toSubgroup) : - D.transferNormNaturalityTransferNormOrbitEquiv E L hL σ - (Quotient.mk'' (QuotientGroup.mk - (QuotientGroup.mk k : E.base.field.toSubgroup ⧸ - D.extensionInertiaWithin E.base.field L (hL.trans E.below)) : - (E.base.field.toSubgroup ⧸ D.extensionInertiaWithin E.base.field L - (hL.trans E.below)) ⧸ - D.transferNormNaturalityFrobeniusIntermediateSubgroup - E L hL)) = - Quotient.mk'' (QuotientGroup.mk k⁻¹ : - E.base.field.toSubgroup ⧸ extensionSubgroup E.base.field - (D.frobeniusFixedField E.base L (hL.trans E.below) σ) - (D.frobeniusFixedField_le E.base L - (hL.trans E.below) σ)) := by - unfold transferNormNaturalityTransferNormOrbitEquiv - simp only [Equiv.trans_apply, orbitQuotientSwapEquiv_mk, - orbitQuotientClosedCyclicEquiv_mk, - orbitQuotientEquivOfSurjectiveEquivariant_mk, - orbitQuotientEquivOfSurjectiveEquivariant_symm_mk, - Subgroup.quotientEquivOfEq_mk] - apply congrArg Quotient.mk'' - exact (D.frobeniusFixedCosetClosureEquiv E.base L - (hL.trans E.below) σ).symm_apply_apply (QuotientGroup.mk k⁻¹) - /-- On the classical chosen transfer representative `t`, the preceding equivalence is literally the norm orbit represented by `t⁻¹`. -/ theorem transferNormNaturalityTransferNormOrbitEquiv_apply diff --git a/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusRestriction.lean b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusRestriction.lean new file mode 100644 index 0000000..4f8dc8c --- /dev/null +++ b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusRestriction.lean @@ -0,0 +1,142 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + + +import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.Construction.MainTransferFrobeniusSubgroup + + +set_option autoImplicit false + + +universe u + +namespace ClassFormation + +open KummerTheory +open CyclicCohomology +open CategoryTheory + +noncomputable section + +open scoped BigOperators +open MulAction + +section transferFrobeniusGeometry + +variable {G : Type u} [Group G] [TopologicalSpace G] + + +namespace DegreeData + +/-- Restriction from the infinite Frobenius quotient onto the finite +Galois quotient is surjective. -/ +theorem transferNormNaturalityExtensionRestriction_surjective + (D : DegreeData G) + (K L : ClosedSubgroup G) + (hLK : L.toSubgroup ≤ K.toSubgroup) + [hLnormal : (extensionSubgroup K L hLK).Normal] : + Function.Surjective (D.extensionRestriction K L hLK) := by + intro q + refine QuotientGroup.induction_on q ?_ + intro k + exact ⟨QuotientGroup.mk k, rfl⟩ + + +theorem transferNormNaturalityExtensionRestriction_ker_le_intermediate + (D : DegreeData G) [IsTopologicalGroup G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : + (D.extensionRestriction E.base.field L (hL.trans E.below)).ker ≤ + D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL := by + rw [D.transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map + E L hL] + intro q hq + revert hq + refine QuotientGroup.induction_on q ?_ + intro k hk + change D.extensionRestriction E.base.field L (hL.trans E.below) + (QuotientGroup.mk k) = 1 at hk + rw [D.extensionRestriction_mk] at hk + have hkL : k ∈ + extensionSubgroup E.base.field L (hL.trans E.below) := by + exact QuotientGroup.eq_one_iff k |>.1 hk + have hkK' : k ∈ + extensionSubgroup E.base.field E.field.field E.below := by + apply (mem_extensionSubgroup_iff + E.base.field E.field.field E.below k).2 + exact hL ((mem_extensionSubgroup_iff E.base.field L + (hL.trans E.below) k).1 hkL) + exact ⟨k, hkK', rfl⟩ + +/-- `H` has finite index in `G(\widetilde L/K)`, with no normality +assumption on the intermediate extension `K'/K`. -/ +theorem transferNormNaturalityFrobeniusIntermediateFiniteIndex + (D : DegreeData G) [IsTopologicalGroup G] + (R : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ R.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup R.base.field L (hL.trans R.below)).Normal] + [hL'normal : (extensionSubgroup R.field.field L hL).Normal] : + (D.transferNormNaturalityFrobeniusIntermediateSubgroup R L hL).FiniteIndex := by + rw [D.transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map + R L hL] + let I := D.extensionInertiaWithin R.base.field L (hL.trans R.below) + let M := extensionSubgroup R.base.field R.field.field R.below + have hIM : I ≤ M := by + intro k hk + apply (mem_extensionSubgroup_iff + R.base.field R.field.field R.below k).2 + exact hL ((mem_extensionSubgroup_iff R.base.field L + (hL.trans R.below) k).1 hk.1) + let p := QuotientGroup.mk' I + have hker : p.ker ≤ M := by + simpa [p] using hIM + let : M.FiniteIndex := Subgroup.finiteIndex_of_finite_quotient + rw [Subgroup.finiteIndex_iff, + M.index_map_eq (QuotientGroup.mk'_surjective I) hker] + exact Subgroup.FiniteIndex.index_ne_zero + +/-- The copy of `G(\widetilde L/K')` is closed in +`G(\widetilde L/K)`. -/ +theorem transferNormNaturalityFrobeniusIntermediate_isClosed + (D : DegreeData G) [IsTopologicalGroup G] [CompactSpace G] [T2Space G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : + IsClosed (D.transferNormNaturalityFrobeniusIntermediateSubgroup + E L hL : Set + (E.base.field.toSubgroup ⧸ D.extensionInertiaWithin E.base.field L + (hL.trans E.below))) := by + let : CompactSpace E.field.field.toSubgroup := + isCompact_iff_compactSpace.mp E.field.field.isClosed'.isCompact + let : IsClosed + (D.extensionInertiaWithin E.field.field L hL : + Set E.field.field.toSubgroup) := + D.extensionInertiaWithin_isClosed E.field L hL + let : IsClosed (D.extensionInertiaWithin E.base.field L + (hL.trans E.below) : Set E.base.field.toSubgroup) := + D.extensionInertiaWithin_isClosed E.base L (hL.trans E.below) + let f := D.finiteReciprocityNaturalityFrobeniusTowerMapContinuous + E.base.field E.field.field L L + (hL.trans E.below) hL E.below le_rfl + change IsClosed (Set.range f) + have hrange : Set.range f = Set.range f.toContinuousMap := by + ext y + constructor <;> rintro ⟨x, rfl⟩ <;> exact ⟨x, rfl⟩ + rw [hrange] + simpa only [Set.image_univ] using + (isCompact_univ.image f.continuous).isClosed + + +end DegreeData +end transferFrobeniusGeometry +end +end ClassFormation diff --git a/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusSubgroup.lean b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusSubgroup.lean new file mode 100644 index 0000000..d46fda8 --- /dev/null +++ b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferFrobeniusSubgroup.lean @@ -0,0 +1,249 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.Construction.MainNaturality +import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.Construction.DoubleCosetOrbitGeometry + + +set_option autoImplicit false + + +universe u + +namespace ClassFormation + +open KummerTheory +open CyclicCohomology +open CategoryTheory + +noncomputable section + +open scoped BigOperators +open MulAction + +section transferFrobeniusGeometry + +variable {G : Type u} [Group G] [TopologicalSpace G] + +/-- The absolute group of an intermediate field, identified with its +literal copy inside the absolute group of the base field. -/ +noncomputable def transferNormNaturalityIntermediateAbsoluteEquiv + (K K' : ClosedSubgroup G) + (hK'K : K'.toSubgroup ≤ K.toSubgroup) : + K'.toSubgroup ≃* extensionSubgroup K K' hK'K := + MulEquiv.ofBijective + ((Subgroup.inclusion hK'K).codRestrict + (extensionSubgroup K K' hK'K) (fun k' => k'.2)) + ⟨fun _ _ h => Subtype.ext (congrArg (fun z => z.1.1) h), by + rintro ⟨k, hk'⟩ + let k' : K'.toSubgroup := ⟨k.1, hk'⟩ + exact ⟨k', Subtype.ext rfl⟩⟩ + +/-- The absolute intermediate-field equivalence evaluates by the underlying transfer map. -/ +@[simp] +theorem transferNormNaturalityIntermediateAbsoluteEquiv_apply + (K K' : ClosedSubgroup G) + (hK'K : K'.toSubgroup ≤ K.toSubgroup) + (k' : K'.toSubgroup) : + ((transferNormNaturalityIntermediateAbsoluteEquiv K K' hK'K k').1 : G) = k'.1 := + rfl + +/-- Normality of `L | K` restricts to every intermediate field `K'`. -/ +theorem transferNormNaturality_intermediateExtension_normal + (K K' L : ClosedSubgroup G) + (hLK' : L.toSubgroup ≤ K'.toSubgroup) + (hK'K : K'.toSubgroup ≤ K.toSubgroup) + [hLnormal : (extensionSubgroup K L (hLK'.trans hK'K)).Normal] : + (extensionSubgroup K' L hLK').Normal := by + have hcomap : extensionSubgroup K' L hLK' = + (extensionSubgroup K L (hLK'.trans hK'K)).comap + (Subgroup.inclusion hK'K) := by + ext k' + rw [Subgroup.mem_comap, mem_extensionSubgroup_iff, + mem_extensionSubgroup_iff] + rfl + rw [hcomap] + exact hLnormal.comap (Subgroup.inclusion hK'K) + +namespace DegreeData + +/-- The restriction map on the infinite Frobenius quotients is injective +when the top field is unchanged. -/ +theorem transferNormNaturalityFrobeniusTowerMap_injective + (D : DegreeData G) [IsTopologicalGroup G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : + Function.Injective + (D.finiteReciprocityNaturalityFrobeniusTowerMap + E.base.field E.field.field L L + (hL.trans E.below) hL E.below le_rfl) := by + intro x y + refine QuotientGroup.induction_on x ?_ + intro k' + refine QuotientGroup.induction_on y ?_ + intro l' h + apply QuotientGroup.eq.mpr + have hmem : + (Subgroup.inclusion E.below k')⁻¹ * Subgroup.inclusion E.below l' ∈ + D.extensionInertiaWithin E.base.field L (hL.trans E.below) := + QuotientGroup.eq.mp h + constructor + · apply (mem_extensionSubgroup_iff E.field.field L hL (k'⁻¹ * l')).2 + have hG := (mem_extensionSubgroup_iff E.base.field L + (hL.trans E.below) + ((Subgroup.inclusion E.below k')⁻¹ * + Subgroup.inclusion E.below l')).1 hmem.1 + simpa using hG + · have hI := hmem.2 + change D.degree (((Subgroup.inclusion E.below k')⁻¹ * + Subgroup.inclusion E.below l' : E.base.field.toSubgroup) : G) = 1 at hI + change D.degree ((k'⁻¹ * l' : E.field.field.toSubgroup) : G) = 1 + exact hI + +/-- The copy of `G(\widetilde L/K')` inside +`G(\widetilde L/K)`. This is the subgroup `H` used in the classical +double-coset proof of transfer--norm naturality. -/ +def transferNormNaturalityFrobeniusIntermediateSubgroup + (D : DegreeData G) [IsTopologicalGroup G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : + Subgroup (E.base.field.toSubgroup ⧸ + D.extensionInertiaWithin E.base.field L (hL.trans E.below)) := + (D.finiteReciprocityNaturalityFrobeniusTowerMap + E.base.field E.field.field L L + (hL.trans E.below) hL E.below le_rfl).range + +/-- The subgroup above is also the image of `G_K'` under the quotient +projection `G_K → G(\widetilde L/K)`. -/ +theorem transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map + (D : DegreeData G) [IsTopologicalGroup G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : + D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL = + (extensionSubgroup E.base.field E.field.field E.below).map + (QuotientGroup.mk' + (D.extensionInertiaWithin E.base.field L + (hL.trans E.below))) := by + ext q + constructor + · rintro ⟨x, rfl⟩ + refine QuotientGroup.induction_on x ?_ + intro k' + refine ⟨Subgroup.inclusion E.below k', ?_, rfl⟩ + exact k'.2 + · rintro ⟨k, hk', rfl⟩ + let k' : E.field.field.toSubgroup := ⟨k.1, hk'⟩ + refine ⟨QuotientGroup.mk k', ?_⟩ + change QuotientGroup.mk (Subgroup.inclusion E.below k') = + QuotientGroup.mk k + rfl + +/-- Quotient projection maps the literal absolute subgroup belonging to +`K'` onto its copy `H` inside `G(\widetilde L/K)`. -/ +noncomputable def transferNormNaturalityIntermediateToFrobeniusSubgroup + (D : DegreeData G) [IsTopologicalGroup G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : + extensionSubgroup E.base.field E.field.field E.below →* + D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL := by + refine ((QuotientGroup.mk' + (D.extensionInertiaWithin E.base.field L (hL.trans E.below))).comp + (extensionSubgroup E.base.field E.field.field E.below).subtype).codRestrict + (D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL) ?_ + intro m + change QuotientGroup.mk m.1 ∈ + D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL + rw [D.transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map + E L hL] + exact ⟨m.1, m.2, rfl⟩ + +/-- The map from the intermediate quotient onto the Frobenius subgroup is surjective. -/ +theorem transferNormNaturalityIntermediateToFrobeniusSubgroup_surjective + (D : DegreeData G) [IsTopologicalGroup G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] : + Function.Surjective + (D.transferNormNaturalityIntermediateToFrobeniusSubgroup + E L hL) := by + intro h + have hh : h.1 ∈ + (extensionSubgroup E.base.field E.field.field E.below).map + (QuotientGroup.mk' + (D.extensionInertiaWithin E.base.field L (hL.trans E.below))) := by + rw [← D.transferNormNaturalityFrobeniusIntermediateSubgroup_eq_map + E L hL] + exact h.2 + obtain ⟨m, hm, hval⟩ := hh + refine ⟨⟨m, hm⟩, ?_⟩ + apply Subtype.ext + unfold transferNormNaturalityIntermediateToFrobeniusSubgroup + simpa only [MonoidHom.codRestrict_apply, MonoidHom.comp_apply, + Subgroup.subtype_apply] using hval + +/-- The intermediate-to-Frobenius map has the stated value on each representative. -/ +@[simp] +theorem transferNormNaturalityIntermediateToFrobeniusSubgroup_apply + (D : DegreeData G) [IsTopologicalGroup G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] + (m : extensionSubgroup E.base.field E.field.field E.below) : + (D.transferNormNaturalityIntermediateToFrobeniusSubgroup + E L hL m).1 = + (QuotientGroup.mk m.1 : E.base.field.toSubgroup ⧸ + D.extensionInertiaWithin E.base.field L (hL.trans E.below)) := by + rfl + +/-- The canonical coset equivalence from `G_K/G_Σ` to +`G(\widetilde L/K)/Γ` intertwines the two copies of the `K'`-action. -/ +theorem frobeniusFixedCosetClosureEquiv_equivariant + (D : DegreeData G) [IsTopologicalGroup G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] + (σ : D.FrobeniusElements E.base L (hL.trans E.below)) + (m : extensionSubgroup E.base.field E.field.field E.below) + (x : E.base.field.toSubgroup ⧸ extensionSubgroup E.base.field + (D.frobeniusFixedField E.base L (hL.trans E.below) σ) + (D.frobeniusFixedField_le E.base L (hL.trans E.below) σ)) : + D.frobeniusFixedCosetClosureEquiv E.base L (hL.trans E.below) σ (m • x) = + (D.transferNormNaturalityIntermediateToFrobeniusSubgroup + E L hL m) • + D.frobeniusFixedCosetClosureEquiv E.base L + (hL.trans E.below) σ x := by + refine Quotient.inductionOn' x ?_ + intro k + change QuotientGroup.mk (QuotientGroup.mk (m.1 * k)) = + QuotientGroup.mk + ((D.transferNormNaturalityIntermediateToFrobeniusSubgroup + E L hL m).1 * QuotientGroup.mk k) + rw [D.transferNormNaturalityIntermediateToFrobeniusSubgroup_apply] + rfl + + +end DegreeData +end transferFrobeniusGeometry +end +end ClassFormation diff --git a/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferNormOrbitEquiv.lean b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferNormOrbitEquiv.lean new file mode 100644 index 0000000..5ce3d85 --- /dev/null +++ b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferNormOrbitEquiv.lean @@ -0,0 +1,107 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + + +import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.Construction.MainTransferFrobeniusRestriction + + +set_option autoImplicit false + + +universe u + +namespace ClassFormation + +open KummerTheory +open CyclicCohomology +open CategoryTheory + +noncomputable section + +open scoped BigOperators +open MulAction + +section transferFrobeniusGeometry + +variable {G : Type u} [Group G] [TopologicalSpace G] + + +namespace DegreeData + +/-- The transfer-orbit index set +`⟨σ⟩ \ G(\widetilde L/K) / H` is canonically the norm double-coset +index set `G_K' \ G_K / G_Σ`. The equivalence is inversion of double +cosets, followed by passage from powers of `σ` to their closure `Γ` and +the canonical identification `G_K/G_Σ ≃ G(\widetilde L/K)/Γ`. -/ +noncomputable def transferNormNaturalityTransferNormOrbitEquiv + (D : DegreeData G) [IsTopologicalGroup G] [CompactSpace G] [T2Space G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] + (σ : D.FrobeniusElements E.base L (hL.trans E.below)) : + Quotient (orbitRel (Subgroup.zpowers σ.1) + ((E.base.field.toSubgroup ⧸ D.extensionInertiaWithin E.base.field L + (hL.trans E.below)) ⧸ + D.transferNormNaturalityFrobeniusIntermediateSubgroup + E L hL)) ≃ + Quotient (orbitRel + (extensionSubgroup E.base.field E.field.field E.below) + (E.base.field.toSubgroup ⧸ extensionSubgroup E.base.field + (D.frobeniusFixedField E.base L (hL.trans E.below) σ) + (D.frobeniusFixedField_le E.base L + (hL.trans E.below) σ))) := by + let P := E.base.field.toSubgroup ⧸ D.extensionInertiaWithin E.base.field L + (hL.trans E.below) + let H := D.transferNormNaturalityFrobeniusIntermediateSubgroup E L hL + let M := extensionSubgroup E.base.field E.field.field E.below + let Γ := D.frobeniusClosure E.base L (hL.trans E.below) σ + let S := D.frobeniusFixedField E.base L (hL.trans E.below) σ + let hSK := D.frobeniusFixedField_le E.base L (hL.trans E.below) σ + let f : M →* H := D.transferNormNaturalityIntermediateToFrobeniusSubgroup + E L hL + let e := D.frobeniusFixedCosetClosureEquiv + E.base L (hL.trans E.below) σ + letI : H.FiniteIndex := + D.transferNormNaturalityFrobeniusIntermediateFiniteIndex E L hL + have hHclosed : IsClosed (H : Set P) := + D.transferNormNaturalityFrobeniusIntermediate_isClosed E L hL + have hΓ : + (closedSubgroupGenerated ({σ.1} : Set P)).toSubgroup = Γ.toSubgroup := by + simp only [Γ, DegreeData.frobeniusClosure, Set.range_const] + let eΓ : P ⧸ (closedSubgroupGenerated ({σ.1} : Set P)).toSubgroup ≃ + P ⧸ Γ.toSubgroup := Subgroup.quotientEquivOfEq hΓ + have heΓ (h : H) + (x : P ⧸ (closedSubgroupGenerated ({σ.1} : Set P)).toSubgroup) : + eΓ (h • x) = h • eΓ x := by + refine Quotient.inductionOn' x ?_ + intro p + change eΓ (QuotientGroup.mk (h.val * p)) = h • eΓ (QuotientGroup.mk p) + simp only [eΓ, Subgroup.quotientEquivOfEq_mk] + rfl + let eΓorbit := orbitQuotientEquivOfSurjectiveEquivariant + (MonoidHom.id H) Function.surjective_id eΓ heΓ + have hf : Function.Surjective f := + D.transferNormNaturalityIntermediateToFrobeniusSubgroup_surjective + E L hL + have he (m : M) + (x : E.base.field.toSubgroup ⧸ extensionSubgroup E.base.field S hSK) : + e (m • x) = f m • e x := by + exact D.frobeniusFixedCosetClosureEquiv_equivariant + E L hL σ m x + let eAction := orbitQuotientEquivOfSurjectiveEquivariant f hf e he + exact (orbitQuotientSwapEquiv (Subgroup.zpowers σ.1) H).trans + ((orbitQuotientClosedCyclicEquiv H hHclosed σ.1).trans + (eΓorbit.trans eAction.symm)) + + +end DegreeData + +end transferFrobeniusGeometry +end + +end ClassFormation diff --git a/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferNormOrbitMk.lean b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferNormOrbitMk.lean new file mode 100644 index 0000000..0e23056 --- /dev/null +++ b/Lean4/ClassFieldTheory/AbstractClassFieldTheory/Reciprocity/Construction/MainTransferNormOrbitMk.lean @@ -0,0 +1,74 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + + +import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.Construction.MainTransferNormOrbitEquiv + + +set_option autoImplicit false + + +universe u + +namespace ClassFormation + +open KummerTheory +open CyclicCohomology +open CategoryTheory + +noncomputable section + +open scoped BigOperators +open MulAction + +section transferFrobeniusGeometry + +variable {G : Type u} [Group G] [TopologicalSpace G] + + +namespace DegreeData + +/-- The transfer-norm orbit equivalence sends quotient representatives to their norm orbits. -/ +@[simp] +theorem transferNormNaturalityTransferNormOrbitEquiv_mk + (D : DegreeData G) [IsTopologicalGroup G] [CompactSpace G] [T2Space G] + (E : FiniteResidueAbstractExtension D) (L : ClosedSubgroup G) + (hL : L.toSubgroup ≤ E.field.field.toSubgroup) + [hLnormal : + (extensionSubgroup E.base.field L (hL.trans E.below)).Normal] + [hL'normal : (extensionSubgroup E.field.field L hL).Normal] + (σ : D.FrobeniusElements E.base L (hL.trans E.below)) + (k : E.base.field.toSubgroup) : + D.transferNormNaturalityTransferNormOrbitEquiv E L hL σ + (Quotient.mk'' (QuotientGroup.mk + (QuotientGroup.mk k : E.base.field.toSubgroup ⧸ + D.extensionInertiaWithin E.base.field L (hL.trans E.below)) : + (E.base.field.toSubgroup ⧸ D.extensionInertiaWithin E.base.field L + (hL.trans E.below)) ⧸ + D.transferNormNaturalityFrobeniusIntermediateSubgroup + E L hL)) = + Quotient.mk'' (QuotientGroup.mk k⁻¹ : + E.base.field.toSubgroup ⧸ extensionSubgroup E.base.field + (D.frobeniusFixedField E.base L (hL.trans E.below) σ) + (D.frobeniusFixedField_le E.base L + (hL.trans E.below) σ)) := by + unfold transferNormNaturalityTransferNormOrbitEquiv + simp only [Equiv.trans_apply, orbitQuotientSwapEquiv_mk, + orbitQuotientClosedCyclicEquiv_mk, + orbitQuotientEquivOfSurjectiveEquivariant_mk, + orbitQuotientEquivOfSurjectiveEquivariant_symm_mk, + Subgroup.quotientEquivOfEq_mk] + apply congrArg Quotient.mk'' + exact (D.frobeniusFixedCosetClosureEquiv E.base L + (hL.trans E.below) σ).symm_apply_apply (QuotientGroup.mk k⁻¹) + + +end DegreeData + +end transferFrobeniusGeometry +end + +end ClassFormation diff --git a/Lean4/ClassFieldTheory/AlgebraicNumberTheory/AdeleBaseChange.lean b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/AdeleBaseChange.lean index fa7f215..d8d918e 100644 --- a/Lean4/ClassFieldTheory/AlgebraicNumberTheory/AdeleBaseChange.lean +++ b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/AdeleBaseChange.lean @@ -7,15 +7,9 @@ Authors: Naganori Yamaguchi (assisted by OpenAI Codex) import ClassFieldTheory.AlgebraicNumberTheory.Idele.BaseChange import ClassFieldTheory.AlgebraicNumberTheory.Completion.AdicCompletionComparison -set_option autoImplicit false -/-! -# Scalar extension from relative to ordinary adeles +set_option autoImplicit false -This file upgrades the relative-to-ordinary idele comparison to the -underlying adele rings. The additive structure is needed to transport -determinant norms in a field tower. --/ open scoped NumberField TensorProduct RestrictedProduct open NumberField IsDedekindDomain diff --git a/Lean4/ClassFieldTheory/AlgebraicNumberTheory/Idele/NormTopology/ExtensionBehavior.lean b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/Idele/NormTopology/ExtensionBehavior.lean index 2e624da..f838ee6 100644 --- a/Lean4/ClassFieldTheory/AlgebraicNumberTheory/Idele/NormTopology/ExtensionBehavior.lean +++ b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/Idele/NormTopology/ExtensionBehavior.lean @@ -6,6 +6,7 @@ Authors: Naganori Yamaguchi (assisted by OpenAI Codex) import ClassFieldTheory.AlgebraicNumberTheory.Idele.NormTopology.FiniteNormArithmetic + set_option autoImplicit false /-! @@ -40,12 +41,20 @@ private theorem infinitePlaceCompletionMap_isometry Isometry (NumberField.LiesOver.completionMap (v := v₀) (w := W)) := by - unfold NumberField.LiesOver.completionMap - exact - (InfinitePlace.Completion.isometryEquivCompletion W).symm.isometry.comp - ((UniformSpace.Completion.isometry_mapRingHom - (InfinitePlace.LiesOver.isometry_algebraMap W v₀)).comp - (InfinitePlace.Completion.isometryEquivCompletion v₀).isometry) + apply AddMonoidHomClass.isometry_of_norm + (NumberField.LiesOver.completionMap (v := v₀) (w := W)) + intro x + refine InfinitePlace.Completion.induction_on v₀ x + (isClosed_eq + (continuous_norm.comp NumberField.LiesOver.continuous_completionMap) + continuous_norm) ?_ + intro a + rw [NumberField.LiesOver.completionMap_coe] + have h := (InfinitePlace.LiesOver.isometry_algebraMap W v₀).norm_map_of_map_zero + (map_zero (algebraMap (WithAbs v₀.1) (WithAbs W.1))) a + simp only [InfinitePlace.Completion.norm_coe, WithAbs.norm_eq_apply_ofAbs, + WithAbs.equiv_apply, InfinitePlace.coe_apply] at h ⊢ + with_reducible exact h omit [NumberField L] in /-- Mapping a unit along an infinite-place completion map preserves its diff --git a/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/Ideal.lean b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/Ideal.lean index d626883..6255279 100644 --- a/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/Ideal.lean +++ b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/Ideal.lean @@ -4,23 +4,12 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.AlgebraicNumberTheory.RayClass.Topology -import ClassFieldTheory.AlgebraicNumberTheory.Idele.LocallyCompact -import ClassFieldTheory.AlgebraicNumberTheory.Idele.PrincipalNorm -import ValuedFieldTheory.Valuation.AbsoluteValue.Theory.AbsoluteValues -import Mathlib.NumberTheory.NumberField.Completion.InfinitePlace -import Mathlib.Topology.Algebra.IsOpenUnits -import Mathlib.Topology.Algebra.Ring.Compact -set_option autoImplicit false +import ClassFieldTheory.AlgebraicNumberTheory.RayClass.IdealApproximation -/-! -# Ideals prime to a ray-class modulus -This file defines the subgroup of fractional ideals prime to a modulus, -connects it with the corresponding finite-idele higher-unit conditions, and -develops the approximation maps used in ray-class ideal constructions. --/ +set_option autoImplicit false + open scoped NumberField WithZero Classical open NumberField IsDedekindDomain @@ -32,690 +21,6 @@ variable {K : Type*} [Field K] [NumberField K] namespace RayClass -/-- Fractional ideals having valuation zero at every finite prime in the -support of the modulus. -/ -def primeToModulusIdeals (m : Modulus K) : - Subgroup (FractionalIdealGroup K) where - carrier := {I | ∀ v, v ∈ m.finitePart.support → - FractionalIdeal.count K v - (I : FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = 0} - one_mem' v _ := FractionalIdeal.count_one K v - mul_mem' {I J} hI hJ v hv := by - rw [Units.val_mul, - FractionalIdeal.count_mul K v (Units.ne_zero I) (Units.ne_zero J), - hI v hv, hJ v hv, add_zero] - inv_mem' {I} hI v hv := by - rw [Units.val_inv_eq_inv_val, FractionalIdeal.count_inv K v, - hI v hv, neg_zero] - -@[simp] -theorem mem_primeToModulusIdeals_iff - (m : Modulus K) (I : FractionalIdealGroup K) : - I ∈ primeToModulusIdeals m ↔ - ∀ v, v ∈ m.finitePart.support → - FractionalIdeal.count K v - (I : FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = 0 := - Iff.rfl - -/-- A finite prime outside the support of `m`, regarded as an element of -the group of fractional ideals prime to `m`. -/ -def primeToModulusIdeal - (m : Modulus K) - (v : HeightOneSpectrum (𝓞 K)) - (hv : v ∉ m.finitePart.support) : - primeToModulusIdeals m := - ⟨FractionalIdealGroup.prime v, by - intro w hw - have hwv : w ≠ v := by - intro h - exact hv (h ▸ hw) - change - FractionalIdeal.count K w - (v.asIdeal : - FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = - 0 - exact - FractionalIdeal.count_maximal_coprime - K w hwv.symm⟩ - -/-- Coercing a prime outside the modulus support recovers its prime -fractional ideal. -/ -@[simp] -theorem primeToModulusIdeal_coe - (m : Modulus K) - (v : HeightOneSpectrum (𝓞 K)) - (hv : v ∉ m.finitePart.support) : - (primeToModulusIdeal m v hv : - FractionalIdealGroup K) = - FractionalIdealGroup.prime v := - rfl - -/-- Finite ideles satisfying the higher-unit condition at every prime in -the support of the modulus. -/ -def finitePrimeToModulusSubgroup (m : Modulus K) : - Subgroup (FiniteIdeleGroup K) where - carrier := {a | ∀ v, v ∈ m.finitePart.support → - a v ∈ localHigherUnitGroup v (m.finitePart v)} - one_mem' v _ := (localHigherUnitGroup v (m.finitePart v)).one_mem - mul_mem' ha hb v hv := - (localHigherUnitGroup v (m.finitePart v)).mul_mem (ha v hv) (hb v hv) - inv_mem' ha v hv := - (localHigherUnitGroup v (m.finitePart v)).inv_mem (ha v hv) - -/-- Ideles satisfying the infinite positivity and finite higher-unit -conditions of a modulus. -/ -def idelePrimeToModulusSubgroup (m : Modulus K) : - Subgroup (IdeleGroup K) := - m.infiniteCongruenceSubgroup.prod - (finitePrimeToModulusSubgroup m) - -theorem localHigherUnitGroup_le_integralUnits - (v : HeightOneSpectrum (𝓞 K)) (n : ℕ) : - localHigherUnitGroup v n ≤ - (v.adicCompletionIntegers K).units := by - intro x hx - rw [mem_localHigherUnitGroup_iff] at hx - obtain ⟨y, rfl, _⟩ := hx - exact y.property - -theorem fractionalIdeal_mem_primeToModulusIdeals - (m : Modulus K) (a : IdeleGroup K) - (ha : a ∈ idelePrimeToModulusSubgroup m) : - IdeleGroup.fractionalIdeal a ∈ primeToModulusIdeals m := by - intro v hv - change FractionalIdeal.count K v - (((FractionalIdealGroup.factorization (K := K)) - (FiniteIdeleGroup.valuationVector a.2) : - FractionalIdealGroup K) : - FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = 0 - rw [FractionalIdealGroup.count_factorization, - FiniteIdeleGroup.valuationVector_apply] - apply (FiniteIdeleGroup.localOrder_eq_zero_iff v (a.2 v)).2 - exact localHigherUnitGroup_le_integralUnits v (m.finitePart v) (ha.2 v hv) - -/-- The fractional-ideal map restricted to ideles prime to a modulus. -/ -def primeToIdealMap (m : Modulus K) : - idelePrimeToModulusSubgroup m →* - primeToModulusIdeals m where - toFun a := - ⟨IdeleGroup.fractionalIdeal a, - fractionalIdeal_mem_primeToModulusIdeals m a a.property⟩ - map_one' := by - apply Subtype.ext - exact map_one _ - map_mul' a b := by - apply Subtype.ext - exact map_mul _ _ _ - -/-- A finite idele with a prescribed valuation vector away from the -support of a modulus and value one on its support. -/ -def valuationVectorSectionPrimeTo - (m : Modulus K) - (e : HeightOneSpectrum (𝓞 K) →₀ ℤ) : - FiniteIdeleGroup K := - ⟨fun v => - if v ∈ m.finitePart.support then 1 - else FiniteIdeleGroup.chosenLocalOrderSection v (e v), by - filter_upwards - [m.finitePart.support.eventually_cofinite_notMem, - e.support.eventually_cofinite_notMem] with v hvm he - simp only [hvm, ↓reduceIte] - apply (FiniteIdeleGroup.localOrder_eq_zero_iff v _).1 - rw [FiniteIdeleGroup.localOrder_chosenLocalOrderSection, - Finsupp.notMem_support_iff.mp he]⟩ - -theorem valuationVector_valuationVectorSectionPrimeTo - (m : Modulus K) - (e : HeightOneSpectrum (𝓞 K) →₀ ℤ) - (he : ∀ v, v ∈ m.finitePart.support → e v = 0) : - FiniteIdeleGroup.valuationVector - (valuationVectorSectionPrimeTo m e) = - Multiplicative.ofAdd e := by - apply Multiplicative.ext - ext v - rw [FiniteIdeleGroup.valuationVector_apply] - by_cases hv : v ∈ m.finitePart.support - · change - (FiniteIdeleGroup.localOrder v - (if v ∈ m.finitePart.support then 1 - else FiniteIdeleGroup.chosenLocalOrderSection v (e v))).toAdd = - e v - rw [ite_eq_left hv, map_one] - exact (he v hv).symm - · change - (FiniteIdeleGroup.localOrder v - (if v ∈ m.finitePart.support then 1 - else FiniteIdeleGroup.chosenLocalOrderSection v (e v))).toAdd = - e v - rw [ite_eq_right hv, - FiniteIdeleGroup.localOrder_chosenLocalOrderSection] - -theorem primeToIdealMap_surjective (m : Modulus K) : - Function.Surjective (primeToIdealMap m) := by - intro I - let e : HeightOneSpectrum (𝓞 K) →₀ ℤ := - FractionalIdealGroup.countVector (I : FractionalIdealGroup K) - have he : ∀ v, v ∈ m.finitePart.support → e v = 0 := by - intro v hv - exact I.property v hv - let a : IdeleGroup K := - (1, valuationVectorSectionPrimeTo m e) - have ha : a ∈ idelePrimeToModulusSubgroup m := by - constructor - · exact m.infiniteCongruenceSubgroup.one_mem - · intro v hv - change - (if v ∈ m.finitePart.support then 1 - else FiniteIdeleGroup.chosenLocalOrderSection v (e v)) ∈ - localHigherUnitGroup v (m.finitePart v) - rw [ite_eq_left hv] - exact (localHigherUnitGroup v (m.finitePart v)).one_mem - refine ⟨⟨a, ha⟩, ?_⟩ - apply Subtype.ext - apply FractionalIdealGroup.ext_count - intro v - change FractionalIdeal.count K v - (((FractionalIdealGroup.factorization (K := K)) - (FiniteIdeleGroup.valuationVector - (valuationVectorSectionPrimeTo m e)) : - FractionalIdealGroup K) : - FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = - FractionalIdeal.count K v - ((I : FractionalIdealGroup K) : - FractionalIdeal (nonZeroDivisors (𝓞 K)) K) - rw [valuationVector_valuationVectorSectionPrimeTo m e he, - FractionalIdealGroup.count_factorization] - exact FractionalIdealGroup.countVector_apply I v - -theorem ideleCongruenceSubgroup_le_primeTo - (m : Modulus K) : - m.ideleCongruenceSubgroup ≤ - idelePrimeToModulusSubgroup m := by - intro a ha - exact ⟨ha.1, fun v _ => ha.2 v⟩ - -/-- The congruence subgroup, viewed inside the subgroup of ideles prime -to the modulus. -/ -def congruenceSubgroupInPrimeTo (m : Modulus K) : - Subgroup (idelePrimeToModulusSubgroup m) := - m.ideleCongruenceSubgroup.subgroupOf - (idelePrimeToModulusSubgroup m) - -theorem primeToIdealMap_ker (m : Modulus K) : - (primeToIdealMap m).ker = - congruenceSubgroupInPrimeTo m := by - ext a - constructor - · intro ha - have hintegral : - (a : IdeleGroup K) ∈ - IdeleGroup.integralAtFinitePlaces (K := K) := by - rw [← IdeleGroup.fractionalIdeal_ker, - MonoidHom.mem_ker] - exact congrArg Subtype.val - (MonoidHom.mem_ker.mp ha) - constructor - · exact a.property.1 - · intro v - by_cases hv : v ∈ m.finitePart.support - · exact a.property.2 v hv - · rw [Finsupp.notMem_support_iff.mp hv, - localHigherUnitGroup_zero] - exact hintegral v - · intro ha - apply MonoidHom.mem_ker.mpr - apply Subtype.ext - change IdeleGroup.fractionalIdeal (a : IdeleGroup K) = 1 - rw [← MonoidHom.mem_ker, - IdeleGroup.fractionalIdeal_ker] - intro v - exact localHigherUnitGroup_le_integralUnits v (m.finitePart v) (ha.2 v) - -/-- The quotient of ideles prime to a modulus by the congruence subgroup, -identified with fractional ideals prime to the modulus. -/ -def quotientCongruenceEquivPrimeToIdeals (m : Modulus K) : - idelePrimeToModulusSubgroup m ⧸ - congruenceSubgroupInPrimeTo m ≃* - primeToModulusIdeals m := by - rw [← primeToIdealMap_ker m] - exact QuotientGroup.quotientKerEquivOfSurjective - (primeToIdealMap m) (primeToIdealMap_surjective m) - -/-- Principal ideles satisfying the modulus conditions, considered inside -`I_K^(m)`. -/ -def principalSubgroupInPrimeTo (m : Modulus K) : - Subgroup (idelePrimeToModulusSubgroup m) := - Subgroup.comap (idelePrimeToModulusSubgroup m).subtype - (IdeleGroup.principalSubgroup K) - -/-- Principal ideals generated by a totally positive element congruent to -one modulo the finite modulus. -/ -def principalRayIdealSubgroup (m : Modulus K) : - Subgroup (primeToModulusIdeals m) := - Subgroup.map (primeToIdealMap m) - (principalSubgroupInPrimeTo m) - -theorem mem_principalRayIdealSubgroup_iff - (m : Modulus K) (I : primeToModulusIdeals m) : - I ∈ principalRayIdealSubgroup m ↔ - ∃ x : Kˣ, - ∃ _hx : IdeleGroup.principalIdele K x ∈ - idelePrimeToModulusSubgroup m, - toPrincipalIdeal (𝓞 K) K x = - (I : FractionalIdealGroup K) := by - constructor - · rintro ⟨a, ha, hmap⟩ - obtain ⟨x, hx⟩ := ha - refine ⟨x, ?_, ?_⟩ - · rw [hx] - exact a.property - · have hval := congrArg Subtype.val hmap - change IdeleGroup.fractionalIdeal (a : IdeleGroup K) = - (I : FractionalIdealGroup K) at hval - rw [← IdeleGroup.fractionalIdeal_principalIdele] - exact (congrArg (IdeleGroup.fractionalIdeal (K := K)) hx).trans hval - · rintro ⟨x, hx, hideal⟩ - let a : idelePrimeToModulusSubgroup m := - ⟨IdeleGroup.principalIdele K x, hx⟩ - have ha : a ∈ principalSubgroupInPrimeTo m := by - change IdeleGroup.principalIdele K x ∈ - IdeleGroup.principalSubgroup K - exact ⟨x, rfl⟩ - refine ⟨a, ha, ?_⟩ - apply Subtype.ext - change IdeleGroup.fractionalIdeal - (IdeleGroup.principalIdele K x) = - (I : FractionalIdealGroup K) - rw [IdeleGroup.fractionalIdeal_principalIdele, hideal] - -/-- The ideal-theoretic ray class group `J_K^m / P_K^m`. -/ -abbrev IdealRayClassGroup (m : Modulus K) := - primeToModulusIdeals m ⧸ principalRayIdealSubgroup m - -/-- The canonical projection from ideles prime to the modulus to the -ideal-theoretic ray class group. -/ -def idealRayProjection (m : Modulus K) : - idelePrimeToModulusSubgroup m →* - IdealRayClassGroup m := - (QuotientGroup.mk' (principalRayIdealSubgroup m)).comp - (primeToIdealMap m) - -/-- The subgroup generated by congruence ideles and principal ideles -inside the ideles prime to a modulus. -/ -def raySubgroupInPrimeTo (m : Modulus K) : - Subgroup (idelePrimeToModulusSubgroup m) := - congruenceSubgroupInPrimeTo m ⊔ - principalSubgroupInPrimeTo m - -theorem idealRayProjection_surjective (m : Modulus K) : - Function.Surjective (idealRayProjection m) := by - intro c - obtain ⟨I, rfl⟩ := - QuotientGroup.mk'_surjective - (principalRayIdealSubgroup m) c - obtain ⟨a, rfl⟩ := primeToIdealMap_surjective m I - exact ⟨a, rfl⟩ - -theorem idealRayProjection_ker (m : Modulus K) : - (idealRayProjection m).ker = - raySubgroupInPrimeTo m := by - ext a - constructor - · intro ha - change QuotientGroup.mk' - (principalRayIdealSubgroup m) - (primeToIdealMap m a) = 1 at ha - rw [QuotientGroup.mk'_apply, - QuotientGroup.eq_one_iff] at ha - obtain ⟨p, hp, hpa⟩ := ha - let n : idelePrimeToModulusSubgroup m := a * p⁻¹ - have hn : n ∈ congruenceSubgroupInPrimeTo m := by - rw [← primeToIdealMap_ker m, MonoidHom.mem_ker] - change primeToIdealMap m (a * p⁻¹) = 1 - rw [map_mul, map_inv, hpa] - simp - rw [raySubgroupInPrimeTo, Subgroup.mem_sup] - refine ⟨n, hn, p, hp, ?_⟩ - dsimp [n] - group - · intro ha - rw [raySubgroupInPrimeTo, Subgroup.mem_sup] at ha - obtain ⟨n, hn, p, hp, rfl⟩ := ha - change QuotientGroup.mk' - (principalRayIdealSubgroup m) - (primeToIdealMap m (n * p)) = 1 - rw [map_mul] - have hn' : primeToIdealMap m n = 1 := - MonoidHom.mem_ker.mp - ((primeToIdealMap_ker m).symm ▸ hn) - rw [hn', one_mul] - rw [QuotientGroup.mk'_apply, - QuotientGroup.eq_one_iff] - exact ⟨p, hp, rfl⟩ - -/-- The quotient of ideles prime to the modulus by the full ray subgroup, -identified with the ideal-theoretic ray class group. -/ -def quotientRaySubgroupEquivIdealRayClassGroup - (m : Modulus K) : - idelePrimeToModulusSubgroup m ⧸ - raySubgroupInPrimeTo m ≃* - IdealRayClassGroup m := - (QuotientGroup.quotientMulEquivOfEq - (idealRayProjection_ker m).symm).trans - (QuotientGroup.quotientKerEquivOfSurjective - (idealRayProjection m) - (idealRayProjection_surjective m)) - -/-- The quotient equivalence induced by the ideal-ray projection evaluates on -the class of a prime-to-modulus idele as the original projection. -/ -@[simp] -theorem quotientRaySubgroupEquivIdealRayClassGroup_mk - (m : Modulus K) (a : idelePrimeToModulusSubgroup m) : - quotientRaySubgroupEquivIdealRayClassGroup m - (QuotientGroup.mk' (raySubgroupInPrimeTo m) a) = - idealRayProjection m a := by - rw [quotientRaySubgroupEquivIdealRayClassGroup, - MulEquiv.trans_apply, QuotientGroup.mk'_apply, - QuotientGroup.quotientMulEquivOfEq_mk] - exact QuotientGroup.kerLift_mk (idealRayProjection m) a - -/-! ### Simultaneous approximation at the places in a modulus -/ - -/-- The finite primes in `m`, together with all infinite places. -/ -abbrev ApproximationPlace (m : Modulus K) := - (↥m.finitePart.support) ⊕ InfinitePlace K - -/-- The absolute value represented by an approximation place. -/ -abbrev approximationAbsoluteValue (m : Modulus K) : - ApproximationPlace m → AbsoluteValue K ℝ - | Sum.inl v => NumberField.HeightOneSpectrum.adicAbv K v.1 - | Sum.inr w => w.1 - -theorem adicAbv_isNontrivial - (v : HeightOneSpectrum (𝓞 K)) : - (NumberField.HeightOneSpectrum.adicAbv K v).IsNontrivial := by - obtain ⟨x, hxv, hx0⟩ := - Submodule.exists_mem_ne_zero_of_ne_bot v.ne_bot - refine ⟨algebraMap (𝓞 K) K x, ?_, ?_⟩ - · exact (FaithfulSMul.algebraMap_eq_zero_iff (𝓞 K) K).not.mpr hx0 - · apply ne_of_lt - rw [← FinitePlace.norm_embedding] - exact (FinitePlace.norm_lt_one_iff_mem (K := K) v x).2 hxv - -theorem adicAbv_not_isEquiv_of_ne - {v w : HeightOneSpectrum (𝓞 K)} (hvw : v ≠ w) : - ¬ (NumberField.HeightOneSpectrum.adicAbv K v).IsEquiv - (NumberField.HeightOneSpectrum.adicAbv K w) := by - intro h - have hnotle : ¬ v.asIdeal ≤ w.asIdeal := by - intro hvw_le - have htop_le : (⊤ : Ideal (𝓞 K)) ≤ w.asIdeal := by - rw [← (v.isCoprime_of_ne w hvw).sup_eq] - exact sup_le hvw_le le_rfl - exact w.isPrime.ne_top (top_unique htop_le) - obtain ⟨x, hxv, hxw⟩ := Set.not_subset.mp hnotle - have hvlt : - NumberField.HeightOneSpectrum.adicAbv K v - (algebraMap (𝓞 K) K x) < 1 := by - rw [← FinitePlace.norm_embedding] - exact (FinitePlace.norm_lt_one_iff_mem (K := K) v x).2 hxv - have hweq : - NumberField.HeightOneSpectrum.adicAbv K w - (algebraMap (𝓞 K) K x) = 1 := by - rw [← FinitePlace.norm_embedding] - exact (FinitePlace.norm_eq_one_iff_notMem (K := K) w x).2 hxw - exact (ne_of_lt hvlt) (h.eq_one_iff.mpr hweq) - -theorem adicAbv_not_isEquiv_infinitePlace - (v : HeightOneSpectrum (𝓞 K)) (w : InfinitePlace K) : - ¬ (NumberField.HeightOneSpectrum.adicAbv K v).IsEquiv w.1 := by - intro h - have hle : - w.1 ((2 : ℕ) : K) ≤ 1 := - h.le_one_iff.mp - (NumberField.HeightOneSpectrum.adicAbv_natCast_le_one K v 2) - have hw : - w.1 ((2 : ℕ) : K) = (2 : ℝ) := - NumberField.InfinitePlace.map_natCast w 2 - have hfalse : (2 : ℝ) ≤ 1 := hw ▸ hle - norm_num at hfalse - -theorem approximationAbsoluteValue_isNontrivial - (m : Modulus K) : - ∀ i, (approximationAbsoluteValue m i).IsNontrivial - | Sum.inl v => by - change - (NumberField.HeightOneSpectrum.adicAbv K v.1).IsNontrivial - exact adicAbv_isNontrivial v.1 - | Sum.inr w => by - change w.1.IsNontrivial - exact w.isNontrivial - -theorem approximationAbsoluteValue_pairwise - (m : Modulus K) : - Pairwise fun i j => - ¬ (approximationAbsoluteValue m i).IsEquiv - (approximationAbsoluteValue m j) := by - intro i j hij - cases i with - | inl v => - cases j with - | inl w => - apply adicAbv_not_isEquiv_of_ne - intro hvw - apply hij - exact congrArg Sum.inl (Subtype.ext hvw) - | inr w => - exact adicAbv_not_isEquiv_infinitePlace v.1 w - | inr v => - cases j with - | inl w => - exact fun h => - adicAbv_not_isEquiv_infinitePlace w.1 v h.symm - | inr w => - intro h - apply hij - congr - change v.1.IsEquiv w.1 at h - exact - (InfinitePlace.eq_iff_isEquiv (K := K)).mpr h - -/-- The corresponding product of local completions. -/ -abbrev approximationCompletion (m : Modulus K) : - ApproximationPlace m → Type _ - | Sum.inl v => v.1.adicCompletion K - | Sum.inr w => w.Completion - -noncomputable instance approximationCompletionTopologicalSpace - (m : Modulus K) (i : ApproximationPlace m) : - TopologicalSpace (approximationCompletion m i) := by - cases i <;> simp only [approximationCompletion] <;> infer_instance - -/-- Coordinatewise completion of the valued copies of `K`. -/ -def approximationCompletionMap (m : Modulus K) : - ∀ i : ApproximationPlace m, - WithAbs (approximationAbsoluteValue m i) → - approximationCompletion m i - | Sum.inl v => - fun x => - FinitePlace.embedding v.1 - (WithAbs.equiv - (NumberField.HeightOneSpectrum.adicAbv K v.1) x) - | Sum.inr w => fun x => (x : w.Completion) - -theorem denseRange_finiteApproximationCompletionMap - (v : HeightOneSpectrum (𝓞 K)) : - DenseRange - (fun x : - WithAbs (NumberField.HeightOneSpectrum.adicAbv K v) => - FinitePlace.embedding v - (WithAbs.equiv - (NumberField.HeightOneSpectrum.adicAbv K v) x)) := by - have hrange : - Set.range - (fun x : - WithAbs (NumberField.HeightOneSpectrum.adicAbv K v) => - FinitePlace.embedding v - (WithAbs.equiv - (NumberField.HeightOneSpectrum.adicAbv K v) x)) = - Set.range (algebraMap K (v.adicCompletion K)) := by - ext y - constructor - · rintro ⟨x, rfl⟩ - exact - ⟨WithAbs.equiv - (NumberField.HeightOneSpectrum.adicAbv K v) x, rfl⟩ - · rintro ⟨x, rfl⟩ - refine - ⟨(WithAbs.equiv - (NumberField.HeightOneSpectrum.adicAbv K v)).symm x, ?_⟩ - rfl - rw [DenseRange, hrange] - exact v.denseRange_algebraMap K - -theorem continuous_finiteApproximationCompletionMap - (v : HeightOneSpectrum (𝓞 K)) : - Continuous - (fun x : - WithAbs (NumberField.HeightOneSpectrum.adicAbv K v) => - FinitePlace.embedding v - (WithAbs.equiv - (NumberField.HeightOneSpectrum.adicAbv K v) x)) := by - apply Isometry.continuous - apply Isometry.of_dist_eq - intro x y - rw [dist_eq_norm, dist_eq_norm, ← map_sub, - FinitePlace.norm_embedding] - rfl - -theorem denseRange_approximationCompletionMap - (m : Modulus K) : - ∀ i, DenseRange (approximationCompletionMap m i) - | Sum.inl v => denseRange_finiteApproximationCompletionMap v.1 - | Sum.inr w => - NumberField.InfinitePlace.Completion.denseRange_coe w - -theorem continuous_approximationCompletionMap - (m : Modulus K) : - ∀ i, Continuous (approximationCompletionMap m i) - | Sum.inl v => continuous_finiteApproximationCompletionMap v.1 - | Sum.inr w => - NumberField.InfinitePlace.Completion.continuous_coe w - -/-- The diagonal embedding into the finite product of the relevant -completions. -/ -def approximationEmbedding (m : Modulus K) : - K → (i : ApproximationPlace m) → approximationCompletion m i := - (Pi.map (approximationCompletionMap m)) ∘ - algebraMap K - ((i : ApproximationPlace m) → - WithAbs (approximationAbsoluteValue m i)) - -@[simp] -theorem approximationEmbedding_finite - (m : Modulus K) (x : K) (v : ↥m.finitePart.support) : - approximationEmbedding m x (Sum.inl v) = - FinitePlace.embedding v.1 x := - rfl - -@[simp] -theorem approximationEmbedding_infinite - (m : Modulus K) (x : K) (w : InfinitePlace K) : - approximationEmbedding m x (Sum.inr w) = - (x : w.Completion) := - rfl - -theorem denseRange_approximationEmbedding (m : Modulus K) : - DenseRange (approximationEmbedding m) := by - exact - (DenseRange.piMap - (denseRange_approximationCompletionMap m)).comp - (AbsoluteValue.denseRange_algebraMap_pi - (approximationAbsoluteValue_isNontrivial m) - (approximationAbsoluteValue_pairwise m)) - (.piMap (continuous_approximationCompletionMap m)) - -/-- The open set of field elements whose ratio with a fixed unit lies in -a prescribed open unit set. -/ -def unitRatioSet - {F : Type*} [Field F] (a : Fˣ) (U : Subgroup Fˣ) : - Set F := - Units.val '' (fun y : Fˣ => a * y⁻¹) ⁻¹' (U : Set Fˣ) - -/-- The unit-ratio set associated to an open set of units is open. -/ -theorem isOpen_unitRatioSet - {F : Type*} [Field F] [TopologicalSpace F] - [IsTopologicalRing F] [ContinuousInv₀ F] [T1Space F] - (a : Fˣ) (U : Subgroup Fˣ) - (hU : IsOpen (U : Set Fˣ)) : - IsOpen (unitRatioSet a U) := by - apply IsOpenUnits.isOpenEmbedding_unitsVal.isOpenMap - exact hU.preimage (continuous_const.mul continuous_inv) - -/-- The value of the distinguished unit belongs to its unit-ratio set. -/ -theorem val_mem_unitRatioSet - {F : Type*} [Field F] (a : Fˣ) (U : Subgroup Fˣ) : - (a : F) ∈ unitRatioSet a U := by - exact ⟨a, by simp, rfl⟩ - -/-- The open local conditions that make `a / x` prime to `m`. -/ -def approximationTarget (m : Modulus K) (a : IdeleGroup K) : - ∀ i : ApproximationPlace m, Set (approximationCompletion m i) - | Sum.inl v => - unitRatioSet (a.2 v.1) - (localHigherUnitGroup v.1 (m.finitePart v.1)) - | Sum.inr w => - unitRatioSet - (ContinuousMulEquiv.piUnits a.1 w) - (m.localInfiniteCongruenceSubgroup w) - -theorem isOpen_approximationTarget - (m : Modulus K) (a : IdeleGroup K) : - ∀ i, IsOpen (approximationTarget m a i) - | Sum.inl v => by - change IsOpen - (unitRatioSet (a.2 v.1) - (localHigherUnitGroup v.1 (m.finitePart v.1))) - exact isOpen_unitRatioSet _ _ - (isOpen_localHigherUnitGroup v.1 (m.finitePart v.1)) - | Sum.inr w => by - change IsOpen - (unitRatioSet - (ContinuousMulEquiv.piUnits a.1 w) - (m.localInfiniteCongruenceSubgroup w)) - apply isOpen_unitRatioSet _ _ - classical - by_cases hw : w.IsReal - · by_cases hmem : (⟨w, hw⟩ : RealPlace K) ∈ m.infinitePart - · rw [Modulus.localInfiniteCongruenceSubgroup, - dite_eq_left hw, dite_eq_left hmem] - exact isOpen_infinitePositiveSubgroup w - · rw [Modulus.localInfiniteCongruenceSubgroup, - dite_eq_left hw, dite_eq_right hmem] - exact isOpen_univ - · rw [Modulus.localInfiniteCongruenceSubgroup, dite_eq_right hw] - exact isOpen_univ - -/-- The given idele itself lies in the product of its approximation -neighborhoods. -/ -def approximationTargetPoint - (m : Modulus K) (a : IdeleGroup K) : - (i : ApproximationPlace m) → approximationCompletion m i - | Sum.inl v => (a.2 v.1 : v.1.adicCompletion K) - | Sum.inr w => - (ContinuousMulEquiv.piUnits a.1 w : w.Completion) - -theorem approximationTargetPoint_mem - (m : Modulus K) (a : IdeleGroup K) : - approximationTargetPoint m a ∈ - Set.univ.pi (approximationTarget m a) := by - intro i _hi - cases i with - | inl v => - exact val_mem_unitRatioSet _ _ - | inr w => - exact val_mem_unitRatioSet _ _ - /-- Weak approximation in the precise open local cosets required by the modulus. -/ theorem exists_principal_quotient_mem_primeTo diff --git a/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/IdealApproximation.lean b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/IdealApproximation.lean new file mode 100644 index 0000000..168aa31 --- /dev/null +++ b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/IdealApproximation.lean @@ -0,0 +1,322 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + + +import ClassFieldTheory.AlgebraicNumberTheory.RayClass.IdealGroups + + +set_option autoImplicit false + + +open scoped NumberField WithZero Classical +open NumberField IsDedekindDomain + +noncomputable section + + +variable {K : Type*} [Field K] [NumberField K] + +namespace RayClass + +/-! ### Simultaneous approximation at the places in a modulus -/ + +/-- The finite primes in `m`, together with all infinite places. -/ +abbrev ApproximationPlace (m : Modulus K) := + (↥m.finitePart.support) ⊕ InfinitePlace K + +/-- The absolute value represented by an approximation place. -/ +abbrev approximationAbsoluteValue (m : Modulus K) : + ApproximationPlace m → AbsoluteValue K ℝ + | Sum.inl v => NumberField.HeightOneSpectrum.adicAbv K v.1 + | Sum.inr w => w.1 + +theorem adicAbv_isNontrivial + (v : HeightOneSpectrum (𝓞 K)) : + (NumberField.HeightOneSpectrum.adicAbv K v).IsNontrivial := by + obtain ⟨x, hxv, hx0⟩ := + Submodule.exists_mem_ne_zero_of_ne_bot v.ne_bot + refine ⟨algebraMap (𝓞 K) K x, ?_, ?_⟩ + · exact (FaithfulSMul.algebraMap_eq_zero_iff (𝓞 K) K).not.mpr hx0 + · apply ne_of_lt + rw [← FinitePlace.norm_embedding] + exact (FinitePlace.norm_lt_one_iff_mem (K := K) v x).2 hxv + +theorem adicAbv_not_isEquiv_of_ne + {v w : HeightOneSpectrum (𝓞 K)} (hvw : v ≠ w) : + ¬ (NumberField.HeightOneSpectrum.adicAbv K v).IsEquiv + (NumberField.HeightOneSpectrum.adicAbv K w) := by + intro h + have hnotle : ¬ v.asIdeal ≤ w.asIdeal := by + intro hvw_le + have htop_le : (⊤ : Ideal (𝓞 K)) ≤ w.asIdeal := by + rw [← (v.isCoprime_of_ne w hvw).sup_eq] + exact sup_le hvw_le le_rfl + exact w.isPrime.ne_top (top_unique htop_le) + obtain ⟨x, hxv, hxw⟩ := Set.not_subset.mp hnotle + have hvlt : + NumberField.HeightOneSpectrum.adicAbv K v + (algebraMap (𝓞 K) K x) < 1 := by + rw [← FinitePlace.norm_embedding] + exact (FinitePlace.norm_lt_one_iff_mem (K := K) v x).2 hxv + have hweq : + NumberField.HeightOneSpectrum.adicAbv K w + (algebraMap (𝓞 K) K x) = 1 := by + rw [← FinitePlace.norm_embedding] + exact (FinitePlace.norm_eq_one_iff_notMem (K := K) w x).2 hxw + exact (ne_of_lt hvlt) (h.eq_one_iff.mpr hweq) + +theorem adicAbv_not_isEquiv_infinitePlace + (v : HeightOneSpectrum (𝓞 K)) (w : InfinitePlace K) : + ¬ (NumberField.HeightOneSpectrum.adicAbv K v).IsEquiv w.1 := by + intro h + have hle : + w.1 ((2 : ℕ) : K) ≤ 1 := + h.le_one_iff.mp + (NumberField.HeightOneSpectrum.adicAbv_natCast_le_one K v 2) + have hw : + w.1 ((2 : ℕ) : K) = (2 : ℝ) := + NumberField.InfinitePlace.map_natCast w 2 + have hfalse : (2 : ℝ) ≤ 1 := hw ▸ hle + norm_num at hfalse + +theorem approximationAbsoluteValue_isNontrivial + (m : Modulus K) : + ∀ i, (approximationAbsoluteValue m i).IsNontrivial + | Sum.inl v => by + change + (NumberField.HeightOneSpectrum.adicAbv K v.1).IsNontrivial + exact adicAbv_isNontrivial v.1 + | Sum.inr w => by + change w.1.IsNontrivial + exact w.isNontrivial + +theorem approximationAbsoluteValue_pairwise + (m : Modulus K) : + Pairwise fun i j => + ¬ (approximationAbsoluteValue m i).IsEquiv + (approximationAbsoluteValue m j) := by + intro i j hij + cases i with + | inl v => + cases j with + | inl w => + apply adicAbv_not_isEquiv_of_ne + intro hvw + apply hij + exact congrArg Sum.inl (Subtype.ext hvw) + | inr w => + exact adicAbv_not_isEquiv_infinitePlace v.1 w + | inr v => + cases j with + | inl w => + exact fun h => + adicAbv_not_isEquiv_infinitePlace w.1 v h.symm + | inr w => + intro h + apply hij + congr + change v.1.IsEquiv w.1 at h + exact + (InfinitePlace.eq_iff_isEquiv (K := K)).mpr h + +/-- The corresponding product of local completions. -/ +abbrev approximationCompletion (m : Modulus K) : + ApproximationPlace m → Type _ + | Sum.inl v => v.1.adicCompletion K + | Sum.inr w => w.Completion + +noncomputable instance approximationCompletionTopologicalSpace + (m : Modulus K) (i : ApproximationPlace m) : + TopologicalSpace (approximationCompletion m i) := by + cases i <;> simp only [approximationCompletion] <;> infer_instance + +/-- Coordinatewise completion of the valued copies of `K`. -/ +def approximationCompletionMap (m : Modulus K) : + ∀ i : ApproximationPlace m, + WithAbs (approximationAbsoluteValue m i) → + approximationCompletion m i + | Sum.inl v => + fun x => + FinitePlace.embedding v.1 + (WithAbs.equiv + (NumberField.HeightOneSpectrum.adicAbv K v.1) x) + | Sum.inr w => fun x => (x : w.Completion) + +theorem denseRange_finiteApproximationCompletionMap + (v : HeightOneSpectrum (𝓞 K)) : + DenseRange + (fun x : + WithAbs (NumberField.HeightOneSpectrum.adicAbv K v) => + FinitePlace.embedding v + (WithAbs.equiv + (NumberField.HeightOneSpectrum.adicAbv K v) x)) := by + have hrange : + Set.range + (fun x : + WithAbs (NumberField.HeightOneSpectrum.adicAbv K v) => + FinitePlace.embedding v + (WithAbs.equiv + (NumberField.HeightOneSpectrum.adicAbv K v) x)) = + Set.range (algebraMap K (v.adicCompletion K)) := by + ext y + constructor + · rintro ⟨x, rfl⟩ + exact + ⟨WithAbs.equiv + (NumberField.HeightOneSpectrum.adicAbv K v) x, rfl⟩ + · rintro ⟨x, rfl⟩ + refine + ⟨(WithAbs.equiv + (NumberField.HeightOneSpectrum.adicAbv K v)).symm x, ?_⟩ + rfl + rw [DenseRange, hrange] + exact v.denseRange_algebraMap K + +theorem continuous_finiteApproximationCompletionMap + (v : HeightOneSpectrum (𝓞 K)) : + Continuous + (fun x : + WithAbs (NumberField.HeightOneSpectrum.adicAbv K v) => + FinitePlace.embedding v + (WithAbs.equiv + (NumberField.HeightOneSpectrum.adicAbv K v) x)) := by + apply Isometry.continuous + apply Isometry.of_dist_eq + intro x y + rw [dist_eq_norm, dist_eq_norm, ← map_sub, + FinitePlace.norm_embedding] + rfl + +theorem denseRange_approximationCompletionMap + (m : Modulus K) : + ∀ i, DenseRange (approximationCompletionMap m i) + | Sum.inl v => denseRange_finiteApproximationCompletionMap v.1 + | Sum.inr w => + NumberField.InfinitePlace.Completion.denseRange_coe w + +theorem continuous_approximationCompletionMap + (m : Modulus K) : + ∀ i, Continuous (approximationCompletionMap m i) + | Sum.inl v => continuous_finiteApproximationCompletionMap v.1 + | Sum.inr w => + NumberField.InfinitePlace.Completion.continuous_coe w + +/-- The diagonal embedding into the finite product of the relevant +completions. -/ +def approximationEmbedding (m : Modulus K) : + K → (i : ApproximationPlace m) → approximationCompletion m i := + (Pi.map (approximationCompletionMap m)) ∘ + algebraMap K + ((i : ApproximationPlace m) → + WithAbs (approximationAbsoluteValue m i)) + +@[simp] +theorem approximationEmbedding_finite + (m : Modulus K) (x : K) (v : ↥m.finitePart.support) : + approximationEmbedding m x (Sum.inl v) = + FinitePlace.embedding v.1 x := + rfl + +@[simp] +theorem approximationEmbedding_infinite + (m : Modulus K) (x : K) (w : InfinitePlace K) : + approximationEmbedding m x (Sum.inr w) = + (x : w.Completion) := + rfl + +theorem denseRange_approximationEmbedding (m : Modulus K) : + DenseRange (approximationEmbedding m) := by + exact + (DenseRange.piMap + (denseRange_approximationCompletionMap m)).comp + (AbsoluteValue.denseRange_algebraMap_pi + (approximationAbsoluteValue_isNontrivial m) + (approximationAbsoluteValue_pairwise m)) + (.piMap (continuous_approximationCompletionMap m)) + +/-- The open set of field elements whose ratio with a fixed unit lies in +a prescribed open unit set. -/ +def unitRatioSet + {F : Type*} [Field F] (a : Fˣ) (U : Subgroup Fˣ) : + Set F := + Units.val '' (fun y : Fˣ => a * y⁻¹) ⁻¹' (U : Set Fˣ) + +/-- The unit-ratio set associated to an open set of units is open. -/ +theorem isOpen_unitRatioSet + {F : Type*} [Field F] [TopologicalSpace F] + [IsTopologicalRing F] [ContinuousInv₀ F] [T1Space F] + (a : Fˣ) (U : Subgroup Fˣ) + (hU : IsOpen (U : Set Fˣ)) : + IsOpen (unitRatioSet a U) := by + apply IsOpenUnits.isOpenEmbedding_unitsVal.isOpenMap + exact hU.preimage (continuous_const.mul continuous_inv) + +/-- The value of the distinguished unit belongs to its unit-ratio set. -/ +theorem val_mem_unitRatioSet + {F : Type*} [Field F] (a : Fˣ) (U : Subgroup Fˣ) : + (a : F) ∈ unitRatioSet a U := by + exact ⟨a, by simp, rfl⟩ + +/-- The open local conditions that make `a / x` prime to `m`. -/ +def approximationTarget (m : Modulus K) (a : IdeleGroup K) : + ∀ i : ApproximationPlace m, Set (approximationCompletion m i) + | Sum.inl v => + unitRatioSet (a.2 v.1) + (localHigherUnitGroup v.1 (m.finitePart v.1)) + | Sum.inr w => + unitRatioSet + (ContinuousMulEquiv.piUnits a.1 w) + (m.localInfiniteCongruenceSubgroup w) + +theorem isOpen_approximationTarget + (m : Modulus K) (a : IdeleGroup K) : + ∀ i, IsOpen (approximationTarget m a i) + | Sum.inl v => by + change IsOpen + (unitRatioSet (a.2 v.1) + (localHigherUnitGroup v.1 (m.finitePart v.1))) + exact isOpen_unitRatioSet _ _ + (isOpen_localHigherUnitGroup v.1 (m.finitePart v.1)) + | Sum.inr w => by + change IsOpen + (unitRatioSet + (ContinuousMulEquiv.piUnits a.1 w) + (m.localInfiniteCongruenceSubgroup w)) + apply isOpen_unitRatioSet _ _ + classical + by_cases hw : w.IsReal + · by_cases hmem : (⟨w, hw⟩ : RealPlace K) ∈ m.infinitePart + · rw [Modulus.localInfiniteCongruenceSubgroup, + dite_eq_left hw, dite_eq_left hmem] + exact isOpen_infinitePositiveSubgroup w + · rw [Modulus.localInfiniteCongruenceSubgroup, + dite_eq_left hw, dite_eq_right hmem] + exact isOpen_univ + · rw [Modulus.localInfiniteCongruenceSubgroup, dite_eq_right hw] + exact isOpen_univ + +/-- The given idele itself lies in the product of its approximation +neighborhoods. -/ +def approximationTargetPoint + (m : Modulus K) (a : IdeleGroup K) : + (i : ApproximationPlace m) → approximationCompletion m i + | Sum.inl v => (a.2 v.1 : v.1.adicCompletion K) + | Sum.inr w => + (ContinuousMulEquiv.piUnits a.1 w : w.Completion) + +theorem approximationTargetPoint_mem + (m : Modulus K) (a : IdeleGroup K) : + approximationTargetPoint m a ∈ + Set.univ.pi (approximationTarget m a) := by + intro i _hi + cases i with + | inl v => + exact val_mem_unitRatioSet _ _ + | inr w => + exact val_mem_unitRatioSet _ _ + + +end RayClass diff --git a/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/IdealGroups.lean b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/IdealGroups.lean new file mode 100644 index 0000000..2b15f82 --- /dev/null +++ b/Lean4/ClassFieldTheory/AlgebraicNumberTheory/RayClass/IdealGroups.lean @@ -0,0 +1,417 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.AlgebraicNumberTheory.RayClass.Topology +import ClassFieldTheory.AlgebraicNumberTheory.Idele.LocallyCompact +import ClassFieldTheory.AlgebraicNumberTheory.Idele.PrincipalNorm +import ValuedFieldTheory.Valuation.AbsoluteValue.Theory.AbsoluteValues +import Mathlib.NumberTheory.NumberField.Completion.InfinitePlace +import Mathlib.Topology.Algebra.IsOpenUnits +import Mathlib.Topology.Algebra.Ring.Compact + + +set_option autoImplicit false + + +open scoped NumberField WithZero Classical +open NumberField IsDedekindDomain + +noncomputable section + + +variable {K : Type*} [Field K] [NumberField K] + +namespace RayClass + +/-- Fractional ideals having valuation zero at every finite prime in the +support of the modulus. -/ +def primeToModulusIdeals (m : Modulus K) : + Subgroup (FractionalIdealGroup K) where + carrier := {I | ∀ v, v ∈ m.finitePart.support → + FractionalIdeal.count K v + (I : FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = 0} + one_mem' v _ := FractionalIdeal.count_one K v + mul_mem' {I J} hI hJ v hv := by + rw [Units.val_mul, + FractionalIdeal.count_mul K v (Units.ne_zero I) (Units.ne_zero J), + hI v hv, hJ v hv, add_zero] + inv_mem' {I} hI v hv := by + rw [Units.val_inv_eq_inv_val, FractionalIdeal.count_inv K v, + hI v hv, neg_zero] + +@[simp] +theorem mem_primeToModulusIdeals_iff + (m : Modulus K) (I : FractionalIdealGroup K) : + I ∈ primeToModulusIdeals m ↔ + ∀ v, v ∈ m.finitePart.support → + FractionalIdeal.count K v + (I : FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = 0 := + Iff.rfl + +/-- A finite prime outside the support of `m`, regarded as an element of +the group of fractional ideals prime to `m`. -/ +def primeToModulusIdeal + (m : Modulus K) + (v : HeightOneSpectrum (𝓞 K)) + (hv : v ∉ m.finitePart.support) : + primeToModulusIdeals m := + ⟨FractionalIdealGroup.prime v, by + intro w hw + have hwv : w ≠ v := by + intro h + exact hv (h ▸ hw) + change + FractionalIdeal.count K w + (v.asIdeal : + FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = + 0 + exact + FractionalIdeal.count_maximal_coprime + K w hwv.symm⟩ + +/-- Coercing a prime outside the modulus support recovers its prime +fractional ideal. -/ +@[simp] +theorem primeToModulusIdeal_coe + (m : Modulus K) + (v : HeightOneSpectrum (𝓞 K)) + (hv : v ∉ m.finitePart.support) : + (primeToModulusIdeal m v hv : + FractionalIdealGroup K) = + FractionalIdealGroup.prime v := + rfl + +/-- Finite ideles satisfying the higher-unit condition at every prime in +the support of the modulus. -/ +def finitePrimeToModulusSubgroup (m : Modulus K) : + Subgroup (FiniteIdeleGroup K) where + carrier := {a | ∀ v, v ∈ m.finitePart.support → + a v ∈ localHigherUnitGroup v (m.finitePart v)} + one_mem' v _ := (localHigherUnitGroup v (m.finitePart v)).one_mem + mul_mem' ha hb v hv := + (localHigherUnitGroup v (m.finitePart v)).mul_mem (ha v hv) (hb v hv) + inv_mem' ha v hv := + (localHigherUnitGroup v (m.finitePart v)).inv_mem (ha v hv) + +/-- Ideles satisfying the infinite positivity and finite higher-unit +conditions of a modulus. -/ +def idelePrimeToModulusSubgroup (m : Modulus K) : + Subgroup (IdeleGroup K) := + m.infiniteCongruenceSubgroup.prod + (finitePrimeToModulusSubgroup m) + +theorem localHigherUnitGroup_le_integralUnits + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ) : + localHigherUnitGroup v n ≤ + (v.adicCompletionIntegers K).units := by + intro x hx + rw [mem_localHigherUnitGroup_iff] at hx + obtain ⟨y, rfl, _⟩ := hx + exact y.property + +theorem fractionalIdeal_mem_primeToModulusIdeals + (m : Modulus K) (a : IdeleGroup K) + (ha : a ∈ idelePrimeToModulusSubgroup m) : + IdeleGroup.fractionalIdeal a ∈ primeToModulusIdeals m := by + intro v hv + change FractionalIdeal.count K v + (((FractionalIdealGroup.factorization (K := K)) + (FiniteIdeleGroup.valuationVector a.2) : + FractionalIdealGroup K) : + FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = 0 + rw [FractionalIdealGroup.count_factorization, + FiniteIdeleGroup.valuationVector_apply] + apply (FiniteIdeleGroup.localOrder_eq_zero_iff v (a.2 v)).2 + exact localHigherUnitGroup_le_integralUnits v (m.finitePart v) (ha.2 v hv) + +/-- The fractional-ideal map restricted to ideles prime to a modulus. -/ +def primeToIdealMap (m : Modulus K) : + idelePrimeToModulusSubgroup m →* + primeToModulusIdeals m where + toFun a := + ⟨IdeleGroup.fractionalIdeal a, + fractionalIdeal_mem_primeToModulusIdeals m a a.property⟩ + map_one' := by + apply Subtype.ext + exact map_one _ + map_mul' a b := by + apply Subtype.ext + exact map_mul _ _ _ + +/-- A finite idele with a prescribed valuation vector away from the +support of a modulus and value one on its support. -/ +def valuationVectorSectionPrimeTo + (m : Modulus K) + (e : HeightOneSpectrum (𝓞 K) →₀ ℤ) : + FiniteIdeleGroup K := + ⟨fun v => + if v ∈ m.finitePart.support then 1 + else FiniteIdeleGroup.chosenLocalOrderSection v (e v), by + filter_upwards + [m.finitePart.support.eventually_cofinite_notMem, + e.support.eventually_cofinite_notMem] with v hvm he + simp only [hvm, ↓reduceIte] + apply (FiniteIdeleGroup.localOrder_eq_zero_iff v _).1 + rw [FiniteIdeleGroup.localOrder_chosenLocalOrderSection, + Finsupp.notMem_support_iff.mp he]⟩ + +theorem valuationVector_valuationVectorSectionPrimeTo + (m : Modulus K) + (e : HeightOneSpectrum (𝓞 K) →₀ ℤ) + (he : ∀ v, v ∈ m.finitePart.support → e v = 0) : + FiniteIdeleGroup.valuationVector + (valuationVectorSectionPrimeTo m e) = + Multiplicative.ofAdd e := by + apply Multiplicative.ext + ext v + rw [FiniteIdeleGroup.valuationVector_apply] + by_cases hv : v ∈ m.finitePart.support + · change + (FiniteIdeleGroup.localOrder v + (if v ∈ m.finitePart.support then 1 + else FiniteIdeleGroup.chosenLocalOrderSection v (e v))).toAdd = + e v + rw [ite_eq_left hv, map_one] + exact (he v hv).symm + · change + (FiniteIdeleGroup.localOrder v + (if v ∈ m.finitePart.support then 1 + else FiniteIdeleGroup.chosenLocalOrderSection v (e v))).toAdd = + e v + rw [ite_eq_right hv, + FiniteIdeleGroup.localOrder_chosenLocalOrderSection] + +theorem primeToIdealMap_surjective (m : Modulus K) : + Function.Surjective (primeToIdealMap m) := by + intro I + let e : HeightOneSpectrum (𝓞 K) →₀ ℤ := + FractionalIdealGroup.countVector (I : FractionalIdealGroup K) + have he : ∀ v, v ∈ m.finitePart.support → e v = 0 := by + intro v hv + exact I.property v hv + let a : IdeleGroup K := + (1, valuationVectorSectionPrimeTo m e) + have ha : a ∈ idelePrimeToModulusSubgroup m := by + constructor + · exact m.infiniteCongruenceSubgroup.one_mem + · intro v hv + change + (if v ∈ m.finitePart.support then 1 + else FiniteIdeleGroup.chosenLocalOrderSection v (e v)) ∈ + localHigherUnitGroup v (m.finitePart v) + rw [ite_eq_left hv] + exact (localHigherUnitGroup v (m.finitePart v)).one_mem + refine ⟨⟨a, ha⟩, ?_⟩ + apply Subtype.ext + apply FractionalIdealGroup.ext_count + intro v + change FractionalIdeal.count K v + (((FractionalIdealGroup.factorization (K := K)) + (FiniteIdeleGroup.valuationVector + (valuationVectorSectionPrimeTo m e)) : + FractionalIdealGroup K) : + FractionalIdeal (nonZeroDivisors (𝓞 K)) K) = + FractionalIdeal.count K v + ((I : FractionalIdealGroup K) : + FractionalIdeal (nonZeroDivisors (𝓞 K)) K) + rw [valuationVector_valuationVectorSectionPrimeTo m e he, + FractionalIdealGroup.count_factorization] + exact FractionalIdealGroup.countVector_apply I v + +theorem ideleCongruenceSubgroup_le_primeTo + (m : Modulus K) : + m.ideleCongruenceSubgroup ≤ + idelePrimeToModulusSubgroup m := by + intro a ha + exact ⟨ha.1, fun v _ => ha.2 v⟩ + +/-- The congruence subgroup, viewed inside the subgroup of ideles prime +to the modulus. -/ +def congruenceSubgroupInPrimeTo (m : Modulus K) : + Subgroup (idelePrimeToModulusSubgroup m) := + m.ideleCongruenceSubgroup.subgroupOf + (idelePrimeToModulusSubgroup m) + +theorem primeToIdealMap_ker (m : Modulus K) : + (primeToIdealMap m).ker = + congruenceSubgroupInPrimeTo m := by + ext a + constructor + · intro ha + have hintegral : + (a : IdeleGroup K) ∈ + IdeleGroup.integralAtFinitePlaces (K := K) := by + rw [← IdeleGroup.fractionalIdeal_ker, + MonoidHom.mem_ker] + exact congrArg Subtype.val + (MonoidHom.mem_ker.mp ha) + constructor + · exact a.property.1 + · intro v + by_cases hv : v ∈ m.finitePart.support + · exact a.property.2 v hv + · rw [Finsupp.notMem_support_iff.mp hv, + localHigherUnitGroup_zero] + exact hintegral v + · intro ha + apply MonoidHom.mem_ker.mpr + apply Subtype.ext + change IdeleGroup.fractionalIdeal (a : IdeleGroup K) = 1 + rw [← MonoidHom.mem_ker, + IdeleGroup.fractionalIdeal_ker] + intro v + exact localHigherUnitGroup_le_integralUnits v (m.finitePart v) (ha.2 v) + +/-- The quotient of ideles prime to a modulus by the congruence subgroup, +identified with fractional ideals prime to the modulus. -/ +def quotientCongruenceEquivPrimeToIdeals (m : Modulus K) : + idelePrimeToModulusSubgroup m ⧸ + congruenceSubgroupInPrimeTo m ≃* + primeToModulusIdeals m := by + rw [← primeToIdealMap_ker m] + exact QuotientGroup.quotientKerEquivOfSurjective + (primeToIdealMap m) (primeToIdealMap_surjective m) + +/-- Principal ideles satisfying the modulus conditions, considered inside +`I_K^(m)`. -/ +def principalSubgroupInPrimeTo (m : Modulus K) : + Subgroup (idelePrimeToModulusSubgroup m) := + Subgroup.comap (idelePrimeToModulusSubgroup m).subtype + (IdeleGroup.principalSubgroup K) + +/-- Principal ideals generated by a totally positive element congruent to +one modulo the finite modulus. -/ +def principalRayIdealSubgroup (m : Modulus K) : + Subgroup (primeToModulusIdeals m) := + Subgroup.map (primeToIdealMap m) + (principalSubgroupInPrimeTo m) + +theorem mem_principalRayIdealSubgroup_iff + (m : Modulus K) (I : primeToModulusIdeals m) : + I ∈ principalRayIdealSubgroup m ↔ + ∃ x : Kˣ, + ∃ _hx : IdeleGroup.principalIdele K x ∈ + idelePrimeToModulusSubgroup m, + toPrincipalIdeal (𝓞 K) K x = + (I : FractionalIdealGroup K) := by + constructor + · rintro ⟨a, ha, hmap⟩ + obtain ⟨x, hx⟩ := ha + refine ⟨x, ?_, ?_⟩ + · rw [hx] + exact a.property + · have hval := congrArg Subtype.val hmap + change IdeleGroup.fractionalIdeal (a : IdeleGroup K) = + (I : FractionalIdealGroup K) at hval + rw [← IdeleGroup.fractionalIdeal_principalIdele] + exact (congrArg (IdeleGroup.fractionalIdeal (K := K)) hx).trans hval + · rintro ⟨x, hx, hideal⟩ + let a : idelePrimeToModulusSubgroup m := + ⟨IdeleGroup.principalIdele K x, hx⟩ + have ha : a ∈ principalSubgroupInPrimeTo m := by + change IdeleGroup.principalIdele K x ∈ + IdeleGroup.principalSubgroup K + exact ⟨x, rfl⟩ + refine ⟨a, ha, ?_⟩ + apply Subtype.ext + change IdeleGroup.fractionalIdeal + (IdeleGroup.principalIdele K x) = + (I : FractionalIdealGroup K) + rw [IdeleGroup.fractionalIdeal_principalIdele, hideal] + +/-- The ideal-theoretic ray class group `J_K^m / P_K^m`. -/ +abbrev IdealRayClassGroup (m : Modulus K) := + primeToModulusIdeals m ⧸ principalRayIdealSubgroup m + +/-- The canonical projection from ideles prime to the modulus to the +ideal-theoretic ray class group. -/ +def idealRayProjection (m : Modulus K) : + idelePrimeToModulusSubgroup m →* + IdealRayClassGroup m := + (QuotientGroup.mk' (principalRayIdealSubgroup m)).comp + (primeToIdealMap m) + +/-- The subgroup generated by congruence ideles and principal ideles +inside the ideles prime to a modulus. -/ +def raySubgroupInPrimeTo (m : Modulus K) : + Subgroup (idelePrimeToModulusSubgroup m) := + congruenceSubgroupInPrimeTo m ⊔ + principalSubgroupInPrimeTo m + +theorem idealRayProjection_surjective (m : Modulus K) : + Function.Surjective (idealRayProjection m) := by + intro c + obtain ⟨I, rfl⟩ := + QuotientGroup.mk'_surjective + (principalRayIdealSubgroup m) c + obtain ⟨a, rfl⟩ := primeToIdealMap_surjective m I + exact ⟨a, rfl⟩ + +theorem idealRayProjection_ker (m : Modulus K) : + (idealRayProjection m).ker = + raySubgroupInPrimeTo m := by + ext a + constructor + · intro ha + change QuotientGroup.mk' + (principalRayIdealSubgroup m) + (primeToIdealMap m a) = 1 at ha + rw [QuotientGroup.mk'_apply, + QuotientGroup.eq_one_iff] at ha + obtain ⟨p, hp, hpa⟩ := ha + let n : idelePrimeToModulusSubgroup m := a * p⁻¹ + have hn : n ∈ congruenceSubgroupInPrimeTo m := by + rw [← primeToIdealMap_ker m, MonoidHom.mem_ker] + change primeToIdealMap m (a * p⁻¹) = 1 + rw [map_mul, map_inv, hpa] + simp + rw [raySubgroupInPrimeTo, Subgroup.mem_sup] + refine ⟨n, hn, p, hp, ?_⟩ + dsimp [n] + group + · intro ha + rw [raySubgroupInPrimeTo, Subgroup.mem_sup] at ha + obtain ⟨n, hn, p, hp, rfl⟩ := ha + change QuotientGroup.mk' + (principalRayIdealSubgroup m) + (primeToIdealMap m (n * p)) = 1 + rw [map_mul] + have hn' : primeToIdealMap m n = 1 := + MonoidHom.mem_ker.mp + ((primeToIdealMap_ker m).symm ▸ hn) + rw [hn', one_mul] + rw [QuotientGroup.mk'_apply, + QuotientGroup.eq_one_iff] + exact ⟨p, hp, rfl⟩ + +/-- The quotient of ideles prime to the modulus by the full ray subgroup, +identified with the ideal-theoretic ray class group. -/ +def quotientRaySubgroupEquivIdealRayClassGroup + (m : Modulus K) : + idelePrimeToModulusSubgroup m ⧸ + raySubgroupInPrimeTo m ≃* + IdealRayClassGroup m := + (QuotientGroup.quotientMulEquivOfEq + (idealRayProjection_ker m).symm).trans + (QuotientGroup.quotientKerEquivOfSurjective + (idealRayProjection m) + (idealRayProjection_surjective m)) + +/-- The quotient equivalence induced by the ideal-ray projection evaluates on +the class of a prime-to-modulus idele as the original projection. -/ +@[simp] +theorem quotientRaySubgroupEquivIdealRayClassGroup_mk + (m : Modulus K) (a : idelePrimeToModulusSubgroup m) : + quotientRaySubgroupEquivIdealRayClassGroup m + (QuotientGroup.mk' (raySubgroupInPrimeTo m) a) = + idealRayProjection m a := by + rw [quotientRaySubgroupEquivIdealRayClassGroup, + MulEquiv.trans_apply, QuotientGroup.mk'_apply, + QuotientGroup.quotientMulEquivOfEq_mk] + exact QuotientGroup.kerLift_mk (idealRayProjection m) a + + +end RayClass diff --git a/Lean4/ClassFieldTheory/Definitions/ConductorsAndRayClassFields/RayClassIdealModulusProjection.lean b/Lean4/ClassFieldTheory/Definitions/ConductorsAndRayClassFields/RayClassIdealModulusProjection.lean index e37e3df..415463a 100644 --- a/Lean4/ClassFieldTheory/Definitions/ConductorsAndRayClassFields/RayClassIdealModulusProjection.lean +++ b/Lean4/ClassFieldTheory/Definitions/ConductorsAndRayClassFields/RayClassIdealModulusProjection.lean @@ -90,7 +90,7 @@ private theorem rayCongruent_of_le · intro v hv exact hx.2 v (hmn.2 hv) -private theorem rayPrimeToIdeals_antitone +theorem rayPrimeToIdeals_antitone {K : Type u} [Field K] [NumberField K] {m n : RayClassModulus K} (hmn : m ≤ n) : rayClassPrimeToIdeals n ≤ rayClassPrimeToIdeals m := by diff --git a/Lean4/ClassFieldTheory/Definitions/ConductorsAndRayClassFields/RayClassOfFinitePrime.lean b/Lean4/ClassFieldTheory/Definitions/ConductorsAndRayClassFields/RayClassOfFinitePrime.lean index a3e9746..d8d3db5 100644 --- a/Lean4/ClassFieldTheory/Definitions/ConductorsAndRayClassFields/RayClassOfFinitePrime.lean +++ b/Lean4/ClassFieldTheory/Definitions/ConductorsAndRayClassFields/RayClassOfFinitePrime.lean @@ -9,6 +9,7 @@ import ClassFieldTheory.Definitions.ConductorsAndRayClassFields.OrdinaryRayClass import ClassFieldTheory.Definitions.ConductorsAndRayClassFields.RayClassGroup import ClassFieldTheory.Definitions.FrobeniusAndHilbertClassFields.FinitePrimeFractionalIdeal + set_option autoImplicit false /-! @@ -24,7 +25,7 @@ namespace ClassFieldTheory universe u -private lemma finitePrimeFractionalIdeal_mem_primeTo +lemma finitePrimeFractionalIdeal_mem_primeTo {K : Type u} [Field K] [NumberField K] (m : RayClassModulus K) (v : HeightOneSpectrum (𝓞 K)) diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocity.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocity.lean index 053f2b7..e213e03 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocity.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocity.lean @@ -4,158 +4,18 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.RayClassFieldRealization -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.ArithmeticNormalization +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ArithmeticRayClassFieldReciprocityNormResidue set_option autoImplicit false - -/-! -# Arithmetic reciprocity for actual ray class fields - -This is the canonical topological isomorphism -`Gal(Kᵐ/K) ≃ₜ* C_K/C_Kᵐ` with arithmetic Frobenius -normalization. It uses the actual selected ray class field, its exact -idèle norm range, the finite Krull topology, and the native ray-class -quotient topology. --/ - open scoped Classical NumberField - noncomputable section - namespace GlobalClassFieldTheory namespace GlobalClassFields - open NumberField open Reciprocity - -private theorem arithmeticRayClassIdeleClassGroupIsMulCommutative - {F : Type} [Field F] [NumberField F] : - IsMulCommutative (IdeleClassGroup F) := - ⟨⟨fun a b => mul_comm a b⟩⟩ - attribute [local instance] arithmeticRayClassIdeleClassGroupIsMulCommutative - variable {K : Type} [Field K] [NumberField K] -/-- Arithmetic reciprocity followed by transport between equal norm -quotients sends a norm-residue symbol to its represented quotient class. -/ -private theorem - arithmeticReciprocity_quotientMulEquivOfEq_globalNormResidue - {F E : Type} [Field F] [NumberField F] - [Field E] [NumberField E] [Algebra F E] - [FiniteDimensional F E] [IsAbelianGalois F E] - (H : Subgroup (IdeleClassGroup F)) - (h : (_root_.ideleClassNorm F E).range = H) - (c : IdeleClassGroup F) : - QuotientGroup.quotientMulEquivOfEq h - (arithmeticGlobalReciprocityContinuousMulEquiv F E - (arithmeticGlobalNormResidueMonoidHom F E c)) = - QuotientGroup.mk' H c := by - let e := arithmeticGlobalReciprocityContinuousMulEquiv F E - let q := - QuotientGroup.mk' - (_root_.ideleClassNorm F E).range c - have hsymm : - e.symm q = arithmeticGlobalNormResidueMonoidHom F E c := - arithmeticGlobalReciprocityContinuousMulEquiv_symm_mk F E c - have he : - e (arithmeticGlobalNormResidueMonoidHom F E c) = q := by - calc - e (arithmeticGlobalNormResidueMonoidHom F E c) = - e (e.symm q) := - congrArg (fun σ => e σ) hsymm.symm - _ = q := e.apply_symm_apply q - calc - QuotientGroup.quotientMulEquivOfEq h - (arithmeticGlobalReciprocityContinuousMulEquiv F E - (arithmeticGlobalNormResidueMonoidHom F E c)) = - QuotientGroup.quotientMulEquivOfEq h q := - congrArg (fun x => QuotientGroup.quotientMulEquivOfEq h x) he - _ = QuotientGroup.mk' H c := - QuotientGroup.quotientMulEquivOfEq_mk h c - -/-- Arithmetic global reciprocity for the actual selected ray class -field, bundled with both native topologies. -/ -noncomputable def - arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup - (m : RayClass.Modulus K) : - Gal((rayClassField K m) / K) ≃ₜ* - RayClass.RayClassGroup m := by - letI normQuotientDiscreteTopology : DiscreteTopology - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm - K (rayClassField K m)).range) := - ideleClassNormQuotient_discreteTopology - K (rayClassField K m) - letI rayClassGroupDiscreteTopology : DiscreteTopology - (RayClass.RayClassGroup m) := - QuotientGroup.discreteTopology - (RayClass.isOpen_congruenceSubgroup m) - let quotientTransport : - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm - K (rayClassField K m)).range) ≃ₜ* - RayClass.RayClassGroup m := - { QuotientGroup.quotientMulEquivOfEq - (rayClassField_ideleClassNorm_range_over_original - (K := K) m) with - continuous_toFun := continuous_of_discreteTopology - continuous_invFun := continuous_of_discreteTopology } - exact - (arithmeticGlobalReciprocityContinuousMulEquiv - K (rayClassField K m)).trans - quotientTransport - -/-- Pointwise evaluation of arithmetic ray-class reciprocity separates -global reciprocity from the transport between the equal norm quotients. -/ -private theorem - arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup_apply - (m : RayClass.Modulus K) - (σ : Gal((rayClassField K m) / K)) : - arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup - (K := K) m σ = - QuotientGroup.quotientMulEquivOfEq - (rayClassField_ideleClassNorm_range_over_original - (K := K) m) - (arithmeticGlobalReciprocityContinuousMulEquiv - K (rayClassField K m) σ) := by - rfl - -/-- Arithmetic ray-class reciprocity sends the arithmetic global -norm-residue symbol of an idèle class to its literal ray class. -/ -@[simp] -theorem - arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup_globalNormResidue - (m : RayClass.Modulus K) - (c : IdeleClassGroup K) : - arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup - (K := K) m - (arithmeticGlobalNormResidueMonoidHom - K (rayClassField K m) c) = - QuotientGroup.mk' - (RayClass.Modulus.congruenceSubgroup m) c := by - calc - arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup - (K := K) m - (arithmeticGlobalNormResidueMonoidHom - K (rayClassField K m) c) = - QuotientGroup.quotientMulEquivOfEq - (rayClassField_ideleClassNorm_range_over_original - (K := K) m) - (arithmeticGlobalReciprocityContinuousMulEquiv - K (rayClassField K m) - (arithmeticGlobalNormResidueMonoidHom - K (rayClassField K m) c)) := - arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup_apply - (K := K) m _ - _ = QuotientGroup.mk' - (RayClass.Modulus.congruenceSubgroup m) c := - arithmeticReciprocity_quotientMulEquivOfEq_globalNormResidue - (RayClass.Modulus.congruenceSubgroup m) - (rayClassField_ideleClassNorm_range_over_original - (K := K) m) c - /-- Inverse arithmetic ray reciprocity sends a represented ray class back to the arithmetic global norm-residue symbol. -/ @[simp] diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocityBase.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocityBase.lean new file mode 100644 index 0000000..6519cd0 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocityBase.lean @@ -0,0 +1,112 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.RayClassFieldRealization +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.ArithmeticNormalization + + +set_option autoImplicit false + +/-! +# Arithmetic reciprocity for actual ray class fields + +This is the canonical topological isomorphism +`Gal(Kᵐ/K) ≃ₜ* C_K/C_Kᵐ` with arithmetic Frobenius +normalization. It uses the actual selected ray class field, its exact +idèle norm range, the finite Krull topology, and the native ray-class +quotient topology. +-/ + +open scoped Classical NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace GlobalClassFields + +open NumberField +open Reciprocity + +theorem arithmeticRayClassIdeleClassGroupIsMulCommutative + {F : Type} [Field F] [NumberField F] : + IsMulCommutative (IdeleClassGroup F) := + ⟨⟨fun a b => mul_comm a b⟩⟩ + +attribute [local instance] arithmeticRayClassIdeleClassGroupIsMulCommutative + +variable {K : Type} [Field K] [NumberField K] + +/-- Arithmetic reciprocity followed by transport between equal norm +quotients sends a norm-residue symbol to its represented quotient class. -/ +theorem + arithmeticReciprocity_quotientMulEquivOfEq_globalNormResidue + {F E : Type} [Field F] [NumberField F] + [Field E] [NumberField E] [Algebra F E] + [FiniteDimensional F E] [IsAbelianGalois F E] + (H : Subgroup (IdeleClassGroup F)) + (h : (_root_.ideleClassNorm F E).range = H) + (c : IdeleClassGroup F) : + QuotientGroup.quotientMulEquivOfEq h + (arithmeticGlobalReciprocityContinuousMulEquiv F E + (arithmeticGlobalNormResidueMonoidHom F E c)) = + QuotientGroup.mk' H c := by + let e := arithmeticGlobalReciprocityContinuousMulEquiv F E + let q := + QuotientGroup.mk' + (_root_.ideleClassNorm F E).range c + have hsymm : + e.symm q = arithmeticGlobalNormResidueMonoidHom F E c := + arithmeticGlobalReciprocityContinuousMulEquiv_symm_mk F E c + have he : + e (arithmeticGlobalNormResidueMonoidHom F E c) = q := by + calc + e (arithmeticGlobalNormResidueMonoidHom F E c) = + e (e.symm q) := + congrArg (fun σ => e σ) hsymm.symm + _ = q := e.apply_symm_apply q + calc + QuotientGroup.quotientMulEquivOfEq h + (arithmeticGlobalReciprocityContinuousMulEquiv F E + (arithmeticGlobalNormResidueMonoidHom F E c)) = + QuotientGroup.quotientMulEquivOfEq h q := + congrArg (fun x => QuotientGroup.quotientMulEquivOfEq h x) he + _ = QuotientGroup.mk' H c := + QuotientGroup.quotientMulEquivOfEq_mk h c + +/-- Arithmetic global reciprocity for the actual selected ray class +field, bundled with both native topologies. -/ +noncomputable def + arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup + (m : RayClass.Modulus K) : + Gal((rayClassField K m) / K) ≃ₜ* + RayClass.RayClassGroup m := by + letI normQuotientDiscreteTopology : DiscreteTopology + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm + K (rayClassField K m)).range) := + ideleClassNormQuotient_discreteTopology + K (rayClassField K m) + letI rayClassGroupDiscreteTopology : DiscreteTopology + (RayClass.RayClassGroup m) := + QuotientGroup.discreteTopology + (RayClass.isOpen_congruenceSubgroup m) + let quotientTransport : + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm + K (rayClassField K m)).range) ≃ₜ* + RayClass.RayClassGroup m := + { QuotientGroup.quotientMulEquivOfEq + (rayClassField_ideleClassNorm_range_over_original + (K := K) m) with + continuous_toFun := continuous_of_discreteTopology + continuous_invFun := continuous_of_discreteTopology } + exact + (arithmeticGlobalReciprocityContinuousMulEquiv + K (rayClassField K m)).trans + quotientTransport + +end GlobalClassFields +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocityEvaluation.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocityEvaluation.lean new file mode 100644 index 0000000..41d3435 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocityEvaluation.lean @@ -0,0 +1,51 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ArithmeticRayClassFieldReciprocityBase + +set_option autoImplicit false +open scoped Classical NumberField +noncomputable section +namespace GlobalClassFieldTheory +namespace GlobalClassFields +open NumberField +open Reciprocity +attribute [local instance] arithmeticRayClassIdeleClassGroupIsMulCommutative +private theorem mulEquiv_toEquiv_apply + {A B : Type*} [Mul A] [Mul B] + (e : A ≃* B) (x : A) : e.toEquiv x = e x := by rfl + +private theorem continuousMulEquiv_toMulEquiv_apply + {A B : Type*} [TopologicalSpace A] [TopologicalSpace B] [Mul A] [Mul B] + (e : A ≃ₜ* B) (x : A) : e.toMulEquiv x = e x := by rfl + +variable {K : Type} [Field K] [NumberField K] + + +/-- Evaluation of ray class reciprocity is global reciprocity transported +through the equality of the ray norm subgroup and the idele norm range. -/ +theorem + arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup_apply + (m : RayClass.Modulus K) + (σ : Gal((rayClassField K m) / K)) : + arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup + (K := K) m σ = + QuotientGroup.quotientMulEquivOfEq + (rayClassField_ideleClassNorm_range_over_original + (K := K) m) + (arithmeticGlobalReciprocityContinuousMulEquiv + K (rayClassField K m) σ) := by + simp only [arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup, + ContinuousMulEquiv.trans, MulEquiv.trans, Equiv.trans, + ContinuousMulEquiv.coe_mk, MulEquiv.coe_mk, Equiv.coe_fn_mk, + Function.comp_apply, + mulEquiv_toEquiv_apply] + have h := continuousMulEquiv_toMulEquiv_apply + (arithmeticGlobalReciprocityContinuousMulEquiv K (rayClassField K m)) σ + with_reducible exact congrArg (fun q => QuotientGroup.quotientMulEquivOfEq (rayClassField_ideleClassNorm_range_over_original (K := K) m) q) h + +end GlobalClassFields +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocityNormResidue.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocityNormResidue.lean new file mode 100644 index 0000000..ce8c03e --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/ArithmeticRayClassFieldReciprocityNormResidue.lean @@ -0,0 +1,54 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ArithmeticRayClassFieldReciprocityEvaluation + +set_option autoImplicit false +open scoped Classical NumberField +noncomputable section +namespace GlobalClassFieldTheory +namespace GlobalClassFields +open NumberField +open Reciprocity +attribute [local instance] arithmeticRayClassIdeleClassGroupIsMulCommutative +variable {K : Type} [Field K] [NumberField K] + +/-- Arithmetic ray-class reciprocity sends the arithmetic global +norm-residue symbol of an idèle class to its literal ray class. -/ +@[simp] +theorem + arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup_globalNormResidue + (m : RayClass.Modulus K) + (c : IdeleClassGroup K) : + arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup + (K := K) m + (arithmeticGlobalNormResidueMonoidHom + K (rayClassField K m) c) = + QuotientGroup.mk' + (RayClass.Modulus.congruenceSubgroup m) c := by + calc + arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup + (K := K) m + (arithmeticGlobalNormResidueMonoidHom + K (rayClassField K m) c) = + QuotientGroup.quotientMulEquivOfEq + (rayClassField_ideleClassNorm_range_over_original + (K := K) m) + (arithmeticGlobalReciprocityContinuousMulEquiv + K (rayClassField K m) + (arithmeticGlobalNormResidueMonoidHom + K (rayClassField K m) c)) := + arithmeticRayClassFieldGaloisContinuousMulEquivRayClassGroup_apply + (K := K) m _ + _ = QuotientGroup.mk' + (RayClass.Modulus.congruenceSubgroup m) c := + arithmeticReciprocity_quotientMulEquivOfEq_globalNormResidue + (RayClass.Modulus.congruenceSubgroup m) + (rayClassField_ideleClassNorm_range_over_original + (K := K) m) c + +end GlobalClassFields +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActual.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActual.lean index 11beea0..7ab1c83 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActual.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActual.lean @@ -4,106 +4,17 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.HilbertClassFieldReciprocity.Transport -import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.BigHilbertClassFieldNaturality -import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.HilbertClassFieldComparison -set_option autoImplicit false - -/-! -# Big Hilbert reciprocity over the realized base field - -This leaf specializes the shared reciprocity transport to the actual base -field of the selected big Hilbert class field. --/ +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.HilbertClassFieldReciprocity.BigActualEquiv +set_option autoImplicit false open scoped Classical IsMulCommutative NumberField - noncomputable section - namespace GlobalClassFieldTheory namespace GlobalClassFields - open Reciprocity - variable {K : Type} [Field K] [NumberField K] - -local instance - bigHilbertClassFieldReciprocityIdeleClassGroupIsMulCommutative - {F : Type} [Field F] [NumberField F] : - IsMulCommutative (IdeleClassGroup F) := - hilbertClassFieldReciprocityIdeleClassGroupIsMulCommutative - -/-- The actual norm range of the selected big Hilbert class field is -the intrinsic big-Hilbert norm subgroup of its actual base field. -/ -theorem bigHilbertClassField_ideleClassNorm_range_eq_intrinsic : - (_root_.ideleClassNorm - (bigHilbertClassFieldBase K) - (bigHilbertClassField K)).range = - bigHilbertClassFieldNormSubgroup - (K := bigHilbertClassFieldBase K) := by - rw [bigHilbertClassField_ideleClassNorm_range] - exact - bigHilbertClassFieldNormSubgroup_map_ideleClassCongr - (bigHilbertClassFieldBaseEquiv (K := K)) - -/-- Global reciprocity identifies the genuine Galois group of the -selected big Hilbert class field with the narrow ideal class group of -the original number field. -/ -private noncomputable def bigHilbertClassFieldReciprocityData : - {e : Gal((bigHilbertClassField K) / - (bigHilbertClassFieldBase K)) ≃* - RayClass.NarrowClassGroup K // - ∀ c : IdeleClassGroup (bigHilbertClassFieldBase K), - e (globalNormResidueMonoidHom - (bigHilbertClassFieldBase K) - (bigHilbertClassField K) c) = - bigHilbertNarrowClassGroupCongr - (bigHilbertClassFieldBaseEquiv (K := K)).symm - (bigHilbertClassFieldQuotientEquivNarrowClassGroup - (K := bigHilbertClassFieldBase K) - (QuotientGroup.mk' - (bigHilbertClassFieldNormSubgroup - (K := bigHilbertClassFieldBase K)) c))} := by - let d := hilbertClassFieldGlobalReciprocityTransportData - (bigHilbertClassFieldNormSubgroup - (K := bigHilbertClassFieldBase K)) - (bigHilbertClassField_ideleClassNorm_range_eq_intrinsic - (K := K)) - ((bigHilbertClassFieldQuotientEquivNarrowClassGroup - (K := bigHilbertClassFieldBase K)).trans - (bigHilbertNarrowClassGroupCongr - (bigHilbertClassFieldBaseEquiv (K := K)).symm)) - refine ⟨d.1, ?_⟩ - intro c - exact d.2 c - -/-- The reciprocity equivalence from the actual big Hilbert Galois group -to the narrow class group of the original number field. -/ -noncomputable def bigHilbertClassFieldGaloisEquivNarrowClassGroup : - Gal((bigHilbertClassField K) / - (bigHilbertClassFieldBase K)) ≃* - RayClass.NarrowClassGroup K := - (bigHilbertClassFieldReciprocityData (K := K)).1 - -/-- Under big-Hilbert reciprocity, the actual global norm-residue -symbol is the narrow ideal class of its idèle-class representative, -transported back to the original number field. -/ -@[simp] -theorem bigHilbertClassFieldGaloisEquivNarrowClassGroup_globalNormResidue - (c : IdeleClassGroup (bigHilbertClassFieldBase K)) : - bigHilbertClassFieldGaloisEquivNarrowClassGroup (K := K) - (globalNormResidueMonoidHom - (bigHilbertClassFieldBase K) - (bigHilbertClassField K) c) = - bigHilbertNarrowClassGroupCongr - (bigHilbertClassFieldBaseEquiv (K := K)).symm - (bigHilbertClassFieldQuotientEquivNarrowClassGroup - (K := bigHilbertClassFieldBase K) - (QuotientGroup.mk' - (bigHilbertClassFieldNormSubgroup - (K := bigHilbertClassFieldBase K)) c)) := by - exact (bigHilbertClassFieldReciprocityData (K := K)).2 c +attribute [local instance] bigHilbertClassFieldReciprocityIdeleClassGroupIsMulCommutative /-- Representative form of big-Hilbert reciprocity: the global norm-residue symbol of an actual idèle maps to its narrow ideal diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActualData.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActualData.lean new file mode 100644 index 0000000..4dd276f --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActualData.lean @@ -0,0 +1,84 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.HilbertClassFieldReciprocity.Transport +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.BigHilbertClassFieldNaturality +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.HilbertClassFieldComparison + + +set_option autoImplicit false + +/-! +# Big Hilbert reciprocity over the realized base field + +This leaf specializes the shared reciprocity transport to the actual base +field of the selected big Hilbert class field. +-/ + +open scoped Classical IsMulCommutative NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace GlobalClassFields + +open Reciprocity + +variable {K : Type} [Field K] [NumberField K] + +local instance + bigHilbertClassFieldReciprocityIdeleClassGroupIsMulCommutative + {F : Type} [Field F] [NumberField F] : + IsMulCommutative (IdeleClassGroup F) := + hilbertClassFieldReciprocityIdeleClassGroupIsMulCommutative + +/-- The actual norm range of the selected big Hilbert class field is +the intrinsic big-Hilbert norm subgroup of its actual base field. -/ +theorem bigHilbertClassField_ideleClassNorm_range_eq_intrinsic : + (_root_.ideleClassNorm + (bigHilbertClassFieldBase K) + (bigHilbertClassField K)).range = + bigHilbertClassFieldNormSubgroup + (K := bigHilbertClassFieldBase K) := by + rw [bigHilbertClassField_ideleClassNorm_range] + exact + bigHilbertClassFieldNormSubgroup_map_ideleClassCongr + (bigHilbertClassFieldBaseEquiv (K := K)) + +/-- Global reciprocity identifies the genuine Galois group of the +selected big Hilbert class field with the narrow ideal class group of +the original number field. -/ +noncomputable def bigHilbertClassFieldReciprocityData : + {e : Gal((bigHilbertClassField K) / + (bigHilbertClassFieldBase K)) ≃* + RayClass.NarrowClassGroup K // + ∀ c : IdeleClassGroup (bigHilbertClassFieldBase K), + e (globalNormResidueMonoidHom + (bigHilbertClassFieldBase K) + (bigHilbertClassField K) c) = + bigHilbertNarrowClassGroupCongr + (bigHilbertClassFieldBaseEquiv (K := K)).symm + (bigHilbertClassFieldQuotientEquivNarrowClassGroup + (K := bigHilbertClassFieldBase K) + (QuotientGroup.mk' + (bigHilbertClassFieldNormSubgroup + (K := bigHilbertClassFieldBase K)) c))} := by + let d := hilbertClassFieldGlobalReciprocityTransportData + (bigHilbertClassFieldNormSubgroup + (K := bigHilbertClassFieldBase K)) + (bigHilbertClassField_ideleClassNorm_range_eq_intrinsic + (K := K)) + ((bigHilbertClassFieldQuotientEquivNarrowClassGroup + (K := bigHilbertClassFieldBase K)).trans + (bigHilbertNarrowClassGroupCongr + (bigHilbertClassFieldBaseEquiv (K := K)).symm)) + refine ⟨d.1, ?_⟩ + intro c + exact d.2 c + + +end GlobalClassFields +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActualEquiv.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActualEquiv.lean new file mode 100644 index 0000000..19f756c --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/GlobalClassFields/HilbertClassFieldReciprocity/BigActualEquiv.lean @@ -0,0 +1,48 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + + +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.HilbertClassFieldReciprocity.BigActualData + +set_option autoImplicit false +open scoped Classical IsMulCommutative NumberField +noncomputable section +namespace GlobalClassFieldTheory +namespace GlobalClassFields +open Reciprocity +variable {K : Type} [Field K] [NumberField K] +attribute [local instance] bigHilbertClassFieldReciprocityIdeleClassGroupIsMulCommutative + +/-- The reciprocity equivalence from the actual big Hilbert Galois group +to the narrow class group of the original number field. -/ +noncomputable def bigHilbertClassFieldGaloisEquivNarrowClassGroup : + Gal((bigHilbertClassField K) / + (bigHilbertClassFieldBase K)) ≃* + RayClass.NarrowClassGroup K := + (bigHilbertClassFieldReciprocityData (K := K)).1 + +/-- Under big-Hilbert reciprocity, the actual global norm-residue +symbol is the narrow ideal class of its idèle-class representative, +transported back to the original number field. -/ +@[simp] +theorem bigHilbertClassFieldGaloisEquivNarrowClassGroup_globalNormResidue + (c : IdeleClassGroup (bigHilbertClassFieldBase K)) : + bigHilbertClassFieldGaloisEquivNarrowClassGroup (K := K) + (globalNormResidueMonoidHom + (bigHilbertClassFieldBase K) + (bigHilbertClassField K) c) = + bigHilbertNarrowClassGroupCongr + (bigHilbertClassFieldBaseEquiv (K := K)).symm + (bigHilbertClassFieldQuotientEquivNarrowClassGroup + (K := bigHilbertClassFieldBase K) + (QuotientGroup.mk' + (bigHilbertClassFieldNormSubgroup + (K := bigHilbertClassFieldBase K)) c)) := by + exact (bigHilbertClassFieldReciprocityData (K := K)).2 c + + +end GlobalClassFields +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/RationalFiniteNormTransfer/Representatives.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/RationalFiniteNormTransfer/Representatives.lean index a5d0b1a..45c9a3e 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/RationalFiniteNormTransfer/Representatives.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/RationalFiniteNormTransfer/Representatives.lean @@ -6,6 +6,7 @@ Authors: Naganori Yamaguchi (assisted by OpenAI Codex) import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.RationalFiniteNormTransfer.FieldSpine + set_option autoImplicit false /-! @@ -56,7 +57,8 @@ noncomputable def rationalFiniteNormTransferAbstractRepresentative [hfinite : Finite (K.toSubgroup ⧸ extensionSubgroup K L hLK)] (a : KummerTheory.ambientFixedAddSubgroup - rationalIdeleClassRepresentation K) := by + rationalIdeleClassRepresentation K) : + rationalFiniteNormTransferExtensionIdeleClass K L hLK := by letI hLfinite := RationalFiniteNormTransferInternal.absoluteFinite K L hLK (hKfinite := hKfinite) (hfinite := hfinite) let E := abstractRelativeFixedField ℚ (SeparableClosure ℚ) hLK diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalization.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalization.lean index 0ce4c1f..63f8f94 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalization.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalization.lean @@ -4,188 +4,18 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.PrincipalIdealTheorem -import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.PrincipalIdealTransfer -import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertTowerUnramified +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertPrincipalizationClassGroup set_option autoImplicit false - -/-! -# Principalization in the selected small Hilbert class field - -The selected second small Hilbert class field is Galois over the -canonical fixed-field copy of the original base, and its maximal -abelian intermediate field is the selected first small Hilbert class -field. Witt transfer therefore places every idele class extended from -that fixed-field copy in the norm range from the second stage. -Functoriality of actual idele extension along the degree-one -identification of the original field with its fixed-field copy gives -the same range inclusion for idele classes extended from the original -field itself. - -The exact second-stage norm subgroup is the intrinsic small-Hilbert -subgroup, so the genuine map from the original field on small-Hilbert -quotients is trivial. Its naturality with extension of ideal classes -then gives the class-group, integral-ideal, and fractional-ideal forms -of principalization over the original number field. --/ - open scoped Classical IsMulCommutative NumberField - noncomputable section - namespace GlobalClassFieldTheory namespace IdealClassFieldTheory - -open ClassFormation -open GlobalClassFields -open KummerTheory -open LocalClassFieldTheory -open Reciprocity - -local instance - smallHilbertPrincipalization_ideleClassGroupIsMulCommutative - {F : Type} [Field F] [NumberField F] : - IsMulCommutative (IdeleClassGroup F) := - ⟨⟨fun a b => mul_comm a b⟩⟩ - -local instance - smallHilbertPrincipalization_ideleClassSubgroupNormal - {F : Type} [Field F] [NumberField F] - (N : Subgroup (IdeleClassGroup F)) : N.Normal := - N.normal_of_isMulCommutative - -local instance - smallHilbertPrincipalization_smallHilbertQuotientGroup - {F : Type} [Field F] [NumberField F] : - Group - (IdeleClassGroup F ⧸ - smallHilbertClassFieldNormSubgroup (K := F)) := - QuotientGroup.Quotient.group - (smallHilbertClassFieldNormSubgroup (K := F)) - -local instance - smallHilbertPrincipalization_smallHilbertQuotientOne - {F : Type} [Field F] [NumberField F] : - One - (IdeleClassGroup F ⧸ - smallHilbertClassFieldNormSubgroup (K := F)) := - ⟨(smallHilbertPrincipalization_smallHilbertQuotientGroup - (F := F)).one⟩ - +open ClassFormation GlobalClassFields KummerTheory LocalClassFieldTheory Reciprocity +attribute [local instance] smallHilbertPrincipalization_ideleClassGroupIsMulCommutative + smallHilbertPrincipalization_ideleClassSubgroupNormal variable (K : Type) [Field K] [NumberField K] -private theorem smallHilbertClassFieldIdeleExtensionMap_apply_eq_one - (q : IdeleClassGroup K ⧸ - smallHilbertClassFieldNormSubgroup (K := K)) : - smallHilbertClassFieldIdeleExtensionMap - K (smallHilbertClassField K) q = - (1 : IdeleClassGroup (smallHilbertClassField K) ⧸ - smallHilbertClassFieldNormSubgroup - (K := smallHilbertClassField K)) := by - induction q using QuotientGroup.induction_on with - | _ c => - change - smallHilbertClassFieldIdeleExtensionMap - K (smallHilbertClassField K) - (QuotientGroup.mk' - (smallHilbertClassFieldNormSubgroup (K := K)) c) = - 1 - have hcontainment := - smallHilbertClassField_ideleClassExtension_range_le_secondNormRange K - unfold smallHilbertClassFieldSecondNormRangeContainment at hcontainment - have hmembership : - ideleClassExtension K (smallHilbertClassField K) c ∈ - smallHilbertClassFieldNormSubgroup - (K := smallHilbertClassField K) := - hcontainment ⟨c, rfl⟩ - calc - smallHilbertClassFieldIdeleExtensionMap - K (smallHilbertClassField K) - (QuotientGroup.mk' - (smallHilbertClassFieldNormSubgroup (K := K)) c) = - QuotientGroup.mk' - (smallHilbertClassFieldNormSubgroup - (K := smallHilbertClassField K)) - (ideleClassExtension K (smallHilbertClassField K) c) := - smallHilbertClassFieldIdeleExtensionMap_mk' - K (smallHilbertClassField K) c - _ = 1 := - (QuotientGroup.eq_one_iff - (ideleClassExtension K (smallHilbertClassField K) c)).2 - hmembership - -/-- The map induced by genuine idele extension from the original -number field on the two small-Hilbert reciprocity quotients is -trivial. -/ -theorem smallHilbertClassFieldIdeleExtensionMap_eq_one : - @Eq - ((IdeleClassGroup K ⧸ - smallHilbertClassFieldNormSubgroup (K := K)) →* - (IdeleClassGroup (smallHilbertClassField K) ⧸ - smallHilbertClassFieldNormSubgroup - (K := smallHilbertClassField K))) - (smallHilbertClassFieldIdeleExtensionMap - K (smallHilbertClassField K)) - (1 : - (IdeleClassGroup K ⧸ - smallHilbertClassFieldNormSubgroup (K := K)) →* - (IdeleClassGroup (smallHilbertClassField K) ⧸ - smallHilbertClassFieldNormSubgroup - (K := smallHilbertClassField K))) := by - apply MonoidHom.ext - intro q - simpa only [MonoidHom.one_apply] using - smallHilbertClassFieldIdeleExtensionMap_apply_eq_one K q - -private theorem smallHilbertClassFieldClassGroupExtension_apply_eq_one - (c : ClassGroup (𝓞 K)) : - ClassGroup.extendedHom - (𝓞 K) (𝓞 (smallHilbertClassField K)) c = - (1 : ClassGroup (𝓞 (smallHilbertClassField K))) := by - obtain ⟨q, rfl⟩ := - (smallHilbertClassFieldQuotientEquivClassGroup - (K := K)).surjective c - have hidele := - smallHilbertClassFieldIdeleExtensionMap_apply_eq_one K q - have hnaturality := - smallHilbertClassFieldIdeleExtensionMap_naturality - K (smallHilbertClassField K) q - calc - ClassGroup.extendedHom - (𝓞 K) (𝓞 (smallHilbertClassField K)) - (smallHilbertClassFieldQuotientEquivClassGroup (K := K) q) = - smallHilbertClassFieldQuotientEquivClassGroup - (K := smallHilbertClassField K) - (smallHilbertClassFieldIdeleExtensionMap - K (smallHilbertClassField K) q) := - hnaturality.symm - _ = smallHilbertClassFieldQuotientEquivClassGroup - (K := smallHilbertClassField K) 1 := - congrArg - (smallHilbertClassFieldQuotientEquivClassGroup - (K := smallHilbertClassField K)) hidele - _ = 1 := - (smallHilbertClassFieldQuotientEquivClassGroup - (K := smallHilbertClassField K)).map_one - -/-- Extension of ideal classes from a number field to its selected -small Hilbert class field is the trivial homomorphism. This follows -directly from the naturality equality identifying actual idele -extension with actual extension of ideal classes. -/ -theorem smallHilbertClassFieldClassGroupExtension_eq_one : - @Eq - (ClassGroup (𝓞 K) →* - ClassGroup (𝓞 (smallHilbertClassField K))) - (ClassGroup.extendedHom - (𝓞 K) (𝓞 (smallHilbertClassField K))) - (1 : ClassGroup (𝓞 K) →* - ClassGroup (𝓞 (smallHilbertClassField K))) := by - apply MonoidHom.ext - intro c - simpa only [MonoidHom.one_apply] using - smallHilbertClassFieldClassGroupExtension_apply_eq_one K c - /-- Every ideal of a number field becomes principal after extension to the selected small Hilbert class field. -/ theorem allIdealsBecomePrincipalInSmallHilbertClassField : diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalizationBase.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalizationBase.lean new file mode 100644 index 0000000..ae72e33 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalizationBase.lean @@ -0,0 +1,91 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.PrincipalIdealTheorem +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.PrincipalIdealTransfer +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertTowerUnramified + + +set_option autoImplicit false + +/-! +# Principalization in the selected small Hilbert class field + +The selected second small Hilbert class field is Galois over the +canonical fixed-field copy of the original base, and its maximal +abelian intermediate field is the selected first small Hilbert class +field. Witt transfer therefore places every idele class extended from +that fixed-field copy in the norm range from the second stage. +Functoriality of actual idele extension along the degree-one +identification of the original field with its fixed-field copy gives +the same range inclusion for idele classes extended from the original +field itself. + +The exact second-stage norm subgroup is the intrinsic small-Hilbert +subgroup, so the genuine map from the original field on small-Hilbert +quotients is trivial. Its naturality with extension of ideal classes +then gives the class-group, integral-ideal, and fractional-ideal forms +of principalization over the original number field. +-/ + +open scoped Classical IsMulCommutative NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace IdealClassFieldTheory + +open ClassFormation +open GlobalClassFields +open KummerTheory +open LocalClassFieldTheory +open Reciprocity + +local instance + smallHilbertPrincipalization_ideleClassGroupIsMulCommutative + {F : Type} [Field F] [NumberField F] : + IsMulCommutative (IdeleClassGroup F) := + ⟨⟨fun a b => mul_comm a b⟩⟩ + +local instance + smallHilbertPrincipalization_ideleClassSubgroupNormal + {F : Type} [Field F] [NumberField F] + (N : Subgroup (IdeleClassGroup F)) : N.Normal := + N.normal_of_isMulCommutative + +/-- A generic field-extension form keeps the class-field construction opaque. -/ +theorem smallHilbertExtension_trivial_of_range + (K L : Type) [Field K] [NumberField K] [Field L] [NumberField L] + [Algebra K L] [FiniteDimensional K L] + (h : (ideleClassExtension K L).range ≤ + smallHilbertClassFieldNormSubgroup (K := L)) + (q : IdeleClassGroup K ⧸ smallHilbertClassFieldNormSubgroup (K := K)) : + smallHilbertClassFieldIdeleExtensionMap K L q = 1 := by + refine QuotientGroup.induction_on q ?_ + intro c + exact (smallHilbertClassFieldIdeleExtensionMap_mk' K L c).trans + ((QuotientGroup.eq_one_iff (ideleClassExtension K L c)).mpr (h ⟨c, rfl⟩)) + +variable (K : Type) [Field K] [NumberField K] + +/-- Extension to the small Hilbert class field sends each reciprocity +quotient class to the identity class. -/ +theorem smallHilbertClassFieldIdeleExtensionMap_apply_eq_one + (q : IdeleClassGroup K ⧸ + smallHilbertClassFieldNormSubgroup (K := K)) : + smallHilbertClassFieldIdeleExtensionMap + K (smallHilbertClassField K) q = + (1 : IdeleClassGroup (smallHilbertClassField K) ⧸ + smallHilbertClassFieldNormSubgroup + (K := smallHilbertClassField K)) := by + have hcontainment := + smallHilbertClassField_ideleClassExtension_range_le_secondNormRange K + unfold smallHilbertClassFieldSecondNormRangeContainment at hcontainment + exact smallHilbertExtension_trivial_of_range K (smallHilbertClassField K) + hcontainment q + +end IdealClassFieldTheory +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalizationClassGroup.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalizationClassGroup.lean new file mode 100644 index 0000000..7889495 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalizationClassGroup.lean @@ -0,0 +1,68 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertPrincipalizationIdele + +set_option autoImplicit false +open scoped Classical IsMulCommutative NumberField +noncomputable section +namespace GlobalClassFieldTheory +namespace IdealClassFieldTheory +open ClassFormation GlobalClassFields KummerTheory LocalClassFieldTheory Reciprocity +attribute [local instance] smallHilbertPrincipalization_ideleClassGroupIsMulCommutative + smallHilbertPrincipalization_ideleClassSubgroupNormal +variable (K : Type) [Field K] [NumberField K] + +private theorem smallHilbertClassFieldClassGroupExtension_apply_eq_one + (c : ClassGroup (𝓞 K)) : + ClassGroup.extendedHom + (𝓞 K) (𝓞 (smallHilbertClassField K)) c = + (1 : ClassGroup (𝓞 (smallHilbertClassField K))) := by + obtain ⟨q, rfl⟩ := + (smallHilbertClassFieldQuotientEquivClassGroup + (K := K)).surjective c + have hidele := + smallHilbertClassFieldIdeleExtensionMap_apply_eq_one K q + have hnaturality := + smallHilbertClassFieldIdeleExtensionMap_naturality + K (smallHilbertClassField K) q + calc + ClassGroup.extendedHom + (𝓞 K) (𝓞 (smallHilbertClassField K)) + (smallHilbertClassFieldQuotientEquivClassGroup (K := K) q) = + smallHilbertClassFieldQuotientEquivClassGroup + (K := smallHilbertClassField K) + (smallHilbertClassFieldIdeleExtensionMap + K (smallHilbertClassField K) q) := + hnaturality.symm + _ = smallHilbertClassFieldQuotientEquivClassGroup + (K := smallHilbertClassField K) 1 := + congrArg + (smallHilbertClassFieldQuotientEquivClassGroup + (K := smallHilbertClassField K)) hidele + _ = 1 := + (smallHilbertClassFieldQuotientEquivClassGroup + (K := smallHilbertClassField K)).map_one + +/-- Extension of ideal classes from a number field to its selected +small Hilbert class field is the trivial homomorphism. This follows +directly from the naturality equality identifying actual idele +extension with actual extension of ideal classes. -/ +theorem smallHilbertClassFieldClassGroupExtension_eq_one : + @Eq + (ClassGroup (𝓞 K) →* + ClassGroup (𝓞 (smallHilbertClassField K))) + (ClassGroup.extendedHom + (𝓞 K) (𝓞 (smallHilbertClassField K))) + (1 : ClassGroup (𝓞 K) →* + ClassGroup (𝓞 (smallHilbertClassField K))) := by + apply MonoidHom.ext + intro c + simpa only [MonoidHom.one_apply] using + smallHilbertClassFieldClassGroupExtension_apply_eq_one K c + +end IdealClassFieldTheory +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalizationIdele.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalizationIdele.lean new file mode 100644 index 0000000..e11bcfb --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertPrincipalizationIdele.lean @@ -0,0 +1,43 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertPrincipalizationBase + +set_option autoImplicit false +open scoped Classical IsMulCommutative NumberField +noncomputable section +namespace GlobalClassFieldTheory +namespace IdealClassFieldTheory +open ClassFormation GlobalClassFields KummerTheory LocalClassFieldTheory Reciprocity +attribute [local instance] smallHilbertPrincipalization_ideleClassGroupIsMulCommutative + smallHilbertPrincipalization_ideleClassSubgroupNormal +variable (K : Type) [Field K] [NumberField K] + +/-- The map induced by genuine idele extension from the original +number field on the two small-Hilbert reciprocity quotients is +trivial. -/ +theorem smallHilbertClassFieldIdeleExtensionMap_eq_one : + @Eq + ((IdeleClassGroup K ⧸ + smallHilbertClassFieldNormSubgroup (K := K)) →* + (IdeleClassGroup (smallHilbertClassField K) ⧸ + smallHilbertClassFieldNormSubgroup + (K := smallHilbertClassField K))) + (smallHilbertClassFieldIdeleExtensionMap + K (smallHilbertClassField K)) + (1 : + (IdeleClassGroup K ⧸ + smallHilbertClassFieldNormSubgroup (K := K)) →* + (IdeleClassGroup (smallHilbertClassField K) ⧸ + smallHilbertClassFieldNormSubgroup + (K := smallHilbertClassField K))) := by + apply MonoidHom.ext + intro q + simpa only [MonoidHom.one_apply] using + smallHilbertClassFieldIdeleExtensionMap_apply_eq_one K q + +end IdealClassFieldTheory +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealization.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealization.lean index 3edfd94..f01c3d8 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealization.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealization.lean @@ -4,28 +4,10 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.HilbertClassFieldRealization -import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertTowerConjugation -import Mathlib.Data.Rat.Cast.Defs -set_option autoImplicit false - -/-! -# Actual realization of the two-stage small Hilbert tower - -The first small Hilbert class field is the actual finite abelian -subextension selected in `HilbertClassFieldRealization`. Over its actual -fixed field, the closed finite-index small-Hilbert norm subgroup has a -finite Galois norm neighbourhood. We embed that neighbourhood in the -rational separable closure compatibly with the already chosen first -stage. Finite abelian classification then selects the second small -Hilbert class field over the literal first-stage subgroup. +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertTowerRealizationSecond -The compatibility of the embedding is essential: an unrelated chosen -copy of the middle number field would produce a class field over a -conjugate closed subgroup rather than over the first-stage subgroup -itself. --/ +set_option autoImplicit false open scoped Classical NumberField @@ -43,33 +25,10 @@ open LocalClassFieldTheory open RamificationTheory open Reciprocity -/-- The ordinary idèle-class operations used by the two-stage transport, -fixed at the canonical principal-subgroup quotient. -/ -@[instance_reducible] -private noncomputable def smallHilbertTowerIdeleClassCommGroup - (F : Type) [Field F] [NumberField F] : - CommGroup (IdeleClassGroup F) := - QuotientGroup.Quotient.commGroup (IdeleGroup.principalSubgroup F) attribute [local instance] smallHilbertTowerIdeleClassCommGroup - -private theorem addSubgroup_comap_symm_eq_map - {A B : Type*} [AddGroup A] [AddGroup B] - (H : AddSubgroup A) (e : A ≃+ B) : - H.comap e.symm.toAddMonoidHom = - H.map e.toAddMonoidHom := by - exact (AddSubgroup.map_equiv_eq_comap_symm e H).symm - -private noncomputable abbrev - closedFiniteIndexNormAmbientCanonicalBaseAlgebra - (F : Type) [Field F] [NumberField F] - (H : Subgroup (IdeleClassGroup F)) - (hclosed : IsClosed (H : Set (IdeleClassGroup F))) - [H.FiniteIndex] : - Algebra F - (closedFiniteIndexClassFieldNormAmbient - (K := F) H hclosed) := - inferInstance + smallHilbertTowerNormAmbientAlgebra + smallHilbertTowerNormAmbientIsGalois section RationalFixedField @@ -78,758 +37,9 @@ variable (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) (L : FiniteAbelianSubextension K.field) -private noncomputable abbrev smallHilbertTowerMiddleFiniteAbstractField : - FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := - { field := L.field - finite := by - let : Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - K.field (le_baseField K.field)) := - K.finite - let : Finite - (K.field.toSubgroup ⧸ - extensionSubgroup K.field L.field L.below) := - L.finite - exact - FiniteGaloisSubextension.finite_extension_trans - L.below (le_baseField K.field) } - -local notation "E" => - abstractFixedField ℚ (SeparableClosure ℚ) L.field - -local notation "N" => - smallHilbertClassFieldNormAmbient E - -private noncomputable instance - smallHilbertTowerMiddleAbstractQuotientFinite : - Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - L.field (le_baseField L.field)) := - (smallHilbertTowerMiddleFiniteAbstractField K L).finite - -private noncomputable instance - smallHilbertTowerMiddleFiniteDimensional : - FiniteDimensional ℚ E := - abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) L.field inferInstance - -private noncomputable instance - smallHilbertTowerMiddleNumberField : - NumberField E := - NumberField.of_module_finite ℚ E - -/-- The canonical small-Hilbert subgroup over the literal middle field. -This typed endpoint avoids repeatedly reducing the finite-abstract-field -package merely to recover its `field = L.field` projection. -/ -noncomputable def smallHilbertTowerMiddleNormSubgroup : - AddSubgroup - (ambientFixedAddSubgroup - rationalIdeleClassRepresentation L.field) := - (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup.comap - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom - -/-- The typed `comap` endpoint is the canonical transported `map` endpoint. -This uses only the generic additive equivalence law. -/ -theorem smallHilbertTowerMiddleNormSubgroup_eq_map : - smallHilbertTowerMiddleNormSubgroup K L = - (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup.map - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).toAddMonoidHom := by - exact addSubgroup_comap_symm_eq_map - (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup - (rationalAbstractFixedFieldIdeleClassEquivFixed L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)) - -@[reducible] -private noncomputable def - smallHilbertTowerNormAmbientAlgebra : - Algebra E N := - closedFiniteIndexNormAmbientCanonicalBaseAlgebra E - (smallHilbertClassFieldNormSubgroup (K := E)) - (smallHilbertClassFieldNormSubgroup_isClosed (K := E)) - -attribute [local instance] smallHilbertTowerNormAmbientAlgebra - -@[reducible] -private noncomputable def - smallHilbertTowerNormAmbientSMul : - SMul E N := - Algebra.toSMul - (self := smallHilbertTowerNormAmbientAlgebra K L) - -@[reducible] -private noncomputable def - smallHilbertTowerNormAmbientModule : - Module E N := - @Algebra.toModule E N _ _ - (smallHilbertTowerNormAmbientAlgebra K L) - -private theorem - smallHilbertTowerNormAmbientScalarTower : - @IsScalarTower ℚ E N - (Algebra.toSMul (R := ℚ) (A := E)) - (smallHilbertTowerNormAmbientSMul K L) - (Algebra.toSMul (R := ℚ) (A := N)) := by - exact IsScalarTower.of_algebraMap_eq' - (R := ℚ) (S := E) (A := N) - (RingHom.ext_rat (algebraMap ℚ N) - ((algebraMap E N).comp (algebraMap ℚ E))) - -private noncomputable def - smallHilbertTowerNormAmbientAlgHom : - E →ₐ[ℚ] N := - { toRingHom := algebraMap E N - commutes' := fun r => - (RingHom.congr_fun - (RingHom.ext_rat - ((algebraMap E N).comp (algebraMap ℚ E)) - (algebraMap ℚ N)) r) } - -private theorem smallHilbertTowerNormAmbientAlgHom_apply - (x : E) : - smallHilbertTowerNormAmbientAlgHom K L x = - algebraMap E N x := by - rfl - -private theorem - smallHilbertTowerNormAmbientIsGalois : - IsGalois E N := by - unfold smallHilbertClassFieldNormAmbient - closedFiniteIndexClassFieldNormAmbient - exact - closedFiniteIndexNormAmbientIsGalois - (smallHilbertClassFieldNormSubgroup (K := E)) - (smallHilbertClassFieldNormSubgroup_isClosed (K := E)) - -attribute [local instance] smallHilbertTowerNormAmbientIsGalois - -private noncomputable def - smallHilbertNormNeighborhoodForwardAlignment : - SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ := by - let j₀ : N →ₐ[ℚ] SeparableClosure ℚ := - numberFieldSeparableClosureEmbedding N - let i₀ : E →ₐ[ℚ] SeparableClosure ℚ := - j₀.comp (smallHilbertTowerNormAmbientAlgHom K L) - exact - AlgEquiv.ofBijective - (i₀.liftNormal (SeparableClosure ℚ)) - (AlgHom.normal_bijective - ℚ (SeparableClosure ℚ) (SeparableClosure ℚ) _) - -/-- The separable-closure automorphism which aligns an arbitrary chosen -embedding of the norm-neighbourhood field with the already embedded -middle field. -/ -private noncomputable def - smallHilbertNormNeighborhoodAlignment : - SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ := - (smallHilbertNormNeighborhoodForwardAlignment K L).symm - -@[simp] -private theorem smallHilbertNormNeighborhoodForwardAlignment_apply - (x : E) : - smallHilbertNormNeighborhoodForwardAlignment K L - (x : SeparableClosure ℚ) = - (numberFieldSeparableClosureEmbedding N) - (algebraMap E N x) := by - let j₀ : N →ₐ[ℚ] SeparableClosure ℚ := - numberFieldSeparableClosureEmbedding N - let i₀ : E →ₐ[ℚ] SeparableClosure ℚ := - j₀.comp (smallHilbertTowerNormAmbientAlgHom K L) - dsimp only [smallHilbertNormNeighborhoodForwardAlignment, - AlgEquiv.ofBijective_apply] - calc - _ = i₀ x := by - simpa only [IntermediateField.algebraMap_apply, - Algebra.algebraMap_self, RingHom.id_apply] using - i₀.liftNormal_commutes (SeparableClosure ℚ) x - _ = j₀ (algebraMap E N x) := by - change - j₀ (smallHilbertTowerNormAmbientAlgHom K L x) = - j₀ (algebraMap E N x) - exact congrArg j₀ - (smallHilbertTowerNormAmbientAlgHom_apply K L x) - -/-- A controlled embedding of the concrete finite Galois norm -neighbourhood. Its restriction to the middle field is the literal -inclusion of that fixed field in `SeparableClosure ℚ`. -/ -private noncomputable def - smallHilbertNormNeighborhoodEmbedding : - N →ₐ[ℚ] SeparableClosure ℚ := - (smallHilbertNormNeighborhoodAlignment K L).toAlgHom.comp - (numberFieldSeparableClosureEmbedding N) - -@[simp] -private theorem smallHilbertNormNeighborhoodEmbedding_algebraMap - (x : E) : - smallHilbertNormNeighborhoodEmbedding K L - (algebraMap E N x) = - (x : SeparableClosure ℚ) := by - change - (smallHilbertNormNeighborhoodForwardAlignment K L).symm - ((numberFieldSeparableClosureEmbedding N) - (algebraMap E N x)) = - (x : SeparableClosure ℚ) - rw [← smallHilbertNormNeighborhoodForwardAlignment_apply K L x] - exact - (smallHilbertNormNeighborhoodForwardAlignment K L).symm_apply_apply _ - -private abbrev smallHilbertNormNeighborhoodEmbeddedBase : - ClosedSubgroup - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := - closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange - ((smallHilbertNormNeighborhoodEmbedding K L).comp - (smallHilbertTowerNormAmbientAlgHom K L))) - -private abbrev smallHilbertNormNeighborhoodEmbeddedField : - ClosedSubgroup - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := - closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange - (smallHilbertNormNeighborhoodEmbedding K L)) - -private theorem smallHilbertNormNeighborhoodEmbeddedField_le_base : - (smallHilbertNormNeighborhoodEmbeddedField K L).toSubgroup ≤ - (smallHilbertNormNeighborhoodEmbeddedBase K L).toSubgroup := by - change - (AlgHom.fieldRange - (smallHilbertNormNeighborhoodEmbedding K L)).fixingSubgroup ≤ - (AlgHom.fieldRange - ((smallHilbertNormNeighborhoodEmbedding K L).comp - (smallHilbertTowerNormAmbientAlgHom K L))).fixingSubgroup - apply - (AlgHom.fieldRange - ((smallHilbertNormNeighborhoodEmbedding K L).comp - (smallHilbertTowerNormAmbientAlgHom K L))).fixingSubgroup_le - exact - AlgHom.range_comp_le_range - (smallHilbertTowerNormAmbientAlgHom K L) - (smallHilbertNormNeighborhoodEmbedding K L) - -private theorem smallHilbertNormNeighborhoodEmbeddedBase_eq : - smallHilbertNormNeighborhoodEmbeddedBase K L = L.field := by - have hi : - (smallHilbertNormNeighborhoodEmbedding K L).comp - (smallHilbertTowerNormAmbientAlgHom K L) = - (abstractFixedField ℚ (SeparableClosure ℚ) L.field).val := by - apply AlgHom.ext - intro x - change smallHilbertNormNeighborhoodEmbedding K L - (smallHilbertTowerNormAmbientAlgHom K L x) = (x : SeparableClosure ℚ) - rw [smallHilbertTowerNormAmbientAlgHom_apply K L x] - exact smallHilbertNormNeighborhoodEmbedding_algebraMap K L x - change - closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange - ((smallHilbertNormNeighborhoodEmbedding K L).comp - (smallHilbertTowerNormAmbientAlgHom K L))) = - L.field - rw [hi, IntermediateField.fieldRange_val] - exact - closedFixingSubgroup_abstractFixedField_eq - ℚ (SeparableClosure ℚ) L.field - -private noncomputable def - smallHilbertNormNeighborhoodSeparableClosureEquiv : - let j := smallHilbertNormNeighborhoodEmbedding K L - let i := j.comp (smallHilbertTowerNormAmbientAlgHom K L) - let : Algebra E (SeparableClosure ℚ) := - i.toRingHom.toAlgebra - SeparableClosure E ≃ₐ[E] SeparableClosure ℚ := by - intro j i alg - let : @IsScalarTower ℚ E (SeparableClosure ℚ) - (Algebra.toSMul (R := ℚ) (A := E)) - alg.toSMul - (Algebra.toSMul (R := ℚ) (A := SeparableClosure ℚ)) := - IsScalarTower.of_algebraMap_eq' i.comp_algebraMap.symm - let : IsSepClosure E (SeparableClosure ℚ) := - ⟨IsSepClosure.sep_closed ℚ, - Algebra.isSeparable_tower_top_of_isSeparable - ℚ E (SeparableClosure ℚ)⟩ - exact - IsSepClosure.equiv E - (SeparableClosure E) (SeparableClosure ℚ) - -private noncomputable def - smallHilbertFiniteGaloisNormNeighborhoodRaw : - FiniteGaloisSubextension - (smallHilbertNormNeighborhoodEmbeddedBase K L) := by - let : @IsScalarTower ℚ E N - (Algebra.toSMul (R := ℚ) (A := E)) - (smallHilbertTowerNormAmbientSMul K L) - (Algebra.toSMul (R := ℚ) (A := N)) := - smallHilbertTowerNormAmbientScalarTower K L - let j : N →ₐ[ℚ] SeparableClosure ℚ := - smallHilbertNormNeighborhoodEmbedding K L - let i : E →ₐ[ℚ] SeparableClosure ℚ := - j.comp (IsScalarTower.toAlgHom ℚ E N) - let B : ClosedSubgroup (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := - closedFixingSubgroup ℚ (SeparableClosure ℚ) i.fieldRange - let T : ClosedSubgroup (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := - smallHilbertNormNeighborhoodEmbeddedField K L - have hTB : T.toSubgroup ≤ B.toSubgroup := by - change j.fieldRange.fixingSubgroup ≤ i.fieldRange.fixingSubgroup - apply i.fieldRange.fixingSubgroup_le - exact AlgHom.range_comp_le_range (IsScalarTower.toAlgHom ℚ E N) j - let raw : FiniteGaloisSubextension B := { - field := T - below := hTB - normal := ambientEmbeddedExtensionSubgroup_normal ℚ E N j - (smallHilbertNormNeighborhoodSeparableClosureEquiv K L) - finite := ambientEmbeddedExtensionQuotient_finite ℚ E N j - (smallHilbertNormNeighborhoodSeparableClosureEquiv K L) } - have hi : IsScalarTower.toAlgHom ℚ E N = - smallHilbertTowerNormAmbientAlgHom K L := by - apply AlgHom.ext - intro x - exact (IsScalarTower.toAlgHom_apply ℚ E N x).trans - (smallHilbertTowerNormAmbientAlgHom_apply K L x).symm - have hB : B = smallHilbertNormNeighborhoodEmbeddedBase K L := - congrArg - (fun f : E →ₐ[ℚ] N => - closedFixingSubgroup ℚ (SeparableClosure ℚ) (j.comp f).fieldRange) hi - exact hB ▸ raw - -private noncomputable def rebaseFiniteGaloisSubextension - {G : Type} [Group G] [TopologicalSpace G] - {B B' : ClosedSubgroup G} (h : B = B') - (P : FiniteGaloisSubextension B) : - FiniteGaloisSubextension B' := - h ▸ P - -@[simp] -private theorem rebaseFiniteGaloisSubextension_field - {G : Type} [Group G] [TopologicalSpace G] - {B B' : ClosedSubgroup G} (h : B = B') - (P : FiniteGaloisSubextension B) : - (rebaseFiniteGaloisSubextension h P).field = P.field := by - cases h - rfl - -private theorem - rebaseRationalFiniteGaloisSubextension_fixedField_eq - {B B' : ClosedSubgroup - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)} - (h : B = B') (P : FiniteGaloisSubextension B) : - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (rebaseFiniteGaloisSubextension h P).below).restrictScalars ℚ = - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - P.below).restrictScalars ℚ := by - cases h - rfl - -/-- An actual finite Galois norm neighbourhood over the literal -first-stage subgroup. It is produced by the finite-index Kummer -construction and the controlled embedding above. -/ -noncomputable def smallHilbertFiniteGaloisNormNeighborhood : - FiniteGaloisSubextension L.field := - rebaseFiniteGaloisSubextension - (smallHilbertNormNeighborhoodEmbeddedBase_eq K L) - (smallHilbertFiniteGaloisNormNeighborhoodRaw K L) - -/-- The abstract norm subgroup of the chosen neighbourhood, pinned to the -literal middle-field carrier. -/ -noncomputable def smallHilbertFiniteGaloisNormNeighborhoodNormSubgroup : - AddSubgroup - (ambientFixedAddSubgroup - rationalIdeleClassRepresentation L.field) := - (smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup - rationalIdeleClassRepresentation - -private noncomputable abbrev - smallHilbertFiniteGaloisNormNeighborhoodTopField : Type := - abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (smallHilbertFiniteGaloisNormNeighborhood K L).below - -local notation "E₂" => - smallHilbertFiniteGaloisNormNeighborhoodTopField K L - -private noncomputable instance - smallHilbertFiniteGaloisNormNeighborhoodQuotientFinite : - Finite - (L.field.toSubgroup ⧸ - extensionSubgroup L.field - (smallHilbertFiniteGaloisNormNeighborhood K L).field - (smallHilbertFiniteGaloisNormNeighborhood K L).below) := - (smallHilbertFiniteGaloisNormNeighborhood K L).finite - -private noncomputable instance - smallHilbertFiniteGaloisNormNeighborhoodFiniteDimensional : - FiniteDimensional E E₂ := - abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) L.field - (smallHilbertFiniteGaloisNormNeighborhood K L).field - (smallHilbertFiniteGaloisNormNeighborhood K L).below - inferInstance inferInstance - -private noncomputable instance - smallHilbertFiniteGaloisNormNeighborhoodScalarTower : - IsScalarTower ℚ E E₂ := - IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) - -private noncomputable instance - smallHilbertFiniteGaloisNormNeighborhoodAbsoluteFiniteDimensional : - FiniteDimensional ℚ E₂ := - FiniteDimensional.trans ℚ E E₂ - -private noncomputable instance - smallHilbertFiniteGaloisNormNeighborhoodNumberField : - NumberField E₂ := - NumberField.of_module_finite ℚ E₂ - -private noncomputable instance - smallHilbertFiniteGaloisNormNeighborhoodIsGalois : - IsGalois E E₂ := - abstractRelativeFixedField_isGalois - ℚ (SeparableClosure ℚ) L.field - (smallHilbertFiniteGaloisNormNeighborhood K L).field - (smallHilbertFiniteGaloisNormNeighborhood K L).below - (smallHilbertFiniteGaloisNormNeighborhood K L).normal - -private theorem - smallHilbertFiniteGaloisNormNeighborhood_fixedField_eq_range : - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (smallHilbertFiniteGaloisNormNeighborhood K L).below).restrictScalars ℚ = - AlgHom.fieldRange - (smallHilbertNormNeighborhoodEmbedding K L) := by - rw [show - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (smallHilbertFiniteGaloisNormNeighborhood K L).below).restrictScalars ℚ = - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (smallHilbertFiniteGaloisNormNeighborhoodRaw K L).below).restrictScalars ℚ - from - rebaseRationalFiniteGaloisSubextension_fixedField_eq - (smallHilbertNormNeighborhoodEmbeddedBase_eq K L) - (smallHilbertFiniteGaloisNormNeighborhoodRaw K L)] - exact - InfiniteGalois.fixedField_fixingSubgroup - (AlgHom.fieldRange - (smallHilbertNormNeighborhoodEmbedding K L)) - -private noncomputable def - smallHilbertFiniteGaloisNormNeighborhoodTopEquiv : - N ≃ₐ[ℚ] - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (smallHilbertFiniteGaloisNormNeighborhood K L).below).restrictScalars ℚ := - (smallHilbertNormNeighborhoodEmbedding K L).equivFieldRange.trans - (IntermediateField.equivOfEq - (smallHilbertFiniteGaloisNormNeighborhood_fixedField_eq_range - K L).symm) - -@[simp] -private theorem - smallHilbertFiniteGaloisNormNeighborhoodTopEquiv_algebraMap - (x : E) : - smallHilbertFiniteGaloisNormNeighborhoodTopEquiv K L - (algebraMap E N x) = - algebraMap E - E₂ x := by - apply Subtype.ext - change - smallHilbertNormNeighborhoodEmbedding K L - (algebraMap E N x) = - (x : SeparableClosure ℚ) - exact smallHilbertNormNeighborhoodEmbedding_algebraMap K L x - -private noncomputable def - smallHilbertFiniteGaloisNormNeighborhoodRelativeTopEquiv : - N ≃ₐ[E] E₂ := { - smallHilbertFiniteGaloisNormNeighborhoodTopEquiv K L with - commutes' := fun x => - smallHilbertFiniteGaloisNormNeighborhoodTopEquiv_algebraMap - K L x } - -private theorem - smallHilbertFiniteGaloisNormNeighborhood_ordinaryNorm_le : - (_root_.ideleClassNorm E N).range ≤ - smallHilbertClassFieldNormSubgroup (K := E) := by - simpa only [smallHilbertClassFieldNormAmbient] using - (closedFiniteIndexClassFieldNormAmbient_normRange_le - (K := E) (smallHilbertClassFieldNormSubgroup (K := E)) - (smallHilbertClassFieldNormSubgroup_isClosed (K := E))) - -private theorem - smallHilbertFiniteGaloisNormNeighborhood_ordinaryNormRange_eq : - (_root_.ideleClassNorm E N).range = - (_root_.ideleClassNorm E E₂).range := by - simpa only [ordinaryIdeleClassNorm_range_eq_relative] using - (ideleClassNorm_range_algEquiv - (K := E) - (smallHilbertFiniteGaloisNormNeighborhoodRelativeTopEquiv - K L)).symm - -private theorem - smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_eq : - ((smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup - rationalIdeleClassRepresentation).map - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = - (_root_.ideleClassNorm E E₂).range.toAddSubgroup := by - change - (finiteNormSubgroup rationalIdeleClassRepresentation - L.field - (smallHilbertFiniteGaloisNormNeighborhood K L).field - (smallHilbertFiniteGaloisNormNeighborhood K L).below).map - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = - (_root_.ideleClassNorm E E₂).range.toAddSubgroup - exact - (map_rationalFiniteNormSubgroup_eq_ordinaryIdeleClassNormRange_concrete - L.field - (smallHilbertFiniteGaloisNormNeighborhood K L).field - (smallHilbertFiniteGaloisNormNeighborhood K L).below - (smallHilbertFiniteGaloisNormNeighborhood K L).normal) - -/-- The abstract norm map lands directly in the ordinary norm range of the -chosen neighbourhood. Composing the two named subgroup equalities here -keeps downstream membership proofs pointwise. -/ -private theorem - smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_eq_ordinaryNormRange : - ((smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup - rationalIdeleClassRepresentation).map - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = - (_root_.ideleClassNorm E N).range.toAddSubgroup := - (smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_eq K L).trans - (congrArg Subgroup.toAddSubgroup - (smallHilbertFiniteGaloisNormNeighborhood_ordinaryNormRange_eq K L).symm) - -/-- Pointwise form of the combined norm-range equality. -/ -private theorem - smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_mem_ordinaryNormRange - (a : Additive (IdeleClassGroup E)) - (ha : - a ∈ ((smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup - rationalIdeleClassRepresentation).map - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom) : - a ∈ (_root_.ideleClassNorm E N).range.toAddSubgroup := - (le_of_eq - (smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_eq_ordinaryNormRange - K L)) ha - -/-- The actual finite Galois norm neighbourhood has abstract norm -subgroup contained in the canonical small-Hilbert subgroup of the -middle fixed field. This is the source-producing norm-topology input; -no norm-openness premise is assumed. -/ -theorem smallHilbertFiniteGaloisNormNeighborhood_normSubgroup_le : - ∀ a : ambientFixedAddSubgroup - rationalIdeleClassRepresentation L.field, - a ∈ smallHilbertFiniteGaloisNormNeighborhoodNormSubgroup K L → - a ∈ smallHilbertTowerMiddleNormSubgroup K L := by - intro a ha - change - a ∈ (smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup - rationalIdeleClassRepresentation at ha - have haMap : - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm a ∈ - ((smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup - rationalIdeleClassRepresentation).map - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom := - ⟨a, ha, rfl⟩ - have haOrdinary : - (rationalAbstractFixedFieldIdeleClassEquivFixed L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm a ∈ - (_root_.ideleClassNorm E N).range.toAddSubgroup := - smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_mem_ordinaryNormRange - K L _ haMap - exact smallHilbertFiniteGaloisNormNeighborhood_ordinaryNorm_le K L haOrdinary - -/-- The canonical small-Hilbert subgroup of the actual middle fixed -field is open in the genuine norm topology. -/ -theorem smallHilbertNormSubgroupInRationalClassFormation_isNormOpen : - IsNormOpen rationalIdeleClassRepresentation L.field - (smallHilbertTowerMiddleNormSubgroup K L : - Set - (ambientFixedAddSubgroup - rationalIdeleClassRepresentation L.field)) := by - rw [normTopology_addSubgroup_isOpen_iff] - refine - ⟨smallHilbertFiniteGaloisNormNeighborhood K L, ?_⟩ - change - smallHilbertFiniteGaloisNormNeighborhoodNormSubgroup K L ≤ - smallHilbertTowerMiddleNormSubgroup K L - exact smallHilbertFiniteGaloisNormNeighborhood_normSubgroup_le K L - -/-- The second small Hilbert class field as an actual finite abelian -subextension of the literal first-stage field. -/ -noncomputable def secondSmallHilbertClassFieldSubextension : - FiniteAbelianSubextension L.field := by - let H : FiniteAbelianSubextension.NormOpenAddSubgroup - rationalIdeleClassRepresentation L.field := - ⟨smallHilbertTowerMiddleNormSubgroup K L, - smallHilbertNormSubgroupInRationalClassFormation_isNormOpen K L⟩ - exact - Classical.choose - (FiniteAbelianSubextension.normSubgroupMap_surjective - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (smallHilbertTowerMiddleFiniteAbstractField K L) H) - -/-- The second-stage extension realizes exactly the canonical -small-Hilbert norm subgroup of the actual middle field. -/ -@[simp] -theorem secondSmallHilbertClassFieldSubextension_normSubgroup : - (secondSmallHilbertClassFieldSubextension K L).normSubgroup - rationalIdeleClassRepresentation = - smallHilbertTowerMiddleNormSubgroup K L := by - let H : FiniteAbelianSubextension.NormOpenAddSubgroup - rationalIdeleClassRepresentation L.field := - ⟨smallHilbertTowerMiddleNormSubgroup K L, - smallHilbertNormSubgroupInRationalClassFormation_isNormOpen K L⟩ - have h := - Classical.choose_spec - (FiniteAbelianSubextension.normSubgroupMap_surjective - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (smallHilbertTowerMiddleFiniteAbstractField K L) H) - exact congrArg Subtype.val h - -private noncomputable abbrev secondSmallHilbertClassFieldTopField : Type := - abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (secondSmallHilbertClassFieldSubextension K L).below - -local notation "T₂" => secondSmallHilbertClassFieldTopField K L - -private noncomputable instance - secondSmallHilbertClassFieldSubextensionQuotientFinite : - Finite - (L.field.toSubgroup ⧸ - extensionSubgroup L.field - (secondSmallHilbertClassFieldSubextension K L).field - (secondSmallHilbertClassFieldSubextension K L).below) := - (secondSmallHilbertClassFieldSubextension K L).finite - -private noncomputable instance - secondSmallHilbertClassFieldTopFiniteDimensional : - FiniteDimensional E T₂ := - abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) L.field - (secondSmallHilbertClassFieldSubextension K L).field - (secondSmallHilbertClassFieldSubextension K L).below - inferInstance inferInstance - -private noncomputable instance - secondSmallHilbertClassFieldTopScalarTower : - IsScalarTower ℚ E T₂ := - IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) - -private noncomputable instance - secondSmallHilbertClassFieldTopAbsoluteFiniteDimensional : - FiniteDimensional ℚ T₂ := - FiniteDimensional.trans ℚ E T₂ - -private noncomputable instance - secondSmallHilbertClassFieldTopNumberField : - NumberField T₂ := - NumberField.of_module_finite ℚ T₂ - -private noncomputable instance - secondSmallHilbertClassFieldTopIsGalois : - IsGalois E T₂ := - abstractRelativeFixedField_isGalois - ℚ (SeparableClosure ℚ) L.field - (secondSmallHilbertClassFieldSubextension K L).field - (secondSmallHilbertClassFieldSubextension K L).below - (secondSmallHilbertClassFieldSubextension K L).normal - -private theorem - secondSmallHilbertClassFieldSubextension_abstractNormMap_eq_actualNormRange : - ((secondSmallHilbertClassFieldSubextension K L).normSubgroup - rationalIdeleClassRepresentation).map - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = - (_root_.ideleClassNorm E T₂).range.toAddSubgroup := by - change - (finiteNormSubgroup rationalIdeleClassRepresentation - L.field - (secondSmallHilbertClassFieldSubextension K L).field - (secondSmallHilbertClassFieldSubextension K L).below).map - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = - (_root_.ideleClassNorm E T₂).range.toAddSubgroup - exact - map_rationalFiniteNormSubgroup_eq_ordinaryIdeleClassNormRange_concrete - L.field - (secondSmallHilbertClassFieldSubextension K L).field - (secondSmallHilbertClassFieldSubextension K L).below - (secondSmallHilbertClassFieldSubextension K L).normal - -private theorem - secondSmallHilbertClassFieldSubextension_abstractNormMap_eq_smallHilbertNormSubgroup : - ((secondSmallHilbertClassFieldSubextension K L).normSubgroup - rationalIdeleClassRepresentation).map - (rationalAbstractFixedFieldIdeleClassEquivFixed - L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = - (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup := by - let e : Additive (IdeleClassGroup E) ≃+ - ambientFixedAddSubgroup rationalIdeleClassRepresentation L.field := - rationalAbstractFixedFieldIdeleClassEquivFixed L.field - (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L) - let H : AddSubgroup (Additive (IdeleClassGroup E)) := - (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup - let back : AddSubgroup - (ambientFixedAddSubgroup rationalIdeleClassRepresentation L.field) → - AddSubgroup (Additive (IdeleClassGroup E)) := - fun n => n.map e.symm.toAddMonoidHom - have hNorm : - back ((secondSmallHilbertClassFieldSubextension K L).normSubgroup - rationalIdeleClassRepresentation) = - back (smallHilbertTowerMiddleNormSubgroup K L) := - congrArg back (secondSmallHilbertClassFieldSubextension_normSubgroup K L) - have hCancel : back (smallHilbertTowerMiddleNormSubgroup K L) = H := - AddSubgroup.map_comap_eq_self_of_surjective e.symm.surjective H - exact hNorm.trans hCancel - -/-- The actual second small Hilbert class field has exactly the intrinsic -small-Hilbert norm range over the literal middle fixed field. -/ -@[simp] -theorem secondSmallHilbertClassFieldSubextension_ideleClassNorm_range : - (_root_.ideleClassNorm E T₂).range = - smallHilbertClassFieldNormSubgroup (K := E) := by - apply Subgroup.toAddSubgroup.injective - exact - (secondSmallHilbertClassFieldSubextension_abstractNormMap_eq_actualNormRange - K L).symm.trans - (secondSmallHilbertClassFieldSubextension_abstractNormMap_eq_smallHilbertNormSubgroup - K L) -/-- Compatibility of the typed middle endpoint with the canonical endpoint -used by the conjugation API. -/ -theorem smallHilbertTowerMiddleNormSubgroup_eq_conjugationEndpoint : - smallHilbertTowerMiddleNormSubgroup K L = - smallHilbertNormSubgroupInRationalClassFormation - (L.toFiniteGaloisExtension.toFiniteAbstractFieldExtension).field := by - have hField : - (L.toFiniteGaloisExtension.toFiniteAbstractFieldExtension).field.field = - L.field := by - rfl - unfold smallHilbertNormSubgroupInRationalClassFormation - cases hField - exact smallHilbertTowerMiddleNormSubgroup_eq_map K L +local notation "E" => abstractFixedField ℚ (SeparableClosure ℚ) L.field +local notation "N" => smallHilbertClassFieldNormAmbient E end RationalFixedField diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationBase.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationBase.lean new file mode 100644 index 0000000..31a4787 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationBase.lean @@ -0,0 +1,278 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.HilbertClassFieldRealization +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertTowerConjugation +import Mathlib.Data.Rat.Cast.Defs + + +set_option autoImplicit false + +/-! +# Actual realization of the two-stage small Hilbert tower + +The first small Hilbert class field is the actual finite abelian +subextension selected in `HilbertClassFieldRealization`. Over its actual +fixed field, the closed finite-index small-Hilbert norm subgroup has a +finite Galois norm neighbourhood. We embed that neighbourhood in the +rational separable closure compatibly with the already chosen first +stage. Finite abelian classification then selects the second small +Hilbert class field over the literal first-stage subgroup. + +The compatibility of the embedding is essential: an unrelated chosen +copy of the middle number field would produce a class field over a +conjugate closed subgroup rather than over the first-stage subgroup +itself. +-/ + +open scoped Classical NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace IdealClassFieldTheory + +open AlgebraicNumberTheory +open ClassFormation +open CyclicCohomology +open GlobalClassFields +open KummerTheory +open LocalClassFieldTheory +open RamificationTheory +open Reciprocity + +/-- The ordinary idèle-class operations used by the two-stage transport, +fixed at the canonical principal-subgroup quotient. -/ +@[instance_reducible] +noncomputable def smallHilbertTowerIdeleClassCommGroup + (F : Type) [Field F] [NumberField F] : + CommGroup (IdeleClassGroup F) := + QuotientGroup.Quotient.commGroup (IdeleGroup.principalSubgroup F) + +attribute [local instance] smallHilbertTowerIdeleClassCommGroup + +private theorem addSubgroup_comap_symm_eq_map + {A B : Type*} [AddGroup A] [AddGroup B] + (H : AddSubgroup A) (e : A ≃+ B) : + H.comap e.symm.toAddMonoidHom = + H.map e.toAddMonoidHom := by + exact (AddSubgroup.map_equiv_eq_comap_symm e H).symm + +private noncomputable abbrev + closedFiniteIndexNormAmbientCanonicalBaseAlgebra + (F : Type) [Field F] [NumberField F] + (H : Subgroup (IdeleClassGroup F)) + (hclosed : IsClosed (H : Set (IdeleClassGroup F))) + [H.FiniteIndex] : + Algebra F + (closedFiniteIndexClassFieldNormAmbient + (K := F) H hclosed) := + inferInstance + +section RationalFixedField + +variable + (K : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (L : FiniteAbelianSubextension K.field) + +/-- The finite abstract field attached to the intermediate field of the +finite abelian extension, with finiteness obtained by transitivity. -/ +noncomputable abbrev smallHilbertTowerMiddleFiniteAbstractField : + FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := + { field := L.field + finite := by + let : Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + K.field (le_baseField K.field)) := + K.finite + let : Finite + (K.field.toSubgroup ⧸ + extensionSubgroup K.field L.field L.below) := + L.finite + exact + FiniteGaloisSubextension.finite_extension_trans + L.below (le_baseField K.field) } + +local notation "E" => + abstractFixedField ℚ (SeparableClosure ℚ) L.field + +local notation "N" => + smallHilbertClassFieldNormAmbient E + +noncomputable instance + smallHilbertTowerMiddleAbstractQuotientFinite : + Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + L.field (le_baseField L.field)) := + (smallHilbertTowerMiddleFiniteAbstractField K L).finite + +private noncomputable instance + smallHilbertTowerMiddleFiniteDimensional : + FiniteDimensional ℚ E := + abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) L.field inferInstance + +private noncomputable instance + smallHilbertTowerMiddleNumberField : + NumberField E := + NumberField.of_module_finite ℚ E + + +/-- The small Hilbert norm subgroup of the intermediate number field, +transported to its ambient fixed idele-class representation. -/ +noncomputable def smallHilbertTowerMiddleNormSubgroup : + AddSubgroup + (ambientFixedAddSubgroup + rationalIdeleClassRepresentation L.field) := + (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup.comap + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom + +/-- The typed `comap` endpoint is the canonical transported `map` endpoint. +This uses only the generic additive equivalence law. -/ +theorem smallHilbertTowerMiddleNormSubgroup_eq_map : + smallHilbertTowerMiddleNormSubgroup K L = + (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup.map + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).toAddMonoidHom := by + exact addSubgroup_comap_symm_eq_map + (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup + (rationalAbstractFixedFieldIdeleClassEquivFixed L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)) + +/-- The algebra structure of the intermediate field on its small Hilbert +class-field norm ambient. -/ +@[reducible] +noncomputable def + smallHilbertTowerNormAmbientAlgebra : + Algebra E N := + closedFiniteIndexNormAmbientCanonicalBaseAlgebra E + (smallHilbertClassFieldNormSubgroup (K := E)) + (smallHilbertClassFieldNormSubgroup_isClosed (K := E)) + +attribute [local instance] smallHilbertTowerNormAmbientAlgebra + +/-- Scalar multiplication of the intermediate field on its small Hilbert +class-field norm ambient. -/ +@[reducible] +noncomputable def + smallHilbertTowerNormAmbientSMul : + SMul E N := + Algebra.toSMul + (self := smallHilbertTowerNormAmbientAlgebra K L) + +@[reducible] +private noncomputable def + smallHilbertTowerNormAmbientModule : + Module E N := + @Algebra.toModule E N _ _ + (smallHilbertTowerNormAmbientAlgebra K L) + +theorem + smallHilbertTowerNormAmbientScalarTower : + @IsScalarTower ℚ E N + (Algebra.toSMul (R := ℚ) (A := E)) + (smallHilbertTowerNormAmbientSMul K L) + (Algebra.toSMul (R := ℚ) (A := N)) := by + exact IsScalarTower.of_algebraMap_eq' + (R := ℚ) (S := E) (A := N) + (RingHom.ext_rat (algebraMap ℚ N) + ((algebraMap E N).comp (algebraMap ℚ E))) + +/-- The rational algebra embedding of the intermediate field into its +small Hilbert class-field norm ambient. -/ +noncomputable def + smallHilbertTowerNormAmbientAlgHom : + E →ₐ[ℚ] N := + { toRingHom := algebraMap E N + commutes' := fun r => + (RingHom.congr_fun + (RingHom.ext_rat + ((algebraMap E N).comp (algebraMap ℚ E)) + (algebraMap ℚ N)) r) } + +theorem smallHilbertTowerNormAmbientAlgHom_apply + (x : E) : + smallHilbertTowerNormAmbientAlgHom K L x = + algebraMap E N x := by + rfl + +theorem + smallHilbertTowerNormAmbientIsGalois : + IsGalois E N := by + unfold smallHilbertClassFieldNormAmbient + closedFiniteIndexClassFieldNormAmbient + exact + closedFiniteIndexNormAmbientIsGalois + (smallHilbertClassFieldNormSubgroup (K := E)) + (smallHilbertClassFieldNormSubgroup_isClosed (K := E)) + +attribute [local instance] smallHilbertTowerNormAmbientIsGalois + +/-- The separable-closure automorphism extending the induced embedding +of the intermediate field into the norm-neighborhood field. -/ +noncomputable def + smallHilbertNormNeighborhoodForwardAlignment : + SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ := by + let j₀ : N →ₐ[ℚ] SeparableClosure ℚ := + numberFieldSeparableClosureEmbedding N + let i₀ : E →ₐ[ℚ] SeparableClosure ℚ := + j₀.comp (smallHilbertTowerNormAmbientAlgHom K L) + exact + AlgEquiv.ofBijective + (i₀.liftNormal (SeparableClosure ℚ)) + (AlgHom.normal_bijective + ℚ (SeparableClosure ℚ) (SeparableClosure ℚ) _) + +/-- The separable-closure automorphism which aligns an arbitrary chosen +embedding of the norm-neighbourhood field with the already embedded +middle field. -/ +noncomputable def + smallHilbertNormNeighborhoodAlignment : + SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ := + (smallHilbertNormNeighborhoodForwardAlignment K L).symm + +@[simp] +theorem smallHilbertNormNeighborhoodForwardAlignment_apply + (x : E) : + smallHilbertNormNeighborhoodForwardAlignment K L + (x : SeparableClosure ℚ) = + (numberFieldSeparableClosureEmbedding N) + (algebraMap E N x) := by + let j₀ : N →ₐ[ℚ] SeparableClosure ℚ := + numberFieldSeparableClosureEmbedding N + let i₀ : E →ₐ[ℚ] SeparableClosure ℚ := + j₀.comp (smallHilbertTowerNormAmbientAlgHom K L) + dsimp only [smallHilbertNormNeighborhoodForwardAlignment, + AlgEquiv.ofBijective_apply] + calc + _ = i₀ x := by + simpa only [IntermediateField.algebraMap_apply, + Algebra.algebraMap_self, RingHom.id_apply] using + i₀.liftNormal_commutes (SeparableClosure ℚ) x + _ = j₀ (algebraMap E N x) := by + change + j₀ (smallHilbertTowerNormAmbientAlgHom K L x) = + j₀ (algebraMap E N x) + exact congrArg j₀ + (smallHilbertTowerNormAmbientAlgHom_apply K L x) + + +end RationalFixedField +end IdealClassFieldTheory +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationEmbedding.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationEmbedding.lean new file mode 100644 index 0000000..b76d2bd --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationEmbedding.lean @@ -0,0 +1,190 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + + +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertTowerRealizationBase + +set_option autoImplicit false + +open scoped Classical NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace IdealClassFieldTheory + +open AlgebraicNumberTheory +open ClassFormation +open CyclicCohomology +open GlobalClassFields +open KummerTheory +open LocalClassFieldTheory +open RamificationTheory +open Reciprocity + + +attribute [local instance] smallHilbertTowerIdeleClassCommGroup + smallHilbertTowerNormAmbientAlgebra + smallHilbertTowerNormAmbientIsGalois + +section RationalFixedField + +variable + (K : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (L : FiniteAbelianSubextension K.field) + + +local notation "E" => abstractFixedField ℚ (SeparableClosure ℚ) L.field +local notation "N" => smallHilbertClassFieldNormAmbient E + +/-- A controlled embedding of the concrete finite Galois norm +neighbourhood. Its restriction to the middle field is the literal +inclusion of that fixed field in `SeparableClosure ℚ`. -/ +noncomputable def + smallHilbertNormNeighborhoodEmbedding : + N →ₐ[ℚ] SeparableClosure ℚ := + (smallHilbertNormNeighborhoodAlignment K L).toAlgHom.comp + (numberFieldSeparableClosureEmbedding N) + +@[simp] +theorem smallHilbertNormNeighborhoodEmbedding_algebraMap + (x : E) : + smallHilbertNormNeighborhoodEmbedding K L + (algebraMap E N x) = + (x : SeparableClosure ℚ) := by + change + (smallHilbertNormNeighborhoodForwardAlignment K L).symm + ((numberFieldSeparableClosureEmbedding N) + (algebraMap E N x)) = + (x : SeparableClosure ℚ) + rw [← smallHilbertNormNeighborhoodForwardAlignment_apply K L x] + exact + (smallHilbertNormNeighborhoodForwardAlignment K L).symm_apply_apply _ + +private abbrev smallHilbertNormNeighborhoodEmbeddedBase : + ClosedSubgroup + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := + closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange + ((smallHilbertNormNeighborhoodEmbedding K L).comp + (smallHilbertTowerNormAmbientAlgHom K L))) + +private abbrev smallHilbertNormNeighborhoodEmbeddedField : + ClosedSubgroup + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := + closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange + (smallHilbertNormNeighborhoodEmbedding K L)) + +private theorem smallHilbertNormNeighborhoodEmbeddedField_le_base : + (smallHilbertNormNeighborhoodEmbeddedField K L).toSubgroup ≤ + (smallHilbertNormNeighborhoodEmbeddedBase K L).toSubgroup := by + change + (AlgHom.fieldRange + (smallHilbertNormNeighborhoodEmbedding K L)).fixingSubgroup ≤ + (AlgHom.fieldRange + ((smallHilbertNormNeighborhoodEmbedding K L).comp + (smallHilbertTowerNormAmbientAlgHom K L))).fixingSubgroup + apply + (AlgHom.fieldRange + ((smallHilbertNormNeighborhoodEmbedding K L).comp + (smallHilbertTowerNormAmbientAlgHom K L))).fixingSubgroup_le + exact + AlgHom.range_comp_le_range + (smallHilbertTowerNormAmbientAlgHom K L) + (smallHilbertNormNeighborhoodEmbedding K L) + +theorem smallHilbertNormNeighborhoodEmbeddedBase_eq : + smallHilbertNormNeighborhoodEmbeddedBase K L = L.field := by + have hi : + (smallHilbertNormNeighborhoodEmbedding K L).comp + (smallHilbertTowerNormAmbientAlgHom K L) = + (abstractFixedField ℚ (SeparableClosure ℚ) L.field).val := by + apply AlgHom.ext + intro x + change smallHilbertNormNeighborhoodEmbedding K L + (smallHilbertTowerNormAmbientAlgHom K L x) = (x : SeparableClosure ℚ) + rw [smallHilbertTowerNormAmbientAlgHom_apply K L x] + exact smallHilbertNormNeighborhoodEmbedding_algebraMap K L x + change + closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange + ((smallHilbertNormNeighborhoodEmbedding K L).comp + (smallHilbertTowerNormAmbientAlgHom K L))) = + L.field + rw [hi, IntermediateField.fieldRange_val] + exact + closedFixingSubgroup_abstractFixedField_eq + ℚ (SeparableClosure ℚ) L.field + +private noncomputable def + smallHilbertNormNeighborhoodSeparableClosureEquiv : + let j := smallHilbertNormNeighborhoodEmbedding K L + let i := j.comp (smallHilbertTowerNormAmbientAlgHom K L) + let : Algebra E (SeparableClosure ℚ) := + i.toRingHom.toAlgebra + SeparableClosure E ≃ₐ[E] SeparableClosure ℚ := by + intro j i alg + let : @IsScalarTower ℚ E (SeparableClosure ℚ) + (Algebra.toSMul (R := ℚ) (A := E)) + alg.toSMul + (Algebra.toSMul (R := ℚ) (A := SeparableClosure ℚ)) := + IsScalarTower.of_algebraMap_eq' i.comp_algebraMap.symm + let : IsSepClosure E (SeparableClosure ℚ) := + ⟨IsSepClosure.sep_closed ℚ, + Algebra.isSeparable_tower_top_of_isSeparable + ℚ E (SeparableClosure ℚ)⟩ + exact + IsSepClosure.equiv E + (SeparableClosure E) (SeparableClosure ℚ) + +/-- The finite Galois extension given by the embedded small Hilbert +norm-neighborhood field over the embedded intermediate field. -/ +noncomputable def + smallHilbertFiniteGaloisNormNeighborhoodRaw : + FiniteGaloisSubextension + (smallHilbertNormNeighborhoodEmbeddedBase K L) := by + let : @IsScalarTower ℚ E N + (Algebra.toSMul (R := ℚ) (A := E)) + (smallHilbertTowerNormAmbientSMul K L) + (Algebra.toSMul (R := ℚ) (A := N)) := + smallHilbertTowerNormAmbientScalarTower K L + let j : N →ₐ[ℚ] SeparableClosure ℚ := + smallHilbertNormNeighborhoodEmbedding K L + let i : E →ₐ[ℚ] SeparableClosure ℚ := + j.comp (IsScalarTower.toAlgHom ℚ E N) + let B : ClosedSubgroup (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := + closedFixingSubgroup ℚ (SeparableClosure ℚ) i.fieldRange + let T : ClosedSubgroup (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := + smallHilbertNormNeighborhoodEmbeddedField K L + have hTB : T.toSubgroup ≤ B.toSubgroup := by + change j.fieldRange.fixingSubgroup ≤ i.fieldRange.fixingSubgroup + apply i.fieldRange.fixingSubgroup_le + exact AlgHom.range_comp_le_range (IsScalarTower.toAlgHom ℚ E N) j + let raw : FiniteGaloisSubextension B := { + field := T + below := hTB + normal := ambientEmbeddedExtensionSubgroup_normal ℚ E N j + (smallHilbertNormNeighborhoodSeparableClosureEquiv K L) + finite := ambientEmbeddedExtensionQuotient_finite ℚ E N j + (smallHilbertNormNeighborhoodSeparableClosureEquiv K L) } + have hi : IsScalarTower.toAlgHom ℚ E N = + smallHilbertTowerNormAmbientAlgHom K L := by + apply AlgHom.ext + intro x + exact (IsScalarTower.toAlgHom_apply ℚ E N x).trans + (smallHilbertTowerNormAmbientAlgHom_apply K L x).symm + have hB : B = smallHilbertNormNeighborhoodEmbeddedBase K L := + congrArg + (fun f : E →ₐ[ℚ] N => + closedFixingSubgroup ℚ (SeparableClosure ℚ) (j.comp f).fieldRange) hi + exact hB ▸ raw + + +end RationalFixedField +end IdealClassFieldTheory +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationNorm.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationNorm.lean new file mode 100644 index 0000000..7c2a69a --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationNorm.lean @@ -0,0 +1,272 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + + +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertTowerRealizationEmbedding + +set_option autoImplicit false + +open scoped Classical NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace IdealClassFieldTheory + +open AlgebraicNumberTheory +open ClassFormation +open CyclicCohomology +open GlobalClassFields +open KummerTheory +open LocalClassFieldTheory +open RamificationTheory +open Reciprocity + + +attribute [local instance] smallHilbertTowerIdeleClassCommGroup + smallHilbertTowerNormAmbientAlgebra + smallHilbertTowerNormAmbientIsGalois + +section RationalFixedField + +variable + (K : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (L : FiniteAbelianSubextension K.field) + + +local notation "E" => abstractFixedField ℚ (SeparableClosure ℚ) L.field +local notation "N" => smallHilbertClassFieldNormAmbient E + +private noncomputable def rebaseFiniteGaloisSubextension + {G : Type} [Group G] [TopologicalSpace G] + {B B' : ClosedSubgroup G} (h : B = B') + (P : FiniteGaloisSubextension B) : + FiniteGaloisSubextension B' := + h ▸ P + +@[simp] +private theorem rebaseFiniteGaloisSubextension_field + {G : Type} [Group G] [TopologicalSpace G] + {B B' : ClosedSubgroup G} (h : B = B') + (P : FiniteGaloisSubextension B) : + (rebaseFiniteGaloisSubextension h P).field = P.field := by + cases h + rfl + +private theorem + rebaseRationalFiniteGaloisSubextension_fixedField_eq + {B B' : ClosedSubgroup + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)} + (h : B = B') (P : FiniteGaloisSubextension B) : + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (rebaseFiniteGaloisSubextension h P).below).restrictScalars ℚ = + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + P.below).restrictScalars ℚ := by + cases h + rfl + +/-- An actual finite Galois norm neighbourhood over the literal +first-stage subgroup. It is produced by the finite-index Kummer +construction and the controlled embedding above. -/ +noncomputable def smallHilbertFiniteGaloisNormNeighborhood : + FiniteGaloisSubextension L.field := + rebaseFiniteGaloisSubextension + (smallHilbertNormNeighborhoodEmbeddedBase_eq K L) + (smallHilbertFiniteGaloisNormNeighborhoodRaw K L) + + +/-- The norm subgroup of the small Hilbert norm-neighborhood extension +in the ambient fixed idele-class representation. -/ +noncomputable def smallHilbertFiniteGaloisNormNeighborhoodNormSubgroup : + AddSubgroup + (ambientFixedAddSubgroup + rationalIdeleClassRepresentation L.field) := + (smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup + rationalIdeleClassRepresentation + +/-- The relative fixed field realizing the top field of the small +Hilbert norm-neighborhood extension. -/ +noncomputable abbrev + smallHilbertFiniteGaloisNormNeighborhoodTopField : Type := + abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (smallHilbertFiniteGaloisNormNeighborhood K L).below + +local notation "E₂" => + smallHilbertFiniteGaloisNormNeighborhoodTopField K L + +private noncomputable instance + smallHilbertFiniteGaloisNormNeighborhoodQuotientFinite : + Finite + (L.field.toSubgroup ⧸ + extensionSubgroup L.field + (smallHilbertFiniteGaloisNormNeighborhood K L).field + (smallHilbertFiniteGaloisNormNeighborhood K L).below) := + (smallHilbertFiniteGaloisNormNeighborhood K L).finite + +private noncomputable instance + smallHilbertFiniteGaloisNormNeighborhoodFiniteDimensional : + FiniteDimensional E E₂ := + abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) L.field + (smallHilbertFiniteGaloisNormNeighborhood K L).field + (smallHilbertFiniteGaloisNormNeighborhood K L).below + inferInstance inferInstance + +private noncomputable instance + smallHilbertFiniteGaloisNormNeighborhoodScalarTower : + IsScalarTower ℚ E E₂ := + IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) + +private noncomputable instance + smallHilbertFiniteGaloisNormNeighborhoodAbsoluteFiniteDimensional : + FiniteDimensional ℚ E₂ := + FiniteDimensional.trans ℚ E E₂ + +private noncomputable instance + smallHilbertFiniteGaloisNormNeighborhoodNumberField : + NumberField E₂ := + NumberField.of_module_finite ℚ E₂ + +private noncomputable instance + smallHilbertFiniteGaloisNormNeighborhoodIsGalois : + IsGalois E E₂ := + abstractRelativeFixedField_isGalois + ℚ (SeparableClosure ℚ) L.field + (smallHilbertFiniteGaloisNormNeighborhood K L).field + (smallHilbertFiniteGaloisNormNeighborhood K L).below + (smallHilbertFiniteGaloisNormNeighborhood K L).normal + +private theorem + smallHilbertFiniteGaloisNormNeighborhood_fixedField_eq_range : + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (smallHilbertFiniteGaloisNormNeighborhood K L).below).restrictScalars ℚ = + AlgHom.fieldRange + (smallHilbertNormNeighborhoodEmbedding K L) := by + rw [show + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (smallHilbertFiniteGaloisNormNeighborhood K L).below).restrictScalars ℚ = + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (smallHilbertFiniteGaloisNormNeighborhoodRaw K L).below).restrictScalars ℚ + from + rebaseRationalFiniteGaloisSubextension_fixedField_eq + (smallHilbertNormNeighborhoodEmbeddedBase_eq K L) + (smallHilbertFiniteGaloisNormNeighborhoodRaw K L)] + exact + InfiniteGalois.fixedField_fixingSubgroup + (AlgHom.fieldRange + (smallHilbertNormNeighborhoodEmbedding K L)) + +private noncomputable def + smallHilbertFiniteGaloisNormNeighborhoodTopEquiv : + N ≃ₐ[ℚ] + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (smallHilbertFiniteGaloisNormNeighborhood K L).below).restrictScalars ℚ := + (smallHilbertNormNeighborhoodEmbedding K L).equivFieldRange.trans + (IntermediateField.equivOfEq + (smallHilbertFiniteGaloisNormNeighborhood_fixedField_eq_range + K L).symm) + +@[simp] +private theorem + smallHilbertFiniteGaloisNormNeighborhoodTopEquiv_algebraMap + (x : E) : + smallHilbertFiniteGaloisNormNeighborhoodTopEquiv K L + (algebraMap E N x) = + algebraMap E + E₂ x := by + apply Subtype.ext + change + smallHilbertNormNeighborhoodEmbedding K L + (algebraMap E N x) = + (x : SeparableClosure ℚ) + exact smallHilbertNormNeighborhoodEmbedding_algebraMap K L x + +private noncomputable def + smallHilbertFiniteGaloisNormNeighborhoodRelativeTopEquiv : + N ≃ₐ[E] E₂ := { + smallHilbertFiniteGaloisNormNeighborhoodTopEquiv K L with + commutes' := fun x => + smallHilbertFiniteGaloisNormNeighborhoodTopEquiv_algebraMap + K L x } + +theorem + smallHilbertFiniteGaloisNormNeighborhood_ordinaryNorm_le : + (_root_.ideleClassNorm E N).range ≤ + smallHilbertClassFieldNormSubgroup (K := E) := by + simpa only [smallHilbertClassFieldNormAmbient] using + (closedFiniteIndexClassFieldNormAmbient_normRange_le + (K := E) (smallHilbertClassFieldNormSubgroup (K := E)) + (smallHilbertClassFieldNormSubgroup_isClosed (K := E))) + +private theorem + smallHilbertFiniteGaloisNormNeighborhood_ordinaryNormRange_eq : + (_root_.ideleClassNorm E N).range = + (_root_.ideleClassNorm E E₂).range := by + simpa only [ordinaryIdeleClassNorm_range_eq_relative] using + (ideleClassNorm_range_algEquiv + (K := E) + (smallHilbertFiniteGaloisNormNeighborhoodRelativeTopEquiv + K L)).symm + +private theorem + smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_eq : + ((smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup + rationalIdeleClassRepresentation).map + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = + (_root_.ideleClassNorm E E₂).range.toAddSubgroup := by + change + (finiteNormSubgroup rationalIdeleClassRepresentation + L.field + (smallHilbertFiniteGaloisNormNeighborhood K L).field + (smallHilbertFiniteGaloisNormNeighborhood K L).below).map + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = + (_root_.ideleClassNorm E E₂).range.toAddSubgroup + exact + (map_rationalFiniteNormSubgroup_eq_ordinaryIdeleClassNormRange_concrete + L.field + (smallHilbertFiniteGaloisNormNeighborhood K L).field + (smallHilbertFiniteGaloisNormNeighborhood K L).below + (smallHilbertFiniteGaloisNormNeighborhood K L).normal) + +/-- The abstract norm map lands directly in the ordinary norm range of the +chosen neighbourhood. Composing the two named subgroup equalities here +keeps downstream membership proofs pointwise. -/ +private theorem + smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_eq_ordinaryNormRange : + ((smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup + rationalIdeleClassRepresentation).map + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = + (_root_.ideleClassNorm E N).range.toAddSubgroup := + (smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_eq K L).trans + (congrArg Subgroup.toAddSubgroup + (smallHilbertFiniteGaloisNormNeighborhood_ordinaryNormRange_eq K L).symm) + +/-- Pointwise form of the combined norm-range equality. -/ +theorem + smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_mem_ordinaryNormRange + (a : Additive (IdeleClassGroup E)) + (ha : + a ∈ ((smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup + rationalIdeleClassRepresentation).map + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom) : + a ∈ (_root_.ideleClassNorm E N).range.toAddSubgroup := + (le_of_eq + (smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_eq_ordinaryNormRange + K L)) ha + + +end RationalFixedField +end IdealClassFieldTheory +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationSecond.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationSecond.lean new file mode 100644 index 0000000..768d9b0 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/IdealClassFieldTheory/SmallHilbertTowerRealizationSecond.lean @@ -0,0 +1,256 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + + +import ClassFieldTheory.GlobalClassFieldTheory.IdealClassFieldTheory.SmallHilbertTowerRealizationNorm + +set_option autoImplicit false + +open scoped Classical NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace IdealClassFieldTheory + +open AlgebraicNumberTheory +open ClassFormation +open CyclicCohomology +open GlobalClassFields +open KummerTheory +open LocalClassFieldTheory +open RamificationTheory +open Reciprocity + + +attribute [local instance] smallHilbertTowerIdeleClassCommGroup + smallHilbertTowerNormAmbientAlgebra + smallHilbertTowerNormAmbientIsGalois + +section RationalFixedField + +variable + (K : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (L : FiniteAbelianSubextension K.field) + + +local notation "E" => abstractFixedField ℚ (SeparableClosure ℚ) L.field +local notation "N" => smallHilbertClassFieldNormAmbient E + +local notation "E₂" => smallHilbertFiniteGaloisNormNeighborhoodTopField K L + +/-- The actual finite Galois norm neighbourhood has abstract norm +subgroup contained in the canonical small-Hilbert subgroup of the +middle fixed field. This is the source-producing norm-topology input; +no norm-openness premise is assumed. -/ +theorem smallHilbertFiniteGaloisNormNeighborhood_normSubgroup_le : + ∀ a : ambientFixedAddSubgroup + rationalIdeleClassRepresentation L.field, + a ∈ smallHilbertFiniteGaloisNormNeighborhoodNormSubgroup K L → + a ∈ smallHilbertTowerMiddleNormSubgroup K L := by + intro a ha + change + a ∈ (smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup + rationalIdeleClassRepresentation at ha + have haMap : + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm a ∈ + ((smallHilbertFiniteGaloisNormNeighborhood K L).normSubgroup + rationalIdeleClassRepresentation).map + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom := + ⟨a, ha, rfl⟩ + have haOrdinary : + (rationalAbstractFixedFieldIdeleClassEquivFixed L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm a ∈ + (_root_.ideleClassNorm E N).range.toAddSubgroup := + smallHilbertFiniteGaloisNormNeighborhood_abstractNormMap_mem_ordinaryNormRange + K L _ haMap + exact smallHilbertFiniteGaloisNormNeighborhood_ordinaryNorm_le K L haOrdinary + +/-- The canonical small-Hilbert subgroup of the actual middle fixed +field is open in the genuine norm topology. -/ +theorem smallHilbertNormSubgroupInRationalClassFormation_isNormOpen : + IsNormOpen rationalIdeleClassRepresentation L.field + (smallHilbertTowerMiddleNormSubgroup K L : + Set + (ambientFixedAddSubgroup + rationalIdeleClassRepresentation L.field)) := by + rw [normTopology_addSubgroup_isOpen_iff] + refine + ⟨smallHilbertFiniteGaloisNormNeighborhood K L, ?_⟩ + change + smallHilbertFiniteGaloisNormNeighborhoodNormSubgroup K L ≤ + smallHilbertTowerMiddleNormSubgroup K L + exact smallHilbertFiniteGaloisNormNeighborhood_normSubgroup_le K L + +/-- The second small Hilbert class field as an actual finite abelian +subextension of the literal first-stage field. -/ +noncomputable def secondSmallHilbertClassFieldSubextension : + FiniteAbelianSubextension L.field := by + let H : FiniteAbelianSubextension.NormOpenAddSubgroup + rationalIdeleClassRepresentation L.field := + ⟨smallHilbertTowerMiddleNormSubgroup K L, + smallHilbertNormSubgroupInRationalClassFormation_isNormOpen K L⟩ + exact + Classical.choose + (FiniteAbelianSubextension.normSubgroupMap_surjective + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (smallHilbertTowerMiddleFiniteAbstractField K L) H) + +/-- The second-stage extension realizes exactly the canonical +small-Hilbert norm subgroup of the actual middle field. -/ +@[simp] +theorem secondSmallHilbertClassFieldSubextension_normSubgroup : + (secondSmallHilbertClassFieldSubextension K L).normSubgroup + rationalIdeleClassRepresentation = + smallHilbertTowerMiddleNormSubgroup K L := by + let H : FiniteAbelianSubextension.NormOpenAddSubgroup + rationalIdeleClassRepresentation L.field := + ⟨smallHilbertTowerMiddleNormSubgroup K L, + smallHilbertNormSubgroupInRationalClassFormation_isNormOpen K L⟩ + have h := + Classical.choose_spec + (FiniteAbelianSubextension.normSubgroupMap_surjective + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (smallHilbertTowerMiddleFiniteAbstractField K L) H) + exact congrArg Subtype.val h + +private noncomputable abbrev secondSmallHilbertClassFieldTopField : Type := + abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (secondSmallHilbertClassFieldSubextension K L).below + +local notation "T₂" => secondSmallHilbertClassFieldTopField K L + +private noncomputable instance + secondSmallHilbertClassFieldSubextensionQuotientFinite : + Finite + (L.field.toSubgroup ⧸ + extensionSubgroup L.field + (secondSmallHilbertClassFieldSubextension K L).field + (secondSmallHilbertClassFieldSubextension K L).below) := + (secondSmallHilbertClassFieldSubextension K L).finite + +private noncomputable instance + secondSmallHilbertClassFieldTopFiniteDimensional : + FiniteDimensional E T₂ := + abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) L.field + (secondSmallHilbertClassFieldSubextension K L).field + (secondSmallHilbertClassFieldSubextension K L).below + inferInstance inferInstance + +private noncomputable instance + secondSmallHilbertClassFieldTopScalarTower : + IsScalarTower ℚ E T₂ := + IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) + +private noncomputable instance + secondSmallHilbertClassFieldTopAbsoluteFiniteDimensional : + FiniteDimensional ℚ T₂ := + FiniteDimensional.trans ℚ E T₂ + +private noncomputable instance + secondSmallHilbertClassFieldTopNumberField : + NumberField T₂ := + NumberField.of_module_finite ℚ T₂ + +private noncomputable instance + secondSmallHilbertClassFieldTopIsGalois : + IsGalois E T₂ := + abstractRelativeFixedField_isGalois + ℚ (SeparableClosure ℚ) L.field + (secondSmallHilbertClassFieldSubextension K L).field + (secondSmallHilbertClassFieldSubextension K L).below + (secondSmallHilbertClassFieldSubextension K L).normal + +private theorem + secondSmallHilbertClassFieldSubextension_abstractNormMap_eq_actualNormRange : + ((secondSmallHilbertClassFieldSubextension K L).normSubgroup + rationalIdeleClassRepresentation).map + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = + (_root_.ideleClassNorm E T₂).range.toAddSubgroup := by + change + (finiteNormSubgroup rationalIdeleClassRepresentation + L.field + (secondSmallHilbertClassFieldSubextension K L).field + (secondSmallHilbertClassFieldSubextension K L).below).map + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = + (_root_.ideleClassNorm E T₂).range.toAddSubgroup + exact + map_rationalFiniteNormSubgroup_eq_ordinaryIdeleClassNormRange_concrete + L.field + (secondSmallHilbertClassFieldSubextension K L).field + (secondSmallHilbertClassFieldSubextension K L).below + (secondSmallHilbertClassFieldSubextension K L).normal + +private theorem + secondSmallHilbertClassFieldSubextension_abstractNormMap_eq_smallHilbertNormSubgroup : + ((secondSmallHilbertClassFieldSubextension K L).normSubgroup + rationalIdeleClassRepresentation).map + (rationalAbstractFixedFieldIdeleClassEquivFixed + L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L)).symm.toAddMonoidHom = + (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup := by + let e : Additive (IdeleClassGroup E) ≃+ + ambientFixedAddSubgroup rationalIdeleClassRepresentation L.field := + rationalAbstractFixedFieldIdeleClassEquivFixed L.field + (hfinite := smallHilbertTowerMiddleAbstractQuotientFinite K L) + let H : AddSubgroup (Additive (IdeleClassGroup E)) := + (smallHilbertClassFieldNormSubgroup (K := E)).toAddSubgroup + let back : AddSubgroup + (ambientFixedAddSubgroup rationalIdeleClassRepresentation L.field) → + AddSubgroup (Additive (IdeleClassGroup E)) := + fun n => n.map e.symm.toAddMonoidHom + have hNorm : + back ((secondSmallHilbertClassFieldSubextension K L).normSubgroup + rationalIdeleClassRepresentation) = + back (smallHilbertTowerMiddleNormSubgroup K L) := + congrArg back (secondSmallHilbertClassFieldSubextension_normSubgroup K L) + have hCancel : back (smallHilbertTowerMiddleNormSubgroup K L) = H := + AddSubgroup.map_comap_eq_self_of_surjective e.symm.surjective H + exact hNorm.trans hCancel + +/-- The actual second small Hilbert class field has exactly the intrinsic +small-Hilbert norm range over the literal middle fixed field. -/ +@[simp] +theorem secondSmallHilbertClassFieldSubextension_ideleClassNorm_range : + (_root_.ideleClassNorm E T₂).range = + smallHilbertClassFieldNormSubgroup (K := E) := by + apply Subgroup.toAddSubgroup.injective + exact + (secondSmallHilbertClassFieldSubextension_abstractNormMap_eq_actualNormRange + K L).symm.trans + (secondSmallHilbertClassFieldSubextension_abstractNormMap_eq_smallHilbertNormSubgroup + K L) + +/-- Compatibility of the typed middle endpoint with the canonical endpoint +used by the conjugation API. -/ +theorem smallHilbertTowerMiddleNormSubgroup_eq_conjugationEndpoint : + smallHilbertTowerMiddleNormSubgroup K L = + smallHilbertNormSubgroupInRationalClassFormation + (L.toFiniteGaloisExtension.toFiniteAbstractFieldExtension).field := by + have hField : + (L.toFiniteGaloisExtension.toFiniteAbstractFieldExtension).field.field = + L.field := by + rfl + unfold smallHilbertNormSubgroupInRationalClassFormation + cases hField + exact smallHilbertTowerMiddleNormSubgroup_eq_map K L + + +end RationalFixedField +end IdealClassFieldTheory +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidue.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidue.lean index 8984e0a..3f1f8ad 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidue.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidue.lean @@ -4,24 +4,11 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ClassFieldRealization -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidue +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.AbstractFixedFieldGlobalNormResidueFixedFields -set_option autoImplicit false - -/-! -# Global norm residue on actual fixed fields -An abstract finite abelian subextension of the rational absolute Galois -group determines an actual finite abelian extension between its two -fixed number fields. This file transports the abstract norm-residue -symbol directly to the ordinary idele-class norm quotient of those -fixed fields. +set_option autoImplicit false -Keeping this construction in one ambient separable closure is essential -for the norm--restriction diagrams: no independently chosen embedding of -either field is introduced. --/ open scoped IsMulCommutative NumberField open NumberField @@ -38,1460 +25,26 @@ open AlgebraicNumberTheory open LocalClassFieldTheory open RamificationTheory -/-- The algebra structure on the rational separable closure induced by a -specified rational field embedding. It is deliberately not an instance: -different embeddings of the same field need not induce definitionally equal -algebra structures. -/ -@[reducible] -noncomputable def rationalEmbeddingSeparableClosureAlgebra - {F : Type} [Field F] [Algebra ℚ F] - (i : F →ₐ[ℚ] SeparableClosure ℚ) : - Algebra F (SeparableClosure ℚ) := - i.toRingHom.toAlgebra - -/-- Two rational embeddings of the same number field into the fixed -rational separable closure differ by an automorphism of that -separable closure. -/ -theorem exists_numberFieldEmbeddingComparisonAutomorphism - {F : Type} [Field F] [NumberField F] - (i j : F →ₐ[ℚ] SeparableClosure ℚ) : - ∃ σ : SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ, - ∀ x : F, σ (i x) = j x := by - let hAlgebra : Algebra F (SeparableClosure ℚ) := - rationalEmbeddingSeparableClosureAlgebra i - let hScalarTower : IsScalarTower ℚ F (SeparableClosure ℚ) := - IsScalarTower.of_algebraMap_eq' i.comp_algebraMap.symm - let hSeparable : Algebra.IsSeparable F (SeparableClosure ℚ) := - Algebra.isSeparable_tower_top_of_isSeparable - ℚ F (SeparableClosure ℚ) - obtain ⟨φ, hφ⟩ := - (IsSepClosed.surjective_domRestrict_of_isSeparable - (K := ℚ) (L := F) - (M := SeparableClosure ℚ) - (E := SeparableClosure ℚ)) j - let σ : SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ := - AlgEquiv.ofBijective φ - (Normal.toIsAlgebraic.algHom_bijective₂ - φ (AlgHom.id ℚ (SeparableClosure ℚ))).1 - refine ⟨σ, ?_⟩ - intro x - have hx := - congrArg (fun ψ : F →ₐ[ℚ] SeparableClosure ℚ => ψ x) hφ - exact hx - -/-- The canonical comparison automorphism between two rational -embeddings of one number field into the fixed separable closure. -/ -noncomputable def numberFieldEmbeddingComparisonAutomorphism - {F : Type} [Field F] [NumberField F] - (i j : F →ₐ[ℚ] SeparableClosure ℚ) : - SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ := - Classical.choose - (exists_numberFieldEmbeddingComparisonAutomorphism i j) - -/-- The comparison automorphism carries the first embedded copy of the -number field to the second one pointwise. -/ -@[simp] -theorem numberFieldEmbeddingComparisonAutomorphism_apply - {F : Type} [Field F] [NumberField F] - (i j : F →ₐ[ℚ] SeparableClosure ℚ) - (x : F) : - numberFieldEmbeddingComparisonAutomorphism i j (i x) = - j x := - Classical.choose_spec - (exists_numberFieldEmbeddingComparisonAutomorphism i j) x - -/-- Conjugating the fixing subgroup of one embedded copy of a number -field by the comparison automorphism gives the fixing subgroup of the -other embedded copy. -/ -theorem conjugateClosedFixingSubgroup_embeddingRange - {F : Type} [Field F] [NumberField F] - (i j : F →ₐ[ℚ] SeparableClosure ℚ) : - conjugateClosedSubgroup - (RamificationTheory.closedFixingSubgroup - ℚ (SeparableClosure ℚ) i.fieldRange) - (numberFieldEmbeddingComparisonAutomorphism j i) = - RamificationTheory.closedFixingSubgroup - ℚ (SeparableClosure ℚ) j.fieldRange := by - let s := - numberFieldEmbeddingComparisonAutomorphism j i - ext τ - change - τ ∈ conjugateClosedSubgroup - (closedFixingSubgroup ℚ (SeparableClosure ℚ) i.fieldRange) s ↔ - τ ∈ closedFixingSubgroup ℚ (SeparableClosure ℚ) j.fieldRange - rw [conjugateClosedSubgroup_mem] - change - s * τ * s⁻¹ ∈ i.fieldRange.fixingSubgroup ↔ - τ ∈ j.fieldRange.fixingSubgroup - rw [IntermediateField.mem_fixingSubgroup_iff, - IntermediateField.mem_fixingSubgroup_iff] - constructor - · intro h x hx - rcases hx with ⟨y, rfl⟩ - have hi := h (i y) ⟨y, rfl⟩ - have hs : - s (j y) = i y := - numberFieldEmbeddingComparisonAutomorphism_apply j i y - change s (τ (s.symm (i y))) = i y at hi - have hpre : s.symm (i y) = j y := by - rw [← hs, s.symm_apply_apply] - rw [hpre, ← hs] at hi - exact s.injective hi - · intro h x hx - rcases hx with ⟨y, rfl⟩ - have hj := h (j y) ⟨y, rfl⟩ - have hs : - s (j y) = i y := - numberFieldEmbeddingComparisonAutomorphism_apply j i y - change s (τ (s.symm (i y))) = i y - have hpre : s.symm (i y) = j y := by - rw [← hs, s.symm_apply_apply] - rw [hpre, hj, hs] - -section EmbeddedNumberFieldRealization - -local instance numberFieldEmbeddedIdeleClassGroupIsMulCommutative - {F : Type} [Field F] [NumberField F] - : IsMulCommutative (IdeleClassGroup F) := - ⟨⟨fun a b => mul_comm a b⟩⟩ - -local instance numberFieldEmbeddedIdeleClassSubgroupNormal - {F : Type} [Field F] [NumberField F] - (N : Subgroup (IdeleClassGroup F)) : N.Normal := - N.normal_of_isMulCommutative - -variable - (K L : Type) [Field K] [NumberField K] - [Field L] [NumberField L] [Algebra K L] - -/-- The lower embedding obtained by restricting an explicitly supplied -embedding of the top field into the rational separable closure. -/ -noncomputable def numberFieldEmbeddedLowerEmbedding - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - K →ₐ[ℚ] SeparableClosure ℚ := - j.comp (IsScalarTower.toAlgHom ℚ K L) - -/-- The exact algebra structure on the rational separable closure induced by -the lower embedding of an explicitly embedded number-field tower. Keeping -this as a reducible definition lets every use of the associated separable- -closure equivalence share one definitionally identical algebra structure. -/ -@[reducible] -noncomputable def numberFieldEmbeddedSeparableClosureAlgebra - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - Algebra K (SeparableClosure ℚ) := - rationalEmbeddingSeparableClosureAlgebra - (numberFieldEmbeddedLowerEmbedding K L j) - -/-- The fixing subgroup of the explicitly embedded lower field. -/ -abbrev numberFieldEmbeddedBaseSubgroup - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - ClosedSubgroup - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := - closedFixingSubgroup ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedLowerEmbedding K L j).fieldRange - -/-- The fixing subgroup of the explicitly embedded top field. -/ -abbrev numberFieldEmbeddedTopSubgroup - (_K L : Type) [Field L] [NumberField L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - ClosedSubgroup - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := - closedFixingSubgroup ℚ (SeparableClosure ℚ) j.fieldRange - -/-- The top fixing subgroup lies in the lower fixing subgroup. -/ -theorem numberFieldEmbeddedTopSubgroup_le_baseSubgroup - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - (numberFieldEmbeddedTopSubgroup K L j).toSubgroup ≤ - (numberFieldEmbeddedBaseSubgroup K L j).toSubgroup := by - change - j.fieldRange.fixingSubgroup ≤ - (numberFieldEmbeddedLowerEmbedding K L j).fieldRange.fixingSubgroup - apply - (numberFieldEmbeddedLowerEmbedding K L j).fieldRange.fixingSubgroup_le - intro x hx - rcases hx with ⟨y, rfl⟩ - exact ⟨algebraMap K L y, rfl⟩ - -/-- The separable closure of the actual lower field, identified with -the rational separable closure carrying the algebra structure induced -by an explicit compatible embedding. -/ -noncomputable def numberFieldEmbeddedSeparableClosureEquiv - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - letI : Algebra K (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra K L j - SeparableClosure K ≃ₐ[K] SeparableClosure ℚ := by - letI : Algebra K (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra K L j - letI hScalarTower : IsScalarTower ℚ K (SeparableClosure ℚ) := - IsScalarTower.of_algebraMap_eq' - (numberFieldEmbeddedLowerEmbedding K L j).comp_algebraMap.symm - letI hseparable : Algebra.IsSeparable K (SeparableClosure ℚ) := - Algebra.isSeparable_tower_top_of_isSeparable - ℚ K (SeparableClosure ℚ) - letI hSepClosure : IsSepClosure K (SeparableClosure ℚ) := - ⟨IsSepClosure.sep_closed ℚ, hseparable⟩ - exact - IsSepClosure.equiv K - (SeparableClosure K) (SeparableClosure ℚ) - -/-- The relative subgroup arising from an explicit compatible -number-field embedding is normal. -/ -theorem numberFieldEmbeddedExtensionSubgroup_normal - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).Normal := by - let i := numberFieldEmbeddedLowerEmbedding K L j - let hAlgebra : Algebra K (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra K L j - let e := numberFieldEmbeddedSeparableClosureEquiv K L j - change - (CyclicCohomology.extensionSubgroup - (closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange i)) - (closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange j)) _).Normal - exact ambientEmbeddedExtensionSubgroup_normal ℚ K L j e - -/-- The normality witness for an explicitly embedded tower, registered at -the precise subgroup used by the downstream quotient constructions. -/ -noncomputable local instance - numberFieldEmbeddedExtensionSubgroupNormal - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).Normal := - numberFieldEmbeddedExtensionSubgroup_normal K L j - -/-- The relative quotient arising from an explicit compatible -number-field embedding is finite. -/ -theorem numberFieldEmbeddedExtensionQuotient_finite - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - Finite - ((numberFieldEmbeddedBaseSubgroup K L j).toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := by - let i := numberFieldEmbeddedLowerEmbedding K L j - let hAlgebra : Algebra K (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra K L j - let e := numberFieldEmbeddedSeparableClosureEquiv K L j - change - Finite - ((closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange i)).toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - (closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange i)) - (closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange j)) _) - exact ambientEmbeddedExtensionQuotient_finite ℚ K L j e - -/-- The relative-index witness for an explicitly embedded tower, registered -at the exact quotient consumed by `FiniteNormQuotient`. -/ -noncomputable local instance - numberFieldEmbeddedExtensionQuotientFinite - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - Finite - ((numberFieldEmbeddedBaseSubgroup K L j).toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := - numberFieldEmbeddedExtensionQuotient_finite K L j - -/-- The finite abstract field determined by the lower member of an -explicitly embedded number-field tower. -/ -noncomputable abbrev numberFieldEmbeddedFiniteAbstractField - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) where - field := numberFieldEmbeddedBaseSubgroup K L j - finite := by - simpa only [numberFieldEmbeddedBaseSubgroup] using - (ambientEmbeddedAbsoluteQuotientFinite - ℚ K (numberFieldEmbeddedLowerEmbedding K L j)) - -/-- The absolute-index witness for the lower member of an explicitly embedded -tower, registered at its specialized quotient type. -/ -noncomputable local instance - numberFieldEmbeddedAbsoluteQuotientFinite - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (numberFieldEmbeddedBaseSubgroup K L j) - (le_baseField - (numberFieldEmbeddedBaseSubgroup K L j))) := - (numberFieldEmbeddedFiniteAbstractField K L j).finite - -/-- The finite Galois subextension determined by an explicitly embedded -number-field tower. -/ -noncomputable abbrev numberFieldEmbeddedFiniteGaloisSubextension - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - FiniteGaloisSubextension - (numberFieldEmbeddedBaseSubgroup K L j) where - field := numberFieldEmbeddedTopSubgroup K L j - below := numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j - normal := numberFieldEmbeddedExtensionSubgroup_normal K L j - finite := numberFieldEmbeddedExtensionQuotient_finite K L j - -/-- Shared finite-dimensional data for the fixed field of the lower subgroup -in an explicitly embedded number-field tower. -/ -noncomputable local instance - numberFieldEmbeddedAbstractFixedFieldFiniteDimensional - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - FiniteDimensional ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j)) := - abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedAbsoluteQuotientFinite K L j) - -/-- Shared relative finite-dimensional data for the two fixed fields of an -explicitly embedded number-field tower. -/ -noncomputable local instance - numberFieldEmbeddedAbstractRelativeFixedFieldFiniteDimensional - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - FiniteDimensional - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j)) - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := - abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) - (numberFieldEmbeddedAbsoluteQuotientFinite K L j) - (numberFieldEmbeddedExtensionQuotientFinite K L j) - -local instance numberFieldEmbeddedAbstractFixedFieldScalarTower - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - IsScalarTower ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j)) - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := - IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) - -noncomputable local instance - numberFieldEmbeddedAbstractRelativeFixedFieldAbsoluteFiniteDimensional - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - FiniteDimensional ℚ - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := - FiniteDimensional.trans ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j)) - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) - -noncomputable local instance - numberFieldEmbeddedAbstractFixedFieldNumberField - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - NumberField - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j)) := - NumberField.of_module_finite ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j)) - -noncomputable local instance - numberFieldEmbeddedAbstractRelativeFixedFieldNumberField - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - NumberField - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := - NumberField.of_module_finite ℚ - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) - -noncomputable local instance - numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsFiniteDimensional - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - FiniteDimensional ℚ - ((abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).restrictScalars ℚ) := by - change FiniteDimensional ℚ - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) - infer_instance - -noncomputable local instance - numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsNumberField - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - NumberField - ((abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).restrictScalars ℚ) := - NumberField.of_module_finite ℚ _ - -noncomputable local instance - numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsAlgebra - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - Algebra - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j)) - ((abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).restrictScalars ℚ) := - (IntermediateField.inclusion - (abstractFixedField_le ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j))).toRingHom.toAlgebra - -noncomputable local instance - numberFieldEmbeddedAbstractRelativeFixedFieldIsGalois - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - IsGalois - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j)) - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := - abstractRelativeFixedField_isGalois - ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) - (numberFieldEmbeddedExtensionSubgroupNormal K L j) - -/-- The quotient of the two explicitly embedded fixing subgroups is -the actual relative Galois group. -/ -noncomputable def - numberFieldEmbeddedExtensionQuotientEquivGaloisGroup - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - (numberFieldEmbeddedFiniteGaloisSubextension K L j).extensionQuotient ≃* - Gal(L / K) := by - let i := numberFieldEmbeddedLowerEmbedding K L j - letI hAlgebra : Algebra K (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra K L j - let e := numberFieldEmbeddedSeparableClosureEquiv K L j - let H₀ := - closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange i) - let J₀ := - closedFixingSubgroup ℚ (SeparableClosure ℚ) - (AlgHom.fieldRange j) - let hJH : J₀.toSubgroup ≤ H₀.toSubgroup := by - change j.fieldRange.fixingSubgroup ≤ i.fieldRange.fixingSubgroup - apply i.fieldRange.fixingSubgroup_le - intro x hx - rcases hx with ⟨y, rfl⟩ - exact ⟨algebraMap K L y, rfl⟩ - letI : (CyclicCohomology.extensionSubgroup H₀ J₀ hJH).Normal := - ambientEmbeddedExtensionSubgroup_normal ℚ K L j e - change - (H₀.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H₀ J₀ hJH) ≃* - Gal(L / K) - exact ambientEmbeddedExtensionQuotientEquivGaloisGroup ℚ K L j e - -/-- The original lower field is canonically equivalent to the fixed -field of its explicitly embedded fixing subgroup. -/ -noncomputable def numberFieldEmbeddedAbstractBaseFieldEquiv - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - K ≃ₐ[ℚ] - abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j) := - (numberFieldEmbeddedLowerEmbedding K L j).equivFieldRange.trans - (IntermediateField.equivOfEq - (InfiniteGalois.fixedField_fixingSubgroup - (numberFieldEmbeddedLowerEmbedding K L j).fieldRange).symm) - -/-- The original top field is canonically equivalent to the relative -fixed field of its explicitly embedded fixing subgroup. -/ -noncomputable def numberFieldEmbeddedAbstractTopFieldEquiv - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - L ≃ₐ[ℚ] - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup - K L j)).restrictScalars ℚ := - j.equivFieldRange.trans - (IntermediateField.equivOfEq - (InfiniteGalois.fixedField_fixingSubgroup j.fieldRange).symm) - -/-- The two explicit fixed-field equivalences commute with the tower -algebra maps. -/ -@[simp] -theorem numberFieldEmbeddedAbstractFieldEquiv_algebraMap - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (x : K) : - numberFieldEmbeddedAbstractTopFieldEquiv K L j - (algebraMap K L x) = - algebraMap - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L j)) - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) - (numberFieldEmbeddedAbstractBaseFieldEquiv K L j x) := by - apply Subtype.ext - rfl - -/-- The ordinary idele class group of the explicitly embedded lower -field, transported to the fixed part of the rational absolute -idele-class representation. -/ -noncomputable def numberFieldEmbeddedIdeleClassEquivAmbientFixed - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - Additive (IdeleClassGroup K) ≃+ - ambientFixedAddSubgroup - rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j) := by - let H := numberFieldEmbeddedBaseSubgroup K L j - exact - (MulEquiv.toAdditive - (ideleClassCongr - (numberFieldEmbeddedAbstractBaseFieldEquiv K L j))).trans - (rationalAbstractFixedFieldIdeleClassEquivFixed H) - -/-- The abstract finite norm quotient of an explicitly embedded tower -is its genuine ordinary idele-class norm quotient. -/ -noncomputable def - numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - FiniteNormQuotient rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) ≃+ - Additive - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm K L).range) := by - let hnormal := - numberFieldEmbeddedExtensionSubgroupNormal K L j - let H := numberFieldEmbeddedBaseSubgroup K L j - let J := numberFieldEmbeddedTopSubgroup K L j - let hJH := - numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j - let fixedFieldEquiv := - rationalFiniteNormQuotientEquivIdeleClassNormQuotient - H J hJH hnormal - let actualFieldEquiv := - ordinaryIdeleClassNormQuotientCongrOfAlgEquiv - (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) - (numberFieldEmbeddedAbstractTopFieldEquiv K L j) - (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) - exact - fixedFieldEquiv.trans - (MulEquiv.toAdditive actualFieldEquiv.symm) - -private theorem numberFieldEmbeddedOrdinaryNormQuotientCongr_symm_mk - {K₀ L₀ K₁ L₁ : Type} - [Field K₀] [NumberField K₀] - [Field L₀] [NumberField L₀] [Algebra K₀ L₀] - [Field K₁] [NumberField K₁] - [Field L₁] [NumberField L₁] [Algebra K₁ L₁] - (eK : K₀ ≃ₐ[ℚ] K₁) - (eL : L₀ ≃ₐ[ℚ] L₁) - (h : ∀ x : K₀, - eL (algebraMap K₀ L₀ x) = - algebraMap K₁ L₁ (eK x)) - (c : IdeleClassGroup K₁) : - (ordinaryIdeleClassNormQuotientCongrOfAlgEquiv eK eL h).symm - (QuotientGroup.mk' - (_root_.ideleClassNorm K₁ L₁).range c) = - QuotientGroup.mk' - (_root_.ideleClassNorm K₀ L₀).range - ((ideleClassCongr eK).symm c) := by - let e := ordinaryIdeleClassNormQuotientCongrOfAlgEquiv eK eL h - apply e.injective - rw [e.apply_symm_apply, - ordinaryIdeleClassNormQuotientCongrOfAlgEquiv_mk, - MulEquiv.apply_symm_apply] - -private noncomputable def numberFieldEmbeddedFiniteNormClassPublicValue - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j)) : - Additive - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm K L).range) := - numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient - K L j - (finiteNormClass rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) - a) - -private noncomputable def numberFieldEmbeddedFiniteNormClassExpectedValue - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j)) : - Additive - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm K L).range) := - Additive.ofMul - (QuotientGroup.mk' - (_root_.ideleClassNorm K L).range - (Additive.toMul - ((numberFieldEmbeddedIdeleClassEquivAmbientFixed K L j).symm a))) - -private noncomputable def - numberFieldEmbeddedFiniteNormClassDirectComparisonValue - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j)) : - Additive - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm K L).range) := by - let hnormal := - numberFieldEmbeddedExtensionSubgroupNormal K L j - let H := numberFieldEmbeddedBaseSubgroup K L j - let J := numberFieldEmbeddedTopSubgroup K L j - let hJH := - numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j - let fixedFieldEquiv := - rationalFiniteNormQuotientEquivIdeleClassNormQuotient - H J hJH hnormal - let actualFieldEquiv := - ordinaryIdeleClassNormQuotientCongrOfAlgEquiv - (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) - (numberFieldEmbeddedAbstractTopFieldEquiv K L j) - (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) - exact - MulEquiv.toAdditive actualFieldEquiv.symm - (fixedFieldEquiv - (finiteNormClass rationalIdeleClassRepresentation - H J hJH a)) - -private theorem - numberFieldEmbeddedFiniteNormClassPublicValue_eq_directComparison - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j)) : - numberFieldEmbeddedFiniteNormClassPublicValue K L j a = - numberFieldEmbeddedFiniteNormClassDirectComparisonValue K L j a := by - unfold numberFieldEmbeddedFiniteNormClassPublicValue - unfold numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient - unfold numberFieldEmbeddedFiniteNormClassDirectComparisonValue - rfl - -private noncomputable def numberFieldEmbeddedActualNormClassRepresentativeValue - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j)) : - Additive - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm K L).range) := by - let H := numberFieldEmbeddedBaseSubgroup K L j - let hJH := numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j - let F := abstractFixedField ℚ (SeparableClosure ℚ) H - let E := abstractRelativeFixedField ℚ (SeparableClosure ℚ) hJH - let actualFieldEquiv := - ordinaryIdeleClassNormQuotientCongrOfAlgEquiv - (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) - (numberFieldEmbeddedAbstractTopFieldEquiv K L j) - (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) - exact - Additive.ofMul - (actualFieldEquiv.symm - (QuotientGroup.mk' - (_root_.ideleClassNorm F E).range - (Additive.toMul - ((rationalAbstractFixedFieldIdeleClassEquivFixed H).symm a)))) - -private theorem - numberFieldEmbeddedFiniteNormClassDirectComparison_eq_actualValue - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j)) : - numberFieldEmbeddedFiniteNormClassDirectComparisonValue K L j a = - numberFieldEmbeddedActualNormClassRepresentativeValue K L j a := by - let hnormal := numberFieldEmbeddedExtensionSubgroupNormal K L j - let H := numberFieldEmbeddedBaseSubgroup K L j - let J := numberFieldEmbeddedTopSubgroup K L j - let hJH := numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j - let actualFieldEquiv := - ordinaryIdeleClassNormQuotientCongrOfAlgEquiv - (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) - (numberFieldEmbeddedAbstractTopFieldEquiv K L j) - (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) - have hfixed := - rationalFiniteNormQuotientEquivIdeleClassNormQuotient_finiteNormClass - H J hJH hnormal a - unfold numberFieldEmbeddedFiniteNormClassDirectComparisonValue - unfold numberFieldEmbeddedActualNormClassRepresentativeValue - exact congrArg (MulEquiv.toAdditive actualFieldEquiv.symm) hfixed - -private theorem numberFieldEmbeddedActualNormClassRepresentativeValue_eq_expected - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j)) : - numberFieldEmbeddedActualNormClassRepresentativeValue K L j a = - numberFieldEmbeddedFiniteNormClassExpectedValue K L j a := by - let H := numberFieldEmbeddedBaseSubgroup K L j - let hJH := numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j - let F := abstractFixedField ℚ (SeparableClosure ℚ) H - let E := abstractRelativeFixedField ℚ (SeparableClosure ℚ) hJH - let actualFieldEquiv := - ordinaryIdeleClassNormQuotientCongrOfAlgEquiv - (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) - (numberFieldEmbeddedAbstractTopFieldEquiv K L j) - (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) - let c : IdeleClassGroup F := - Additive.toMul - ((rationalAbstractFixedFieldIdeleClassEquivFixed H).symm a) - unfold numberFieldEmbeddedActualNormClassRepresentativeValue - unfold numberFieldEmbeddedFiniteNormClassExpectedValue - change - Additive.ofMul - (actualFieldEquiv.symm - (QuotientGroup.mk' - (_root_.ideleClassNorm F E).range c)) = - Additive.ofMul - (QuotientGroup.mk' - (_root_.ideleClassNorm K L).range - ((ideleClassCongr - (numberFieldEmbeddedAbstractBaseFieldEquiv K L j)).symm c)) - exact - congrArg Additive.ofMul - (numberFieldEmbeddedOrdinaryNormQuotientCongr_symm_mk - (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) - (numberFieldEmbeddedAbstractTopFieldEquiv K L j) - (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) c) - -/-- On a finite norm-class representative, the explicit fixed-field -comparison is the genuine ordinary idele-class quotient. -/ -@[simp] -theorem - numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_finiteNormClass - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j)) : - numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient K L j - (finiteNormClass rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) a) = - Additive.ofMul - (QuotientGroup.mk' - (_root_.ideleClassNorm K L).range - (Additive.toMul - ((numberFieldEmbeddedIdeleClassEquivAmbientFixed K L j).symm a))) := by - change - numberFieldEmbeddedFiniteNormClassPublicValue K L j a = - numberFieldEmbeddedFiniteNormClassExpectedValue K L j a - exact - (numberFieldEmbeddedFiniteNormClassPublicValue_eq_directComparison - K L j a).trans - ((numberFieldEmbeddedFiniteNormClassDirectComparison_eq_actualValue - K L j a).trans - (numberFieldEmbeddedActualNormClassRepresentativeValue_eq_expected - K L j a)) - -/-- On an ordinary idele class, the explicit fixed-part realization -followed by the abstract finite norm-class map is the genuine quotient -class modulo the ordinary idele-class norm. -/ -@[simp] -theorem - numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_ideleClass - [FiniteDimensional K L] [IsGalois K L] - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (c : IdeleClassGroup K) : - numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient K L j - (finiteNormClass rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) - (numberFieldEmbeddedIdeleClassEquivAmbientFixed - K L j (Additive.ofMul c))) = - Additive.ofMul - (QuotientGroup.mk' - (_root_.ideleClassNorm K L).range c) := by - simpa only [AddEquiv.symm_apply_apply, toMul_ofMul] using - (numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_finiteNormClass - K L j - (numberFieldEmbeddedIdeleClassEquivAmbientFixed - K L j (Additive.ofMul c))) - -variable [FiniteDimensional K L] [IsAbelianGalois K L] - -/-- The abelianized quotient of the explicitly embedded tower is the -actual abelian Galois group. -/ -noncomputable def - numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - Additive - (Abelianization - (numberFieldEmbeddedFiniteGaloisSubextension K L j).extensionQuotient) ≃+ - Additive Gal(L / K) := - MulEquiv.toAdditive - ((MulEquiv.abelianizationCongr - (numberFieldEmbeddedExtensionQuotientEquivGaloisGroup K L j)).trans - (Abelianization.equivOfComm : - Gal(L / K) ≃* - Abelianization Gal(L / K)).symm) - -/-- The actual global norm-residue equivalence constructed from an -explicit compatible embedding of a finite abelian number-field -extension into the rational separable closure. -/ -noncomputable def globalNormResidueEquivOfEmbedding - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - Additive - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm K L).range) ≃+ - Additive Gal(L / K) := by - let eNorm : - FiniteNormQuotient rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) ≃+ - Additive - (Abelianization - (numberFieldEmbeddedFiniteGaloisSubextension K L j).extensionQuotient) := - rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (numberFieldEmbeddedFiniteAbstractField K L j) - (numberFieldEmbeddedFiniteGaloisSubextension K L j) - exact - (numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient - K L j).symm.trans - (eNorm.trans - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K L j)) - -/-- The explicit-embedding norm-residue equivalence on a finite norm class. -/ -theorem globalNormResidueEquivOfEmbedding_finiteNormClass - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (x : FiniteNormQuotient rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) : - globalNormResidueEquivOfEmbedding K L j - (numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient - K L j x) = - numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup K L j - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (numberFieldEmbeddedFiniteAbstractField K L j) - (numberFieldEmbeddedFiniteGaloisSubextension K L j) x) := by - simp only [globalNormResidueEquivOfEmbedding, AddEquiv.trans_apply, - AddEquiv.symm_apply_apply] - -/-- The global norm-residue homomorphism obtained from an explicit -compatible embedding. -/ -noncomputable def globalNormResidueMonoidHomOfEmbedding - (j : L →ₐ[ℚ] SeparableClosure ℚ) : - IdeleClassGroup K →* Gal(L / K) := by - let e : - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm K L).range) ≃* - Gal(L / K) := - AddEquiv.toMultiplicative - (globalNormResidueEquivOfEmbedding K L j) - exact - e.toMonoidHom.comp - (QuotientGroup.mk' - (_root_.ideleClassNorm K L).range) - -/-- Evaluation of the explicit-embedding global norm-residue map is -the abstract norm-residue symbol evaluated on the corresponding genuine -fixed-part finite norm class. -/ -@[simp] -theorem globalNormResidueMonoidHomOfEmbedding_apply - (j : L →ₐ[ℚ] SeparableClosure ℚ) - (c : IdeleClassGroup K) : - globalNormResidueMonoidHomOfEmbedding K L j c = - Additive.toMul - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K L j - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (numberFieldEmbeddedFiniteAbstractField K L j) - (numberFieldEmbeddedFiniteGaloisSubextension K L j) - (finiteNormClass rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L j) - (numberFieldEmbeddedTopSubgroup K L j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) - (numberFieldEmbeddedIdeleClassEquivAmbientFixed - K L j (Additive.ofMul c))))) := by - have hclass := - numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_ideleClass - K L j c - change - Additive.toMul - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K L j - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (numberFieldEmbeddedFiniteAbstractField K L j) - (numberFieldEmbeddedFiniteGaloisSubextension K L j) - ((numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient - K L j).symm - (Additive.ofMul - (QuotientGroup.mk' - (_root_.ideleClassNorm K L).range c))))) = - _ - rw [← hclass, - (numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient - K L j).symm_apply_apply] - -omit [FiniteDimensional K L] [IsAbelianGalois K L] in -/-- The ambient-fixed idèle-class transport for the standard embedding is -the same map as the transport for an explicitly supplied embedding. This -comparison is kept at the transport boundary, before forming norm quotients -or applying reciprocity. -/ -theorem numberFieldTowerIdeleClassEquivAmbientFixed_eq_embedded_standard : - numberFieldTowerIdeleClassEquivAmbientFixed K L = - numberFieldEmbeddedIdeleClassEquivAmbientFixed K L - (numberFieldSeparableClosureEmbedding L) := by - let j := numberFieldSeparableClosureEmbedding L - have hBase : - numberFieldTowerAbstractBaseFieldEquiv K L = - numberFieldEmbeddedAbstractBaseFieldEquiv K L j := by - rfl - unfold numberFieldTowerIdeleClassEquivAmbientFixed - numberFieldEmbeddedIdeleClassEquivAmbientFixed - rw [hBase] - dsimp only - congr 1 - -/- At the chosen embedding, both constructions use the same fixed tower and -abstract reciprocity data. We compare their values on the particular fixed -idele class needed below; the two implementations of the finite norm-quotient -equivalence are deliberately not compared as dependent structures. -/ -private theorem numberFieldTowerNormResidueValue_eq_embedded_standard - (c : IdeleClassGroup K) : - numberFieldTowerAbelianizedExtensionQuotientEquivGaloisGroup K L - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (numberFieldTowerReciprocityFiniteAbstractField K L) - (numberFieldTowerFiniteGaloisSubextension K L) - (finiteNormClass rationalIdeleClassRepresentation - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L) - (numberFieldTowerIdeleClassEquivAmbientFixed K L (Additive.ofMul c)))) = - numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K L (numberFieldSeparableClosureEmbedding L) - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (numberFieldEmbeddedFiniteAbstractField K L - (numberFieldSeparableClosureEmbedding L)) - (numberFieldEmbeddedFiniteGaloisSubextension K L - (numberFieldSeparableClosureEmbedding L)) - (finiteNormClass rationalIdeleClassRepresentation - (numberFieldEmbeddedBaseSubgroup K L - (numberFieldSeparableClosureEmbedding L)) - (numberFieldEmbeddedTopSubgroup K L - (numberFieldSeparableClosureEmbedding L)) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L - (numberFieldSeparableClosureEmbedding L)) - (numberFieldEmbeddedIdeleClassEquivAmbientFixed K L - (numberFieldSeparableClosureEmbedding L) (Additive.ofMul c)))) := by - have hIdeleClassEquiv : - numberFieldTowerIdeleClassEquivAmbientFixed K L = - numberFieldEmbeddedIdeleClassEquivAmbientFixed K L - (numberFieldSeparableClosureEmbedding L) := by - exact numberFieldTowerIdeleClassEquivAmbientFixed_eq_embedded_standard K L - have hFiniteAbstractField : - numberFieldTowerReciprocityFiniteAbstractField K L = - numberFieldEmbeddedFiniteAbstractField K L - (numberFieldSeparableClosureEmbedding L) := by - rfl - have hSubextension : - numberFieldTowerFiniteGaloisSubextension K L = - numberFieldEmbeddedFiniteGaloisSubextension K L - (numberFieldSeparableClosureEmbedding L) := by - rfl - have hGaloisComparison : - numberFieldTowerAbelianizedExtensionQuotientEquivGaloisGroup K L = - numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K L (numberFieldSeparableClosureEmbedding L) := by - rfl - simp only [← hGaloisComparison] - cases hFiniteAbstractField - cases hSubextension - rw [← hIdeleClassEquiv] - rfl - -/-- At the standard embedding, the two global norm-residue equivalences -agree on the actual norm quotient. The comparison is extensional: it uses -surjectivity of the quotient map and the established evaluation formulas, -not definitional equality of the two quotient constructions. -/ -theorem globalNormResidueEquiv_eq_ofEmbedding_standard : - globalNormResidueEquiv K L = - globalNormResidueEquivOfEmbedding K L - (numberFieldSeparableClosureEmbedding L) := by - apply AddEquiv.ext - intro q - obtain ⟨c, hc⟩ := - QuotientGroup.mk'_surjective - (_root_.ideleClassNorm K L).range (Additive.toMul q) - have hq : - Additive.ofMul - (QuotientGroup.mk' (_root_.ideleClassNorm K L).range c) = q := - Additive.toMul.injective hc - rw [← hq] - have hTower := - numberFieldTowerFiniteNormQuotientEquivIdeleClassNormQuotient_ideleClass - K L c - have hEmbedded := - numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_ideleClass - K L (numberFieldSeparableClosureEmbedding L) c - conv_lhs => - rw [← hTower, globalNormResidueEquiv_finiteNormClass] - conv_rhs => - rw [← hEmbedded, globalNormResidueEquivOfEmbedding_finiteNormClass] - exact numberFieldTowerNormResidueValue_eq_embedded_standard K L c - -/-- The existing global norm-residue map is the explicit-embedding -construction for the standard chosen embedding of the top field. -/ -theorem globalNormResidueMonoidHom_eq_ofEmbedding_standard : - globalNormResidueMonoidHom K L = - globalNormResidueMonoidHomOfEmbedding K L - (numberFieldSeparableClosureEmbedding L) := by - apply MonoidHom.ext - intro c - apply Additive.toMul.injective - change - globalNormResidueEquiv K L - (Additive.ofMul - (QuotientGroup.mk' (_root_.ideleClassNorm K L).range c)) = - globalNormResidueEquivOfEmbedding K L - (numberFieldSeparableClosureEmbedding L) - (Additive.ofMul - (QuotientGroup.mk' (_root_.ideleClassNorm K L).range c)) - exact congrArg - (fun e : - Additive - (IdeleClassGroup K ⧸ - (_root_.ideleClassNorm K L).range) ≃+ - Additive (Gal(L / K)) => - e (Additive.ofMul - (QuotientGroup.mk' (_root_.ideleClassNorm K L).range c))) - (globalNormResidueEquiv_eq_ofEmbedding_standard K L) - -end EmbeddedNumberFieldRealization - -section EmbeddedNumberFieldRestriction - -variable - (K K' L L' : Type) - [Field K] [NumberField K] - [Field K'] [NumberField K'] - [Field L] [NumberField L] - [Field L'] [NumberField L'] - [Algebra K K'] [Algebra K L] [Algebra K L'] - [Algebra K' L'] [Algebra L L'] - [IsScalarTower K K' L'] [IsScalarTower K L L'] - -/-- A compatible common embedding reverses the inclusion of the two base -fields into an inclusion of their fixing subgroups. -/ -theorem numberFieldEmbeddedBaseSubgroup_le_of_tower - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - let jLower : L →ₐ[ℚ] SeparableClosure ℚ := - j.comp (IsScalarTower.toAlgHom ℚ L L') - (numberFieldEmbeddedBaseSubgroup K' L' j).toSubgroup ≤ - (numberFieldEmbeddedBaseSubgroup K L jLower).toSubgroup := by - dsimp only - change - (numberFieldEmbeddedLowerEmbedding K' L' j).fieldRange.fixingSubgroup ≤ - (numberFieldEmbeddedLowerEmbedding K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))).fieldRange.fixingSubgroup - apply - (numberFieldEmbeddedLowerEmbedding K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))).fieldRange.fixingSubgroup_le - intro x hx - rcases hx with ⟨y, rfl⟩ - refine ⟨algebraMap K K' y, ?_⟩ - change - j (algebraMap K' L' (algebraMap K K' y)) = - j (algebraMap L L' (algebraMap K L y)) - rw [← IsScalarTower.algebraMap_apply K K' L', - ← IsScalarTower.algebraMap_apply K L L'] - -omit [Field K] [NumberField K] - [Field K'] [NumberField K'] - [Algebra K K'] [Algebra K L] [Algebra K L'] [Algebra K' L'] - [IsScalarTower K K' L'] [IsScalarTower K L L'] in -/-- A compatible common embedding reverses the inclusion of the two top -fields into an inclusion of their fixing subgroups. -/ -theorem numberFieldEmbeddedTopSubgroup_le_of_tower - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - let jLower : L →ₐ[ℚ] SeparableClosure ℚ := - j.comp (IsScalarTower.toAlgHom ℚ L L') - (numberFieldEmbeddedTopSubgroup K' L' j).toSubgroup ≤ - (numberFieldEmbeddedTopSubgroup K L jLower).toSubgroup := by - dsimp only - change - j.fieldRange.fixingSubgroup ≤ - (j.comp - (IsScalarTower.toAlgHom ℚ L L')).fieldRange.fixingSubgroup - apply - (j.comp - (IsScalarTower.toAlgHom ℚ L L')).fieldRange.fixingSubgroup_le - intro x hx - rcases hx with ⟨y, rfl⟩ - exact ⟨algebraMap L L' y, rfl⟩ - -end EmbeddedNumberFieldRestriction - variable (K : FiniteAbstractField (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) (L : FiniteAbelianSubextension K.field) -local instance abstractFixedFieldBaseQuotientFinite : - Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - K.field (le_baseField K.field)) := - K.finite - -local instance abstractFixedFieldRelativeQuotientFinite : - Finite - (K.field.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup K.field L.field L.below) := - L.finite - -local instance abstractFixedFieldRelativeQuotientIsMulCommutative : - IsMulCommutative L.extensionQuotient := - L.commutative -noncomputable local instance abstractFixedFieldFiniteDimensional : - FiniteDimensional ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) K.field) := - abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) K.field K.finite - -noncomputable local instance abstractRelativeFixedFieldFiniteDimensional : - FiniteDimensional - (abstractFixedField ℚ (SeparableClosure ℚ) K.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) := - abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) - K.field L.field L.below K.finite L.finite - -local instance abstractFixedFieldRelativeScalarTower : - IsScalarTower ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) K.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) := - IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) - -noncomputable local instance abstractRelativeFixedFieldAbsoluteFiniteDimensional : - FiniteDimensional ℚ - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) := - FiniteDimensional.trans ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) K.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) - -noncomputable local instance abstractFixedFieldNumberField : - NumberField - (abstractFixedField ℚ (SeparableClosure ℚ) K.field) := - NumberField.of_module_finite ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) K.field) - -/-- The lower fixed idèle-class group is commutative. Naming the mixin -before the public quotient declarations avoids delayed normality synthesis -inside their definition bodies. -/ -local instance - abstractFixedFieldIdeleClassGroupIsMulCommutative : - IsMulCommutative - (IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) K.field)) := - ⟨⟨fun a b => mul_comm a b⟩⟩ - -noncomputable local instance abstractRelativeFixedFieldNumberField : - NumberField - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) := - NumberField.of_module_finite ℚ - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) - -/-- Use the same explicit Galois witness as the fixed-field quotient -comparison. Deriving it through `IsAbelianGalois` produces an equivalent -but much larger dependent instance path. -/ -noncomputable local instance - abstractRelativeFixedFieldIsGalois : - IsGalois - (abstractFixedField ℚ (SeparableClosure ℚ) K.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) := - abstractRelativeFixedField_isGalois - ℚ (SeparableClosure ℚ) - K.field L.field L.below L.normal - -noncomputable local instance abstractRelativeFixedFieldIsAbelianGalois : - IsAbelianGalois - (abstractFixedField ℚ (SeparableClosure ℚ) K.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) := - finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois L - -/-- Use one opaque normality witness for the actual fixed-field norm range. -This keeps every occurrence of its quotient group on the same instance path. -/ -local instance - abstractFixedFieldIdeleClassNormRangeNormal : - ((_root_.ideleClassNorm - (abstractFixedField ℚ (SeparableClosure ℚ) K.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below)).range).Normal := by - infer_instance - -/-- The abelianized abstract extension quotient is the actual Galois -group of the corresponding pair of fixed fields. -/ -noncomputable def - abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) K.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below - Additive - (Abelianization - (FiniteGaloisSubextension.extensionQuotient - L.toFiniteGaloisExtension)) ≃+ - Additive (Gal(E / F)) := by - dsimp only - let F := - abstractFixedField ℚ (SeparableClosure ℚ) K.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below - let e : - L.extensionQuotient ≃* - Gal(E / F) := - L.extensionQuotientMulEquiv.trans - (abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) - K.field L.field L.below L.normal) - exact - MulEquiv.toAdditive - ((Abelianization.equivOfComm : - L.extensionQuotient ≃* - Abelianization L.extensionQuotient).symm.trans e) - -/-- The actual fixed-field global norm-residue equivalence - -`C_F / N_{E/F} C_E ≃ Gal(E/F)` - -attached to an abstract finite abelian subextension in the rational -absolute class formation. -/ -noncomputable def abstractFixedFieldGlobalNormResidueEquiv : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) K.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below - Additive - (IdeleClassGroup F ⧸ - (_root_.ideleClassNorm F E).range) ≃+ - Additive (Gal(E / F)) := by - dsimp only - let F := - abstractFixedField ℚ (SeparableClosure ℚ) K.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below - let eNorm : - FiniteNormQuotient rationalIdeleClassRepresentation - K.field L.field L.below ≃+ - Additive - (Abelianization L.toFiniteGaloisExtension.extensionQuotient) := - rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - K L.toFiniteGaloisExtension - exact - (rationalFiniteNormQuotientEquivIdeleClassNormQuotient - K.field L.field L.below L.normal).symm.trans - (eNorm.trans - (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup - K L)) - -/-- The abstract finite norm-residue equivalence with its dependent source -instance fixed to the public finite norm quotient. -/ -private noncomputable def abstractFixedFieldFiniteNormResidueGaloisEquiv : - FiniteNormQuotient rationalIdeleClassRepresentation - K.field L.field L.below ≃+ - Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) K.field))) := by - letI : AddCommGroup - (FiniteNormQuotient rationalIdeleClassRepresentation - K.field L.field L.below) := - finiteNormQuotientAddCommGroup rationalIdeleClassRepresentation - K.field L.field L.below - exact - @AddEquiv.trans - (FiniteNormQuotient rationalIdeleClassRepresentation - K.field L.field L.below) - (Additive - (Abelianization - L.toFiniteGaloisExtension.extensionQuotient)) - (Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) K.field)))) - inferInstance inferInstance inferInstance - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - K L.toFiniteGaloisExtension) - (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup - K L) - -/-- The abstract norm-residue symbol on the fixed part of the rational -absolute idele-class representation, with its value transported to the -actual Galois group of the two fixed fields. This is the form consumed -directly by the abstract norm--restriction naturality theorem. -/ -noncomputable def ambientFixedGlobalNormResidueAddMonoidHom : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) K.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below - ambientFixedAddSubgroup - rationalIdeleClassRepresentation K.field →+ - Additive (Gal(E / F)) := by - dsimp only - let F := - abstractFixedField ℚ (SeparableClosure ℚ) K.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below - exact - (abstractFixedFieldFiniteNormResidueGaloisEquiv K L).toAddMonoidHom.comp - (finiteNormClassHom rationalIdeleClassRepresentation - K.field L.field L.below) - -/-- The ordinary idele class group of the lower fixed field, transported -to the fixed part of the rational absolute idele-class representation. -/ -private noncomputable def abstractFixedFieldIdeleClassToAmbientFixedMonoidHom : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) K.field - IdeleClassGroup F →* - Multiplicative - (ambientFixedAddSubgroup - rationalIdeleClassRepresentation K.field) := - (rationalAbstractFixedFieldIdeleClassEquivFixed - K.field).toAddMonoidHom.toMultiplicativeRight - -/-- The actual norm-residue homomorphism on the ordinary idele class -group of the lower fixed field, constructed without choosing a second -field embedding. -/ -noncomputable def abstractFixedFieldGlobalNormResidueMonoidHom : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) K.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) L.below - IdeleClassGroup F →* Gal(E / F) := - (ambientFixedGlobalNormResidueAddMonoidHom K L).toMultiplicative.comp - (abstractFixedFieldIdeleClassToAmbientFixedMonoidHom K) - -/-- Pointwise form of the ambient fixed-part norm-residue homomorphism. -/ -private theorem ambientFixedGlobalNormResidueAddMonoidHom_apply - (a : - ambientFixedAddSubgroup - rationalIdeleClassRepresentation K.field) : - ambientFixedGlobalNormResidueAddMonoidHom K L a = - abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup - K L - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - K L.toFiniteGaloisExtension - (finiteNormClass rationalIdeleClassRepresentation - K.field L.field L.below a)) := by - change - abstractFixedFieldFiniteNormResidueGaloisEquiv K L - (finiteNormClass rationalIdeleClassRepresentation - K.field L.field L.below a) = _ - rfl - -/-- Pointwise form of the transported fixed-field norm-residue homomorphism. -/ -private theorem abstractFixedFieldGlobalNormResidueMonoidHom_apply : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) K.field - ∀ c : IdeleClassGroup F, - abstractFixedFieldGlobalNormResidueMonoidHom K L c = - Additive.toMul - (ambientFixedGlobalNormResidueAddMonoidHom K L - ((rationalAbstractFixedFieldIdeleClassEquivFixed K.field) - (Additive.ofMul c))) := by - dsimp only - intro c - rfl - -/-- Transporting an ordinary fixed-field idele class to the ambient -fixed part and applying the abstract norm-residue map gives exactly the -actual fixed-field norm-residue value. -/ -@[simp] -theorem abstractFixedFieldGlobalNormResidueMonoidHom_fixed_apply - (a : - ambientFixedAddSubgroup - rationalIdeleClassRepresentation K.field) : - abstractFixedFieldGlobalNormResidueMonoidHom K L - (Additive.toMul - ((rationalAbstractFixedFieldIdeleClassEquivFixed - K.field).symm a)) = - Additive.toMul - (ambientFixedGlobalNormResidueAddMonoidHom K L a) := by - rw [abstractFixedFieldGlobalNormResidueMonoidHom_apply] - change - Additive.toMul - (ambientFixedGlobalNormResidueAddMonoidHom K L - ((rationalAbstractFixedFieldIdeleClassEquivFixed K.field) - ((rationalAbstractFixedFieldIdeleClassEquivFixed - K.field).symm a))) = - Additive.toMul - (ambientFixedGlobalNormResidueAddMonoidHom K L a) - rw [(rationalAbstractFixedFieldIdeleClassEquivFixed - K.field).apply_symm_apply] +attribute [local instance] + abstractFixedFieldBaseQuotientFinite + abstractFixedFieldRelativeQuotientFinite + abstractFixedFieldRelativeQuotientIsMulCommutative + abstractFixedFieldFiniteDimensional + abstractRelativeFixedFieldFiniteDimensional + abstractFixedFieldRelativeScalarTower + abstractRelativeFixedFieldAbsoluteFiniteDimensional + abstractFixedFieldNumberField + abstractFixedFieldIdeleClassGroupIsMulCommutative + abstractRelativeFixedFieldNumberField + abstractRelativeFixedFieldIsGalois + abstractRelativeFixedFieldIsAbelianGalois + abstractFixedFieldIdeleClassNormRangeNormal /-- The ambient fixed-part reciprocity value vanishes precisely when its finite norm class vanishes. -/ @@ -1644,8 +197,7 @@ theorem abstractFixedFieldGlobalNormResidueMonoidHom_surjective : rw [abstractFixedFieldGlobalNormResidueMonoidHom_fixed_apply, ha] rfl -/-- The kernel of the fixed-field global norm-residue homomorphism is -the genuine ordinary idele-class norm range. -/ + @[simp] theorem abstractFixedFieldGlobalNormResidueMonoidHom_ker : (abstractFixedFieldGlobalNormResidueMonoidHom K L).ker = diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueEmbeddedReciprocity.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueEmbeddedReciprocity.lean new file mode 100644 index 0000000..c07e4ec --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueEmbeddedReciprocity.lean @@ -0,0 +1,386 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.AbstractFixedFieldGlobalNormResidueNormClasses + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField +open NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +section EmbeddedNumberFieldRealization + +variable + (K L : Type) [Field K] [NumberField K] + [Field L] [NumberField L] [Algebra K L] + + +attribute [local instance] + numberFieldEmbeddedIdeleClassGroupIsMulCommutative + numberFieldEmbeddedIdeleClassSubgroupNormal + numberFieldEmbeddedExtensionSubgroupNormal + numberFieldEmbeddedExtensionQuotientFinite + numberFieldEmbeddedAbsoluteQuotientFinite + numberFieldEmbeddedAbstractFixedFieldFiniteDimensional + numberFieldEmbeddedAbstractRelativeFixedFieldFiniteDimensional + numberFieldEmbeddedAbstractFixedFieldScalarTower + numberFieldEmbeddedAbstractRelativeFixedFieldAbsoluteFiniteDimensional + numberFieldEmbeddedAbstractFixedFieldNumberField + numberFieldEmbeddedAbstractRelativeFixedFieldNumberField + numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsFiniteDimensional + numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsNumberField + numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsAlgebra + numberFieldEmbeddedAbstractRelativeFixedFieldIsGalois + +variable [FiniteDimensional K L] [IsAbelianGalois K L] + +/-- The abelianized quotient of the explicitly embedded tower is the +actual abelian Galois group. -/ +noncomputable def + numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + Additive + (Abelianization + (numberFieldEmbeddedFiniteGaloisSubextension K L j).extensionQuotient) ≃+ + Additive Gal(L / K) := + MulEquiv.toAdditive + ((MulEquiv.abelianizationCongr + (numberFieldEmbeddedExtensionQuotientEquivGaloisGroup K L j)).trans + (Abelianization.equivOfComm : + Gal(L / K) ≃* + Abelianization Gal(L / K)).symm) + +/-- The actual global norm-residue equivalence constructed from an +explicit compatible embedding of a finite abelian number-field +extension into the rational separable closure. -/ +noncomputable def globalNormResidueEquivOfEmbedding + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + Additive + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm K L).range) ≃+ + Additive Gal(L / K) := by + let eNorm : + FiniteNormQuotient rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) ≃+ + Additive + (Abelianization + (numberFieldEmbeddedFiniteGaloisSubextension K L j).extensionQuotient) := + rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (numberFieldEmbeddedFiniteAbstractField K L j) + (numberFieldEmbeddedFiniteGaloisSubextension K L j) + exact + (numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient + K L j).symm.trans + (eNorm.trans + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K L j)) + +/-- The explicit-embedding norm-residue equivalence on a finite norm class. -/ +theorem globalNormResidueEquivOfEmbedding_finiteNormClass + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (x : FiniteNormQuotient rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) : + globalNormResidueEquivOfEmbedding K L j + (numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient + K L j x) = + numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup K L j + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (numberFieldEmbeddedFiniteAbstractField K L j) + (numberFieldEmbeddedFiniteGaloisSubextension K L j) x) := by + simp only [globalNormResidueEquivOfEmbedding, AddEquiv.trans_apply, + AddEquiv.symm_apply_apply] + +/-- The global norm-residue homomorphism obtained from an explicit +compatible embedding. -/ +noncomputable def globalNormResidueMonoidHomOfEmbedding + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + IdeleClassGroup K →* Gal(L / K) := by + let e : + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm K L).range) ≃* + Gal(L / K) := + AddEquiv.toMultiplicative + (globalNormResidueEquivOfEmbedding K L j) + exact + e.toMonoidHom.comp + (QuotientGroup.mk' + (_root_.ideleClassNorm K L).range) + +/-- Evaluation of the explicit-embedding global norm-residue map is +the abstract norm-residue symbol evaluated on the corresponding genuine +fixed-part finite norm class. -/ +@[simp] +theorem globalNormResidueMonoidHomOfEmbedding_apply + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (c : IdeleClassGroup K) : + globalNormResidueMonoidHomOfEmbedding K L j c = + Additive.toMul + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K L j + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (numberFieldEmbeddedFiniteAbstractField K L j) + (numberFieldEmbeddedFiniteGaloisSubextension K L j) + (finiteNormClass rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) + (numberFieldEmbeddedIdeleClassEquivAmbientFixed + K L j (Additive.ofMul c))))) := by + have hclass := + numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_ideleClass + K L j c + change + Additive.toMul + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K L j + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (numberFieldEmbeddedFiniteAbstractField K L j) + (numberFieldEmbeddedFiniteGaloisSubextension K L j) + ((numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient + K L j).symm + (Additive.ofMul + (QuotientGroup.mk' + (_root_.ideleClassNorm K L).range c))))) = + _ + rw [← hclass, + (numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient + K L j).symm_apply_apply] + +omit [FiniteDimensional K L] [IsAbelianGalois K L] in + + +theorem numberFieldTowerIdeleClassEquivAmbientFixed_eq_embedded_standard : + numberFieldTowerIdeleClassEquivAmbientFixed K L = + numberFieldEmbeddedIdeleClassEquivAmbientFixed K L + (numberFieldSeparableClosureEmbedding L) := by + let j := numberFieldSeparableClosureEmbedding L + have hBase : + numberFieldTowerAbstractBaseFieldEquiv K L = + numberFieldEmbeddedAbstractBaseFieldEquiv K L j := by + rfl + unfold numberFieldTowerIdeleClassEquivAmbientFixed + numberFieldEmbeddedIdeleClassEquivAmbientFixed + rw [hBase] + dsimp only + congr 1 + +/- At the chosen embedding, both constructions use the same fixed tower and +abstract reciprocity data. We compare their values on the particular fixed +idele class needed below; the two implementations of the finite norm-quotient +equivalence are deliberately not compared as dependent structures. -/ +private theorem numberFieldTowerNormResidueValue_eq_embedded_standard + (c : IdeleClassGroup K) : + numberFieldTowerAbelianizedExtensionQuotientEquivGaloisGroup K L + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (numberFieldTowerReciprocityFiniteAbstractField K L) + (numberFieldTowerFiniteGaloisSubextension K L) + (finiteNormClass rationalIdeleClassRepresentation + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L) + (numberFieldTowerIdeleClassEquivAmbientFixed K L (Additive.ofMul c)))) = + numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K L (numberFieldSeparableClosureEmbedding L) + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (numberFieldEmbeddedFiniteAbstractField K L + (numberFieldSeparableClosureEmbedding L)) + (numberFieldEmbeddedFiniteGaloisSubextension K L + (numberFieldSeparableClosureEmbedding L)) + (finiteNormClass rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L + (numberFieldSeparableClosureEmbedding L)) + (numberFieldEmbeddedTopSubgroup K L + (numberFieldSeparableClosureEmbedding L)) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L + (numberFieldSeparableClosureEmbedding L)) + (numberFieldEmbeddedIdeleClassEquivAmbientFixed K L + (numberFieldSeparableClosureEmbedding L) (Additive.ofMul c)))) := by + have hIdeleClassEquiv : + numberFieldTowerIdeleClassEquivAmbientFixed K L = + numberFieldEmbeddedIdeleClassEquivAmbientFixed K L + (numberFieldSeparableClosureEmbedding L) := by + exact numberFieldTowerIdeleClassEquivAmbientFixed_eq_embedded_standard K L + have hFiniteAbstractField : + numberFieldTowerReciprocityFiniteAbstractField K L = + numberFieldEmbeddedFiniteAbstractField K L + (numberFieldSeparableClosureEmbedding L) := by + rfl + have hSubextension : + numberFieldTowerFiniteGaloisSubextension K L = + numberFieldEmbeddedFiniteGaloisSubextension K L + (numberFieldSeparableClosureEmbedding L) := by + rfl + have hGaloisComparison : + numberFieldTowerAbelianizedExtensionQuotientEquivGaloisGroup K L = + numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K L (numberFieldSeparableClosureEmbedding L) := by + rfl + simp only [← hGaloisComparison] + cases hFiniteAbstractField + cases hSubextension + rw [← hIdeleClassEquiv] + rfl + +/-- At the standard embedding, the two global norm-residue equivalences +agree on the actual norm quotient. The comparison is extensional: it uses +surjectivity of the quotient map and the established evaluation formulas, +not definitional equality of the two quotient constructions. -/ +theorem globalNormResidueEquiv_eq_ofEmbedding_standard : + globalNormResidueEquiv K L = + globalNormResidueEquivOfEmbedding K L + (numberFieldSeparableClosureEmbedding L) := by + apply AddEquiv.ext + intro q + obtain ⟨c, hc⟩ := + QuotientGroup.mk'_surjective + (_root_.ideleClassNorm K L).range (Additive.toMul q) + have hq : + Additive.ofMul + (QuotientGroup.mk' (_root_.ideleClassNorm K L).range c) = q := + Additive.toMul.injective hc + rw [← hq] + have hTower := + numberFieldTowerFiniteNormQuotientEquivIdeleClassNormQuotient_ideleClass + K L c + have hEmbedded := + numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_ideleClass + K L (numberFieldSeparableClosureEmbedding L) c + conv_lhs => + rw [← hTower, globalNormResidueEquiv_finiteNormClass] + conv_rhs => + rw [← hEmbedded, globalNormResidueEquivOfEmbedding_finiteNormClass] + exact numberFieldTowerNormResidueValue_eq_embedded_standard K L c + +/-- The existing global norm-residue map is the explicit-embedding +construction for the standard chosen embedding of the top field. -/ +theorem globalNormResidueMonoidHom_eq_ofEmbedding_standard : + globalNormResidueMonoidHom K L = + globalNormResidueMonoidHomOfEmbedding K L + (numberFieldSeparableClosureEmbedding L) := by + apply MonoidHom.ext + intro c + apply Additive.toMul.injective + change + globalNormResidueEquiv K L + (Additive.ofMul + (QuotientGroup.mk' (_root_.ideleClassNorm K L).range c)) = + globalNormResidueEquivOfEmbedding K L + (numberFieldSeparableClosureEmbedding L) + (Additive.ofMul + (QuotientGroup.mk' (_root_.ideleClassNorm K L).range c)) + exact congrArg + (fun e : + Additive + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm K L).range) ≃+ + Additive (Gal(L / K)) => + e (Additive.ofMul + (QuotientGroup.mk' (_root_.ideleClassNorm K L).range c))) + (globalNormResidueEquiv_eq_ofEmbedding_standard K L) + +end EmbeddedNumberFieldRealization + +section EmbeddedNumberFieldRestriction + +variable + (K K' L L' : Type) + [Field K] [NumberField K] + [Field K'] [NumberField K'] + [Field L] [NumberField L] + [Field L'] [NumberField L'] + [Algebra K K'] [Algebra K L] [Algebra K L'] + [Algebra K' L'] [Algebra L L'] + [IsScalarTower K K' L'] [IsScalarTower K L L'] + +/-- A compatible common embedding reverses the inclusion of the two base +fields into an inclusion of their fixing subgroups. -/ +theorem numberFieldEmbeddedBaseSubgroup_le_of_tower + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + let jLower : L →ₐ[ℚ] SeparableClosure ℚ := + j.comp (IsScalarTower.toAlgHom ℚ L L') + (numberFieldEmbeddedBaseSubgroup K' L' j).toSubgroup ≤ + (numberFieldEmbeddedBaseSubgroup K L jLower).toSubgroup := by + dsimp only + change + (numberFieldEmbeddedLowerEmbedding K' L' j).fieldRange.fixingSubgroup ≤ + (numberFieldEmbeddedLowerEmbedding K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))).fieldRange.fixingSubgroup + apply + (numberFieldEmbeddedLowerEmbedding K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))).fieldRange.fixingSubgroup_le + intro x hx + rcases hx with ⟨y, rfl⟩ + refine ⟨algebraMap K K' y, ?_⟩ + change + j (algebraMap K' L' (algebraMap K K' y)) = + j (algebraMap L L' (algebraMap K L y)) + rw [← IsScalarTower.algebraMap_apply K K' L', + ← IsScalarTower.algebraMap_apply K L L'] + +omit [Field K] [NumberField K] + [Field K'] [NumberField K'] + [Algebra K K'] [Algebra K L] [Algebra K L'] [Algebra K' L'] + [IsScalarTower K K' L'] [IsScalarTower K L L'] in +/-- A compatible common embedding reverses the inclusion of the two top +fields into an inclusion of their fixing subgroups. -/ +theorem numberFieldEmbeddedTopSubgroup_le_of_tower + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + let jLower : L →ₐ[ℚ] SeparableClosure ℚ := + j.comp (IsScalarTower.toAlgHom ℚ L L') + (numberFieldEmbeddedTopSubgroup K' L' j).toSubgroup ≤ + (numberFieldEmbeddedTopSubgroup K L jLower).toSubgroup := by + dsimp only + change + j.fieldRange.fixingSubgroup ≤ + (j.comp + (IsScalarTower.toAlgHom ℚ L L')).fieldRange.fixingSubgroup + apply + (j.comp + (IsScalarTower.toAlgHom ℚ L L')).fieldRange.fixingSubgroup_le + intro x hx + rcases hx with ⟨y, rfl⟩ + exact ⟨algebraMap L L' y, rfl⟩ + +end EmbeddedNumberFieldRestriction + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueEmbeddings.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueEmbeddings.lean new file mode 100644 index 0000000..2451e8f --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueEmbeddings.lean @@ -0,0 +1,586 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ClassFieldRealization +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidue + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField +open NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +/-- The algebra structure on the rational separable closure induced by a +specified rational field embedding. It is deliberately not an instance: +different embeddings of the same field need not induce definitionally equal +algebra structures. -/ +@[reducible] +noncomputable def rationalEmbeddingSeparableClosureAlgebra + {F : Type} [Field F] [Algebra ℚ F] + (i : F →ₐ[ℚ] SeparableClosure ℚ) : + Algebra F (SeparableClosure ℚ) := + i.toRingHom.toAlgebra + +/-- Two rational embeddings of the same number field into the fixed +rational separable closure differ by an automorphism of that +separable closure. -/ +theorem exists_numberFieldEmbeddingComparisonAutomorphism + {F : Type} [Field F] [NumberField F] + (i j : F →ₐ[ℚ] SeparableClosure ℚ) : + ∃ σ : SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ, + ∀ x : F, σ (i x) = j x := by + let hAlgebra : Algebra F (SeparableClosure ℚ) := + rationalEmbeddingSeparableClosureAlgebra i + let hScalarTower : IsScalarTower ℚ F (SeparableClosure ℚ) := + IsScalarTower.of_algebraMap_eq' i.comp_algebraMap.symm + let hSeparable : Algebra.IsSeparable F (SeparableClosure ℚ) := + Algebra.isSeparable_tower_top_of_isSeparable + ℚ F (SeparableClosure ℚ) + obtain ⟨φ, hφ⟩ := + (IsSepClosed.surjective_domRestrict_of_isSeparable + (K := ℚ) (L := F) + (M := SeparableClosure ℚ) + (E := SeparableClosure ℚ)) j + let σ : SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ := + AlgEquiv.ofBijective φ + (Normal.toIsAlgebraic.algHom_bijective₂ + φ (AlgHom.id ℚ (SeparableClosure ℚ))).1 + refine ⟨σ, ?_⟩ + intro x + have hx := + congrArg (fun ψ : F →ₐ[ℚ] SeparableClosure ℚ => ψ x) hφ + exact hx + +/-- The canonical comparison automorphism between two rational +embeddings of one number field into the fixed separable closure. -/ +noncomputable def numberFieldEmbeddingComparisonAutomorphism + {F : Type} [Field F] [NumberField F] + (i j : F →ₐ[ℚ] SeparableClosure ℚ) : + SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ := + Classical.choose + (exists_numberFieldEmbeddingComparisonAutomorphism i j) + +/-- The comparison automorphism carries the first embedded copy of the +number field to the second one pointwise. -/ +@[simp] +theorem numberFieldEmbeddingComparisonAutomorphism_apply + {F : Type} [Field F] [NumberField F] + (i j : F →ₐ[ℚ] SeparableClosure ℚ) + (x : F) : + numberFieldEmbeddingComparisonAutomorphism i j (i x) = + j x := + Classical.choose_spec + (exists_numberFieldEmbeddingComparisonAutomorphism i j) x + +/-- Conjugating the fixing subgroup of one embedded copy of a number +field by the comparison automorphism gives the fixing subgroup of the +other embedded copy. -/ +theorem conjugateClosedFixingSubgroup_embeddingRange + {F : Type} [Field F] [NumberField F] + (i j : F →ₐ[ℚ] SeparableClosure ℚ) : + conjugateClosedSubgroup + (RamificationTheory.closedFixingSubgroup + ℚ (SeparableClosure ℚ) i.fieldRange) + (numberFieldEmbeddingComparisonAutomorphism j i) = + RamificationTheory.closedFixingSubgroup + ℚ (SeparableClosure ℚ) j.fieldRange := by + let s := + numberFieldEmbeddingComparisonAutomorphism j i + ext τ + change + τ ∈ conjugateClosedSubgroup + (closedFixingSubgroup ℚ (SeparableClosure ℚ) i.fieldRange) s ↔ + τ ∈ closedFixingSubgroup ℚ (SeparableClosure ℚ) j.fieldRange + rw [conjugateClosedSubgroup_mem] + change + s * τ * s⁻¹ ∈ i.fieldRange.fixingSubgroup ↔ + τ ∈ j.fieldRange.fixingSubgroup + rw [IntermediateField.mem_fixingSubgroup_iff, + IntermediateField.mem_fixingSubgroup_iff] + constructor + · intro h x hx + rcases hx with ⟨y, rfl⟩ + have hi := h (i y) ⟨y, rfl⟩ + have hs : + s (j y) = i y := + numberFieldEmbeddingComparisonAutomorphism_apply j i y + change s (τ (s.symm (i y))) = i y at hi + have hpre : s.symm (i y) = j y := by + rw [← hs, s.symm_apply_apply] + rw [hpre, ← hs] at hi + exact s.injective hi + · intro h x hx + rcases hx with ⟨y, rfl⟩ + have hj := h (j y) ⟨y, rfl⟩ + have hs : + s (j y) = i y := + numberFieldEmbeddingComparisonAutomorphism_apply j i y + change s (τ (s.symm (i y))) = i y + have hpre : s.symm (i y) = j y := by + rw [← hs, s.symm_apply_apply] + rw [hpre, hj, hs] + +section EmbeddedNumberFieldRealization + +local instance numberFieldEmbeddedIdeleClassGroupIsMulCommutative + {F : Type} [Field F] [NumberField F] + : IsMulCommutative (IdeleClassGroup F) := + ⟨⟨fun a b => mul_comm a b⟩⟩ + +local instance numberFieldEmbeddedIdeleClassSubgroupNormal + {F : Type} [Field F] [NumberField F] + (N : Subgroup (IdeleClassGroup F)) : N.Normal := + N.normal_of_isMulCommutative + +variable + (K L : Type) [Field K] [NumberField K] + [Field L] [NumberField L] [Algebra K L] + +/-- The lower embedding obtained by restricting an explicitly supplied +embedding of the top field into the rational separable closure. -/ +noncomputable def numberFieldEmbeddedLowerEmbedding + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + K →ₐ[ℚ] SeparableClosure ℚ := + j.comp (IsScalarTower.toAlgHom ℚ K L) + +/-- The exact algebra structure on the rational separable closure induced by +the lower embedding of an explicitly embedded number-field tower. Keeping +this as a reducible definition lets every use of the associated separable- +closure equivalence share one definitionally identical algebra structure. -/ +@[reducible] +noncomputable def numberFieldEmbeddedSeparableClosureAlgebra + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + Algebra K (SeparableClosure ℚ) := + rationalEmbeddingSeparableClosureAlgebra + (numberFieldEmbeddedLowerEmbedding K L j) + +/-- The fixing subgroup of the explicitly embedded lower field. -/ +abbrev numberFieldEmbeddedBaseSubgroup + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + ClosedSubgroup + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := + closedFixingSubgroup ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedLowerEmbedding K L j).fieldRange + +/-- The fixing subgroup of the explicitly embedded top field. -/ +abbrev numberFieldEmbeddedTopSubgroup + (_K L : Type) [Field L] [NumberField L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + ClosedSubgroup + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := + closedFixingSubgroup ℚ (SeparableClosure ℚ) j.fieldRange + +/-- The top fixing subgroup lies in the lower fixing subgroup. -/ +theorem numberFieldEmbeddedTopSubgroup_le_baseSubgroup + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + (numberFieldEmbeddedTopSubgroup K L j).toSubgroup ≤ + (numberFieldEmbeddedBaseSubgroup K L j).toSubgroup := by + change + j.fieldRange.fixingSubgroup ≤ + (numberFieldEmbeddedLowerEmbedding K L j).fieldRange.fixingSubgroup + apply + (numberFieldEmbeddedLowerEmbedding K L j).fieldRange.fixingSubgroup_le + intro x hx + rcases hx with ⟨y, rfl⟩ + exact ⟨algebraMap K L y, rfl⟩ + +/-- The separable closure of the actual lower field, identified with +the rational separable closure carrying the algebra structure induced +by an explicit compatible embedding. -/ +noncomputable def numberFieldEmbeddedSeparableClosureEquiv + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + letI : Algebra K (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra K L j + SeparableClosure K ≃ₐ[K] SeparableClosure ℚ := by + letI : Algebra K (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra K L j + letI hScalarTower : IsScalarTower ℚ K (SeparableClosure ℚ) := + IsScalarTower.of_algebraMap_eq' + (numberFieldEmbeddedLowerEmbedding K L j).comp_algebraMap.symm + letI hseparable : Algebra.IsSeparable K (SeparableClosure ℚ) := + Algebra.isSeparable_tower_top_of_isSeparable + ℚ K (SeparableClosure ℚ) + letI hSepClosure : IsSepClosure K (SeparableClosure ℚ) := + ⟨IsSepClosure.sep_closed ℚ, hseparable⟩ + exact + IsSepClosure.equiv K + (SeparableClosure K) (SeparableClosure ℚ) + +/-- The relative subgroup arising from an explicit compatible +number-field embedding is normal. -/ +theorem numberFieldEmbeddedExtensionSubgroup_normal + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).Normal := by + let i := numberFieldEmbeddedLowerEmbedding K L j + let hAlgebra : Algebra K (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra K L j + let e := numberFieldEmbeddedSeparableClosureEquiv K L j + change + (CyclicCohomology.extensionSubgroup + (closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange i)) + (closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange j)) _).Normal + exact ambientEmbeddedExtensionSubgroup_normal ℚ K L j e + +/-- The normality witness for an explicitly embedded tower, registered at +the precise subgroup used by the downstream quotient constructions. -/ +noncomputable local instance + numberFieldEmbeddedExtensionSubgroupNormal + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).Normal := + numberFieldEmbeddedExtensionSubgroup_normal K L j + +/-- The relative quotient arising from an explicit compatible +number-field embedding is finite. -/ +theorem numberFieldEmbeddedExtensionQuotient_finite + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + Finite + ((numberFieldEmbeddedBaseSubgroup K L j).toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := by + let i := numberFieldEmbeddedLowerEmbedding K L j + let hAlgebra : Algebra K (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra K L j + let e := numberFieldEmbeddedSeparableClosureEquiv K L j + change + Finite + ((closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange i)).toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + (closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange i)) + (closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange j)) _) + exact ambientEmbeddedExtensionQuotient_finite ℚ K L j e + +/-- The relative-index witness for an explicitly embedded tower, registered +at the exact quotient consumed by `FiniteNormQuotient`. -/ +noncomputable local instance + numberFieldEmbeddedExtensionQuotientFinite + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + Finite + ((numberFieldEmbeddedBaseSubgroup K L j).toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := + numberFieldEmbeddedExtensionQuotient_finite K L j + +/-- The finite abstract field determined by the lower member of an +explicitly embedded number-field tower. -/ +noncomputable abbrev numberFieldEmbeddedFiniteAbstractField + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) where + field := numberFieldEmbeddedBaseSubgroup K L j + finite := by + simpa only [numberFieldEmbeddedBaseSubgroup] using + (ambientEmbeddedAbsoluteQuotientFinite + ℚ K (numberFieldEmbeddedLowerEmbedding K L j)) + +/-- The absolute-index witness for the lower member of an explicitly embedded +tower, registered at its specialized quotient type. -/ +noncomputable local instance + numberFieldEmbeddedAbsoluteQuotientFinite + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (numberFieldEmbeddedBaseSubgroup K L j) + (le_baseField + (numberFieldEmbeddedBaseSubgroup K L j))) := + (numberFieldEmbeddedFiniteAbstractField K L j).finite + +/-- The finite Galois subextension determined by an explicitly embedded +number-field tower. -/ +noncomputable abbrev numberFieldEmbeddedFiniteGaloisSubextension + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + FiniteGaloisSubextension + (numberFieldEmbeddedBaseSubgroup K L j) where + field := numberFieldEmbeddedTopSubgroup K L j + below := numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j + normal := numberFieldEmbeddedExtensionSubgroup_normal K L j + finite := numberFieldEmbeddedExtensionQuotient_finite K L j + +/-- Shared finite-dimensional data for the fixed field of the lower subgroup +in an explicitly embedded number-field tower. -/ +noncomputable local instance + numberFieldEmbeddedAbstractFixedFieldFiniteDimensional + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + FiniteDimensional ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j)) := + abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedAbsoluteQuotientFinite K L j) + +/-- Shared relative finite-dimensional data for the two fixed fields of an +explicitly embedded number-field tower. -/ +noncomputable local instance + numberFieldEmbeddedAbstractRelativeFixedFieldFiniteDimensional + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + FiniteDimensional + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j)) + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := + abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) + (numberFieldEmbeddedAbsoluteQuotientFinite K L j) + (numberFieldEmbeddedExtensionQuotientFinite K L j) + +local instance numberFieldEmbeddedAbstractFixedFieldScalarTower + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + IsScalarTower ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j)) + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := + IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) + +noncomputable local instance + numberFieldEmbeddedAbstractRelativeFixedFieldAbsoluteFiniteDimensional + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + FiniteDimensional ℚ + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := + FiniteDimensional.trans ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j)) + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) + +noncomputable local instance + numberFieldEmbeddedAbstractFixedFieldNumberField + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + NumberField + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j)) := + NumberField.of_module_finite ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j)) + +noncomputable local instance + numberFieldEmbeddedAbstractRelativeFixedFieldNumberField + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + NumberField + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := + NumberField.of_module_finite ℚ + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) + +noncomputable local instance + numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsFiniteDimensional + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + FiniteDimensional ℚ + ((abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).restrictScalars ℚ) := by + change FiniteDimensional ℚ + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) + infer_instance + +noncomputable local instance + numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsNumberField + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + NumberField + ((abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).restrictScalars ℚ) := + NumberField.of_module_finite ℚ _ + +noncomputable local instance + numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsAlgebra + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + Algebra + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j)) + ((abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)).restrictScalars ℚ) := + (IntermediateField.inclusion + (abstractFixedField_le ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j))).toRingHom.toAlgebra + +noncomputable local instance + numberFieldEmbeddedAbstractRelativeFixedFieldIsGalois + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + IsGalois + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j)) + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) := + abstractRelativeFixedField_isGalois + ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) + (numberFieldEmbeddedExtensionSubgroupNormal K L j) + +/-- The quotient of the two explicitly embedded fixing subgroups is +the actual relative Galois group. -/ +noncomputable def + numberFieldEmbeddedExtensionQuotientEquivGaloisGroup + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + (numberFieldEmbeddedFiniteGaloisSubextension K L j).extensionQuotient ≃* + Gal(L / K) := by + let i := numberFieldEmbeddedLowerEmbedding K L j + letI hAlgebra : Algebra K (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra K L j + let e := numberFieldEmbeddedSeparableClosureEquiv K L j + let H₀ := + closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange i) + let J₀ := + closedFixingSubgroup ℚ (SeparableClosure ℚ) + (AlgHom.fieldRange j) + let hJH : J₀.toSubgroup ≤ H₀.toSubgroup := by + change j.fieldRange.fixingSubgroup ≤ i.fieldRange.fixingSubgroup + apply i.fieldRange.fixingSubgroup_le + intro x hx + rcases hx with ⟨y, rfl⟩ + exact ⟨algebraMap K L y, rfl⟩ + letI : (CyclicCohomology.extensionSubgroup H₀ J₀ hJH).Normal := + ambientEmbeddedExtensionSubgroup_normal ℚ K L j e + change + (H₀.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H₀ J₀ hJH) ≃* + Gal(L / K) + exact ambientEmbeddedExtensionQuotientEquivGaloisGroup ℚ K L j e + +/-- The original lower field is canonically equivalent to the fixed +field of its explicitly embedded fixing subgroup. -/ +noncomputable def numberFieldEmbeddedAbstractBaseFieldEquiv + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + K ≃ₐ[ℚ] + abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j) := + (numberFieldEmbeddedLowerEmbedding K L j).equivFieldRange.trans + (IntermediateField.equivOfEq + (InfiniteGalois.fixedField_fixingSubgroup + (numberFieldEmbeddedLowerEmbedding K L j).fieldRange).symm) + +/-- The original top field is canonically equivalent to the relative +fixed field of its explicitly embedded fixing subgroup. -/ +noncomputable def numberFieldEmbeddedAbstractTopFieldEquiv + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + L ≃ₐ[ℚ] + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup + K L j)).restrictScalars ℚ := + j.equivFieldRange.trans + (IntermediateField.equivOfEq + (InfiniteGalois.fixedField_fixingSubgroup j.fieldRange).symm) + +/-- The two explicit fixed-field equivalences commute with the tower +algebra maps. -/ +@[simp] +theorem numberFieldEmbeddedAbstractFieldEquiv_algebraMap + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (x : K) : + numberFieldEmbeddedAbstractTopFieldEquiv K L j + (algebraMap K L x) = + algebraMap + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L j)) + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j)) + (numberFieldEmbeddedAbstractBaseFieldEquiv K L j x) := by + apply Subtype.ext + rfl + +/-- The ordinary idele class group of the explicitly embedded lower +field, transported to the fixed part of the rational absolute +idele-class representation. -/ +noncomputable def numberFieldEmbeddedIdeleClassEquivAmbientFixed + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + Additive (IdeleClassGroup K) ≃+ + ambientFixedAddSubgroup + rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j) := by + let H := numberFieldEmbeddedBaseSubgroup K L j + exact + (MulEquiv.toAdditive + (ideleClassCongr + (numberFieldEmbeddedAbstractBaseFieldEquiv K L j))).trans + (rationalAbstractFixedFieldIdeleClassEquivFixed H) + +/-- The abstract finite norm quotient of an explicitly embedded tower +is its genuine ordinary idele-class norm quotient. -/ +noncomputable def + numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) : + FiniteNormQuotient rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) ≃+ + Additive + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm K L).range) := by + let hnormal := + numberFieldEmbeddedExtensionSubgroupNormal K L j + let H := numberFieldEmbeddedBaseSubgroup K L j + let J := numberFieldEmbeddedTopSubgroup K L j + let hJH := + numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j + let fixedFieldEquiv := + rationalFiniteNormQuotientEquivIdeleClassNormQuotient + H J hJH hnormal + let actualFieldEquiv := + ordinaryIdeleClassNormQuotientCongrOfAlgEquiv + (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) + (numberFieldEmbeddedAbstractTopFieldEquiv K L j) + (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) + exact + fixedFieldEquiv.trans + (MulEquiv.toAdditive actualFieldEquiv.symm) + + +end EmbeddedNumberFieldRealization +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueFixedFields.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueFixedFields.lean new file mode 100644 index 0000000..7520ff3 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueFixedFields.lean @@ -0,0 +1,359 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.AbstractFixedFieldGlobalNormResidueEmbeddedReciprocity + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField +open NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + + +variable + (K : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (L : FiniteAbelianSubextension K.field) + +local instance abstractFixedFieldBaseQuotientFinite : + Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + K.field (le_baseField K.field)) := + K.finite + +local instance abstractFixedFieldRelativeQuotientFinite : + Finite + (K.field.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup K.field L.field L.below) := + L.finite + +local instance abstractFixedFieldRelativeQuotientIsMulCommutative : + IsMulCommutative L.extensionQuotient := + L.commutative + +noncomputable local instance abstractFixedFieldFiniteDimensional : + FiniteDimensional ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) K.field) := + abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) K.field K.finite + +noncomputable local instance abstractRelativeFixedFieldFiniteDimensional : + FiniteDimensional + (abstractFixedField ℚ (SeparableClosure ℚ) K.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) := + abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) + K.field L.field L.below K.finite L.finite + +local instance abstractFixedFieldRelativeScalarTower : + IsScalarTower ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) K.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) := + IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) + +noncomputable local instance abstractRelativeFixedFieldAbsoluteFiniteDimensional : + FiniteDimensional ℚ + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) := + FiniteDimensional.trans ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) K.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) + +noncomputable local instance abstractFixedFieldNumberField : + NumberField + (abstractFixedField ℚ (SeparableClosure ℚ) K.field) := + NumberField.of_module_finite ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) K.field) + +/-- The lower fixed idèle-class group is commutative. Naming the mixin +before the public quotient declarations avoids delayed normality synthesis +inside their definition bodies. -/ +local instance + abstractFixedFieldIdeleClassGroupIsMulCommutative : + IsMulCommutative + (IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) K.field)) := + ⟨⟨fun a b => mul_comm a b⟩⟩ + +noncomputable local instance abstractRelativeFixedFieldNumberField : + NumberField + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) := + NumberField.of_module_finite ℚ + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) + +/-- Use the same explicit Galois witness as the fixed-field quotient +comparison. Deriving it through `IsAbelianGalois` produces an equivalent +but much larger dependent instance path. -/ +noncomputable local instance + abstractRelativeFixedFieldIsGalois : + IsGalois + (abstractFixedField ℚ (SeparableClosure ℚ) K.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) := + abstractRelativeFixedField_isGalois + ℚ (SeparableClosure ℚ) + K.field L.field L.below L.normal + +noncomputable local instance abstractRelativeFixedFieldIsAbelianGalois : + IsAbelianGalois + (abstractFixedField ℚ (SeparableClosure ℚ) K.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) := + finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois L + +/-- Use one opaque normality witness for the actual fixed-field norm range. +This keeps every occurrence of its quotient group on the same instance path. -/ +local instance + abstractFixedFieldIdeleClassNormRangeNormal : + ((_root_.ideleClassNorm + (abstractFixedField ℚ (SeparableClosure ℚ) K.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below)).range).Normal := by + infer_instance + +/-- The abelianized abstract extension quotient is the actual Galois +group of the corresponding pair of fixed fields. -/ +noncomputable def + abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) K.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below + Additive + (Abelianization + (FiniteGaloisSubextension.extensionQuotient + L.toFiniteGaloisExtension)) ≃+ + Additive (Gal(E / F)) := by + dsimp only + let F := + abstractFixedField ℚ (SeparableClosure ℚ) K.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below + let e : + L.extensionQuotient ≃* + Gal(E / F) := + L.extensionQuotientMulEquiv.trans + (abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) + K.field L.field L.below L.normal) + exact + MulEquiv.toAdditive + ((Abelianization.equivOfComm : + L.extensionQuotient ≃* + Abelianization L.extensionQuotient).symm.trans e) + +/-- The actual fixed-field global norm-residue equivalence + +`C_F / N_{E/F} C_E ≃ Gal(E/F)` + +attached to an abstract finite abelian subextension in the rational +absolute class formation. -/ +noncomputable def abstractFixedFieldGlobalNormResidueEquiv : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) K.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below + Additive + (IdeleClassGroup F ⧸ + (_root_.ideleClassNorm F E).range) ≃+ + Additive (Gal(E / F)) := by + dsimp only + let F := + abstractFixedField ℚ (SeparableClosure ℚ) K.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below + let eNorm : + FiniteNormQuotient rationalIdeleClassRepresentation + K.field L.field L.below ≃+ + Additive + (Abelianization L.toFiniteGaloisExtension.extensionQuotient) := + rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + K L.toFiniteGaloisExtension + exact + (rationalFiniteNormQuotientEquivIdeleClassNormQuotient + K.field L.field L.below L.normal).symm.trans + (eNorm.trans + (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup + K L)) + +/-- The abstract finite norm-residue equivalence with its dependent source +instance fixed to the public finite norm quotient. -/ +noncomputable def abstractFixedFieldFiniteNormResidueGaloisEquiv : + FiniteNormQuotient rationalIdeleClassRepresentation + K.field L.field L.below ≃+ + Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) K.field))) := by + letI : AddCommGroup + (FiniteNormQuotient rationalIdeleClassRepresentation + K.field L.field L.below) := + finiteNormQuotientAddCommGroup rationalIdeleClassRepresentation + K.field L.field L.below + exact + @AddEquiv.trans + (FiniteNormQuotient rationalIdeleClassRepresentation + K.field L.field L.below) + (Additive + (Abelianization + L.toFiniteGaloisExtension.extensionQuotient)) + (Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) K.field)))) + inferInstance inferInstance inferInstance + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + K L.toFiniteGaloisExtension) + (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup + K L) + +/-- The abstract norm-residue symbol on the fixed part of the rational +absolute idele-class representation, with its value transported to the +actual Galois group of the two fixed fields. This is the form consumed +directly by the abstract norm--restriction naturality theorem. -/ +noncomputable def ambientFixedGlobalNormResidueAddMonoidHom : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) K.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below + ambientFixedAddSubgroup + rationalIdeleClassRepresentation K.field →+ + Additive (Gal(E / F)) := by + dsimp only + let F := + abstractFixedField ℚ (SeparableClosure ℚ) K.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below + exact + (abstractFixedFieldFiniteNormResidueGaloisEquiv K L).toAddMonoidHom.comp + (finiteNormClassHom rationalIdeleClassRepresentation + K.field L.field L.below) + +/-- The ordinary idele class group of the lower fixed field, transported +to the fixed part of the rational absolute idele-class representation. -/ +private noncomputable def abstractFixedFieldIdeleClassToAmbientFixedMonoidHom : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) K.field + IdeleClassGroup F →* + Multiplicative + (ambientFixedAddSubgroup + rationalIdeleClassRepresentation K.field) := + (rationalAbstractFixedFieldIdeleClassEquivFixed + K.field).toAddMonoidHom.toMultiplicativeRight + +/-- The actual norm-residue homomorphism on the ordinary idele class +group of the lower fixed field, constructed without choosing a second +field embedding. -/ +noncomputable def abstractFixedFieldGlobalNormResidueMonoidHom : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) K.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) L.below + IdeleClassGroup F →* Gal(E / F) := + (ambientFixedGlobalNormResidueAddMonoidHom K L).toMultiplicative.comp + (abstractFixedFieldIdeleClassToAmbientFixedMonoidHom K) + +/-- Pointwise form of the ambient fixed-part norm-residue homomorphism. -/ +theorem ambientFixedGlobalNormResidueAddMonoidHom_apply + (a : + ambientFixedAddSubgroup + rationalIdeleClassRepresentation K.field) : + ambientFixedGlobalNormResidueAddMonoidHom K L a = + abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup + K L + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + K L.toFiniteGaloisExtension + (finiteNormClass rationalIdeleClassRepresentation + K.field L.field L.below a)) := by + change + abstractFixedFieldFiniteNormResidueGaloisEquiv K L + (finiteNormClass rationalIdeleClassRepresentation + K.field L.field L.below a) = _ + rfl + +/-- Pointwise form of the transported fixed-field norm-residue homomorphism. -/ +private theorem abstractFixedFieldGlobalNormResidueMonoidHom_apply : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) K.field + ∀ c : IdeleClassGroup F, + abstractFixedFieldGlobalNormResidueMonoidHom K L c = + Additive.toMul + (ambientFixedGlobalNormResidueAddMonoidHom K L + ((rationalAbstractFixedFieldIdeleClassEquivFixed K.field) + (Additive.ofMul c))) := by + dsimp only + intro c + rfl + +/-- Transporting an ordinary fixed-field idele class to the ambient +fixed part and applying the abstract norm-residue map gives exactly the +actual fixed-field norm-residue value. -/ +@[simp] +theorem abstractFixedFieldGlobalNormResidueMonoidHom_fixed_apply + (a : + ambientFixedAddSubgroup + rationalIdeleClassRepresentation K.field) : + abstractFixedFieldGlobalNormResidueMonoidHom K L + (Additive.toMul + ((rationalAbstractFixedFieldIdeleClassEquivFixed + K.field).symm a)) = + Additive.toMul + (ambientFixedGlobalNormResidueAddMonoidHom K L a) := by + rw [abstractFixedFieldGlobalNormResidueMonoidHom_apply] + change + Additive.toMul + (ambientFixedGlobalNormResidueAddMonoidHom K L + ((rationalAbstractFixedFieldIdeleClassEquivFixed K.field) + ((rationalAbstractFixedFieldIdeleClassEquivFixed + K.field).symm a))) = + Additive.toMul + (ambientFixedGlobalNormResidueAddMonoidHom K L a) + rw [(rationalAbstractFixedFieldIdeleClassEquivFixed + K.field).apply_symm_apply] + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueNormClasses.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueNormClasses.lean new file mode 100644 index 0000000..9a8db28 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/AbstractFixedFieldGlobalNormResidueNormClasses.lean @@ -0,0 +1,294 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.AbstractFixedFieldGlobalNormResidueEmbeddings + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField +open NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +section EmbeddedNumberFieldRealization + +variable + (K L : Type) [Field K] [NumberField K] + [Field L] [NumberField L] [Algebra K L] + + +attribute [local instance] + numberFieldEmbeddedIdeleClassGroupIsMulCommutative + numberFieldEmbeddedIdeleClassSubgroupNormal + numberFieldEmbeddedExtensionSubgroupNormal + numberFieldEmbeddedExtensionQuotientFinite + numberFieldEmbeddedAbsoluteQuotientFinite + numberFieldEmbeddedAbstractFixedFieldFiniteDimensional + numberFieldEmbeddedAbstractRelativeFixedFieldFiniteDimensional + numberFieldEmbeddedAbstractFixedFieldScalarTower + numberFieldEmbeddedAbstractRelativeFixedFieldAbsoluteFiniteDimensional + numberFieldEmbeddedAbstractFixedFieldNumberField + numberFieldEmbeddedAbstractRelativeFixedFieldNumberField + numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsFiniteDimensional + numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsNumberField + numberFieldEmbeddedAbstractRelativeFixedFieldRestrictScalarsAlgebra + numberFieldEmbeddedAbstractRelativeFixedFieldIsGalois + +private theorem numberFieldEmbeddedOrdinaryNormQuotientCongr_symm_mk + {K₀ L₀ K₁ L₁ : Type} + [Field K₀] [NumberField K₀] + [Field L₀] [NumberField L₀] [Algebra K₀ L₀] + [Field K₁] [NumberField K₁] + [Field L₁] [NumberField L₁] [Algebra K₁ L₁] + (eK : K₀ ≃ₐ[ℚ] K₁) + (eL : L₀ ≃ₐ[ℚ] L₁) + (h : ∀ x : K₀, + eL (algebraMap K₀ L₀ x) = + algebraMap K₁ L₁ (eK x)) + (c : IdeleClassGroup K₁) : + (ordinaryIdeleClassNormQuotientCongrOfAlgEquiv eK eL h).symm + (QuotientGroup.mk' + (_root_.ideleClassNorm K₁ L₁).range c) = + QuotientGroup.mk' + (_root_.ideleClassNorm K₀ L₀).range + ((ideleClassCongr eK).symm c) := by + let e := ordinaryIdeleClassNormQuotientCongrOfAlgEquiv eK eL h + apply e.injective + rw [e.apply_symm_apply, + ordinaryIdeleClassNormQuotientCongrOfAlgEquiv_mk, + MulEquiv.apply_symm_apply] + +private noncomputable def numberFieldEmbeddedFiniteNormClassPublicValue + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j)) : + Additive + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm K L).range) := + numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient + K L j + (finiteNormClass rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) + a) + +private noncomputable def numberFieldEmbeddedFiniteNormClassExpectedValue + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j)) : + Additive + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm K L).range) := + Additive.ofMul + (QuotientGroup.mk' + (_root_.ideleClassNorm K L).range + (Additive.toMul + ((numberFieldEmbeddedIdeleClassEquivAmbientFixed K L j).symm a))) + +private noncomputable def + numberFieldEmbeddedFiniteNormClassDirectComparisonValue + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j)) : + Additive + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm K L).range) := by + let hnormal := + numberFieldEmbeddedExtensionSubgroupNormal K L j + let H := numberFieldEmbeddedBaseSubgroup K L j + let J := numberFieldEmbeddedTopSubgroup K L j + let hJH := + numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j + let fixedFieldEquiv := + rationalFiniteNormQuotientEquivIdeleClassNormQuotient + H J hJH hnormal + let actualFieldEquiv := + ordinaryIdeleClassNormQuotientCongrOfAlgEquiv + (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) + (numberFieldEmbeddedAbstractTopFieldEquiv K L j) + (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) + exact + MulEquiv.toAdditive actualFieldEquiv.symm + (fixedFieldEquiv + (finiteNormClass rationalIdeleClassRepresentation + H J hJH a)) + +private theorem + numberFieldEmbeddedFiniteNormClassPublicValue_eq_directComparison + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j)) : + numberFieldEmbeddedFiniteNormClassPublicValue K L j a = + numberFieldEmbeddedFiniteNormClassDirectComparisonValue K L j a := by + unfold numberFieldEmbeddedFiniteNormClassPublicValue + unfold numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient + unfold numberFieldEmbeddedFiniteNormClassDirectComparisonValue + rfl + +private noncomputable def numberFieldEmbeddedActualNormClassRepresentativeValue + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j)) : + Additive + (IdeleClassGroup K ⧸ + (_root_.ideleClassNorm K L).range) := by + let H := numberFieldEmbeddedBaseSubgroup K L j + let hJH := numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j + let F := abstractFixedField ℚ (SeparableClosure ℚ) H + let E := abstractRelativeFixedField ℚ (SeparableClosure ℚ) hJH + let actualFieldEquiv := + ordinaryIdeleClassNormQuotientCongrOfAlgEquiv + (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) + (numberFieldEmbeddedAbstractTopFieldEquiv K L j) + (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) + exact + Additive.ofMul + (actualFieldEquiv.symm + (QuotientGroup.mk' + (_root_.ideleClassNorm F E).range + (Additive.toMul + ((rationalAbstractFixedFieldIdeleClassEquivFixed H).symm a)))) + +private theorem + numberFieldEmbeddedFiniteNormClassDirectComparison_eq_actualValue + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j)) : + numberFieldEmbeddedFiniteNormClassDirectComparisonValue K L j a = + numberFieldEmbeddedActualNormClassRepresentativeValue K L j a := by + let hnormal := numberFieldEmbeddedExtensionSubgroupNormal K L j + let H := numberFieldEmbeddedBaseSubgroup K L j + let J := numberFieldEmbeddedTopSubgroup K L j + let hJH := numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j + let actualFieldEquiv := + ordinaryIdeleClassNormQuotientCongrOfAlgEquiv + (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) + (numberFieldEmbeddedAbstractTopFieldEquiv K L j) + (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) + have hfixed := + rationalFiniteNormQuotientEquivIdeleClassNormQuotient_finiteNormClass + H J hJH hnormal a + unfold numberFieldEmbeddedFiniteNormClassDirectComparisonValue + unfold numberFieldEmbeddedActualNormClassRepresentativeValue + exact congrArg (MulEquiv.toAdditive actualFieldEquiv.symm) hfixed + +private theorem numberFieldEmbeddedActualNormClassRepresentativeValue_eq_expected + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j)) : + numberFieldEmbeddedActualNormClassRepresentativeValue K L j a = + numberFieldEmbeddedFiniteNormClassExpectedValue K L j a := by + let H := numberFieldEmbeddedBaseSubgroup K L j + let hJH := numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j + let F := abstractFixedField ℚ (SeparableClosure ℚ) H + let E := abstractRelativeFixedField ℚ (SeparableClosure ℚ) hJH + let actualFieldEquiv := + ordinaryIdeleClassNormQuotientCongrOfAlgEquiv + (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) + (numberFieldEmbeddedAbstractTopFieldEquiv K L j) + (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) + let c : IdeleClassGroup F := + Additive.toMul + ((rationalAbstractFixedFieldIdeleClassEquivFixed H).symm a) + unfold numberFieldEmbeddedActualNormClassRepresentativeValue + unfold numberFieldEmbeddedFiniteNormClassExpectedValue + change + Additive.ofMul + (actualFieldEquiv.symm + (QuotientGroup.mk' + (_root_.ideleClassNorm F E).range c)) = + Additive.ofMul + (QuotientGroup.mk' + (_root_.ideleClassNorm K L).range + ((ideleClassCongr + (numberFieldEmbeddedAbstractBaseFieldEquiv K L j)).symm c)) + exact + congrArg Additive.ofMul + (numberFieldEmbeddedOrdinaryNormQuotientCongr_symm_mk + (numberFieldEmbeddedAbstractBaseFieldEquiv K L j) + (numberFieldEmbeddedAbstractTopFieldEquiv K L j) + (numberFieldEmbeddedAbstractFieldEquiv_algebraMap K L j) c) + +/-- On a finite norm-class representative, the explicit fixed-field +comparison is the genuine ordinary idele-class quotient. -/ +@[simp] +theorem + numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_finiteNormClass + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (a : ambientFixedAddSubgroup rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j)) : + numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient K L j + (finiteNormClass rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) a) = + Additive.ofMul + (QuotientGroup.mk' + (_root_.ideleClassNorm K L).range + (Additive.toMul + ((numberFieldEmbeddedIdeleClassEquivAmbientFixed K L j).symm a))) := by + change + numberFieldEmbeddedFiniteNormClassPublicValue K L j a = + numberFieldEmbeddedFiniteNormClassExpectedValue K L j a + exact + (numberFieldEmbeddedFiniteNormClassPublicValue_eq_directComparison + K L j a).trans + ((numberFieldEmbeddedFiniteNormClassDirectComparison_eq_actualValue + K L j a).trans + (numberFieldEmbeddedActualNormClassRepresentativeValue_eq_expected + K L j a)) + +/-- On an ordinary idele class, the explicit fixed-part realization +followed by the abstract finite norm-class map is the genuine quotient +class modulo the ordinary idele-class norm. -/ +@[simp] +theorem + numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_ideleClass + [FiniteDimensional K L] [IsGalois K L] + (j : L →ₐ[ℚ] SeparableClosure ℚ) + (c : IdeleClassGroup K) : + numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient K L j + (finiteNormClass rationalIdeleClassRepresentation + (numberFieldEmbeddedBaseSubgroup K L j) + (numberFieldEmbeddedTopSubgroup K L j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L j) + (numberFieldEmbeddedIdeleClassEquivAmbientFixed + K L j (Additive.ofMul c))) = + Additive.ofMul + (QuotientGroup.mk' + (_root_.ideleClassNorm K L).range c) := by + simpa only [AddEquiv.symm_apply_apply, toMul_ofMul] using + (numberFieldEmbeddedFiniteNormQuotientEquivIdeleClassNormQuotient_finiteNormClass + K L j + (numberFieldEmbeddedIdeleClassEquivAmbientFixed + K L j (Additive.ofMul c))) + + +end EmbeddedNumberFieldRealization + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtin.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtin.lean index d3e6e51..75c1574 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtin.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtin.lean @@ -4,26 +4,11 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicIdeleClassValuation -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.InfiniteGlobalArtin -import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.MaximalUnramifiedReciprocity +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicAbstractFixedFieldArtinComparison -set_option autoImplicit false - -/-! -# Cyclotomic Artin coordinates over abstract fixed fields -The cyclotomic degree datum on the rational absolute Galois group has -an actual maximal-unramified field over every finite abstract fixed -field. This file identifies its genuine Galois group with -`Multiplicative ZHat`, using the normalized degree map, and supplies -the abelian Galois structure needed by the actual infinite global -Artin homomorphism. +set_option autoImplicit false -These constructions are the source side of the comparison between -abstract finite reciprocity and the chosen local-factor product. No -reciprocity comparison is assumed in their definitions. --/ open scoped IsMulCommutative NumberField @@ -35,2336 +20,11 @@ namespace Reciprocity open ClassFormation open KummerTheory -/-- Keep this module on the rational algebra structures used by the -cyclotomic fixed-field API. Generic intermediate-field instances are -propositionally equal here but not definitionally interchangeable. -/ -noncomputable local instance - cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra : - Algebra ℚ (SeparableClosure ℚ) := - DivisionRing.toRatAlgebra - -noncomputable local instance - cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldAlgebra : - Algebra ℚ rationalCyclotomicZHatField := - DivisionRing.toRatAlgebra - -/-- Cyclotomic field inertia is contained in the original abstract -field subgroup. -/ -theorem rationalCyclotomicFieldInertia_le - (H : ClosedSubgroup - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - (rationalCyclotomicDegreeData.fieldInertia H).toSubgroup ≤ - H.toSubgroup := by - intro σ hσ - exact hσ.1 - -/-- Viewing cyclotomic field inertia inside its ambient field subgroup -gives exactly the kernel of normalized degree. -/ -theorem extensionSubgroup_rationalCyclotomicFieldInertia - (H : ClosedSubgroup - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - CyclicCohomology.extensionSubgroup H - (rationalCyclotomicDegreeData.fieldInertia H) - (rationalCyclotomicFieldInertia_le H) = - rationalCyclotomicDegreeData.fieldInertiaWithin H := by - ext σ - rw [ - mem_extensionSubgroup_iff, - rationalCyclotomicDegreeData.mem_fieldInertiaWithin_iff, - rationalCyclotomicDegreeData.mem_fieldInertia_iff] - exact and_iff_right σ.2 - -/-- The actual Galois group of the cyclotomic maximal-unramified -extension of an abstract fixed field, in its normalized `ZHat` -coordinate. -/ -noncomputable def abstractFixedFieldCyclotomicGalEquivZHat - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - let hI := - rationalCyclotomicFieldInertia_le H.field - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) ≃* - Multiplicative ZHat := by - let hI := - rationalCyclotomicFieldInertia_le H.field - let hnormal : - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI).Normal := by - rw [extensionSubgroup_rationalCyclotomicFieldInertia] - infer_instance - let qField : - H.field.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI ≃* - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) := - LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal - let qInertia : - H.field.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI ≃* - H.field.toSubgroup ⧸ - rationalCyclotomicDegreeData.fieldInertiaWithin H.field := - QuotientGroup.quotientMulEquivOfEq - (extensionSubgroup_rationalCyclotomicFieldInertia H.field) - exact - qField.symm.trans - (qInertia.trans - (rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv - (H.toFiniteResidueAbstractField - rationalCyclotomicDegreeData))) - -/-- On an absolute-Galois representative fixing the lower field, the -actual cyclotomic Galois coordinate is its normalized degree. -/ -@[simp] -theorem abstractFixedFieldCyclotomicGalEquivZHat_extensionClass - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (σ : H.field.toSubgroup) : - let hI := - rationalCyclotomicFieldInertia_le H.field - let hnormal : - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI).Normal := by - rw [extensionSubgroup_rationalCyclotomicFieldInertia] - infer_instance - abstractFixedFieldCyclotomicGalEquivZHat H - (LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal - (QuotientGroup.mk σ)) = - rationalCyclotomicDegreeData.normalizedDegree - (H.toFiniteResidueAbstractField - rationalCyclotomicDegreeData) σ := by - let hI := - rationalCyclotomicFieldInertia_le H.field - let hnormal : - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI).Normal := by - rw [extensionSubgroup_rationalCyclotomicFieldInertia] - infer_instance - let qField := - LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal - change - (rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv - (H.toFiniteResidueAbstractField - rationalCyclotomicDegreeData)) - (QuotientGroup.quotientMulEquivOfEq - (extensionSubgroup_rationalCyclotomicFieldInertia H.field) - (qField.symm (qField (QuotientGroup.mk σ)))) = - rationalCyclotomicDegreeData.normalizedDegree - (H.toFiniteResidueAbstractField - rationalCyclotomicDegreeData) σ - rw [qField.symm_apply_apply] - rfl - -/-- Quotient-level evaluation of the actual cyclotomic Galois -coordinate. -/ -@[simp] -theorem abstractFixedFieldCyclotomicGalEquivZHat_quotientClass - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (q : - H.field.toSubgroup ⧸ - rationalCyclotomicDegreeData.fieldInertiaWithin H.field) : - let hI := - rationalCyclotomicFieldInertia_le H.field - let hnormal : - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI).Normal := by - rw [extensionSubgroup_rationalCyclotomicFieldInertia] - infer_instance - let qInertia : - H.field.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI ≃* - H.field.toSubgroup ⧸ - rationalCyclotomicDegreeData.fieldInertiaWithin H.field := - QuotientGroup.quotientMulEquivOfEq - (extensionSubgroup_rationalCyclotomicFieldInertia H.field) - abstractFixedFieldCyclotomicGalEquivZHat H - (LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal - (qInertia.symm q)) = - rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv - (H.toFiniteResidueAbstractField - rationalCyclotomicDegreeData) q := by - let hI := - rationalCyclotomicFieldInertia_le H.field - let hnormal : - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI).Normal := by - rw [extensionSubgroup_rationalCyclotomicFieldInertia] - infer_instance - let qField := - LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal - let qInertia : - H.field.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI ≃* - H.field.toSubgroup ⧸ - rationalCyclotomicDegreeData.fieldInertiaWithin H.field := - QuotientGroup.quotientMulEquivOfEq - (extensionSubgroup_rationalCyclotomicFieldInertia H.field) - change - (rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv - (H.toFiniteResidueAbstractField - rationalCyclotomicDegreeData)) - (qInertia - (qField.symm - (qField (qInertia.symm q)))) = - rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv - (H.toFiniteResidueAbstractField - rationalCyclotomicDegreeData) q - rw [qField.symm_apply_apply, qInertia.apply_symm_apply] - -/-- The extension fixed by cyclotomic field inertia is an actual -abelian Galois extension of the lower abstract fixed field. -/ -theorem abstractFixedFieldCyclotomic_isAbelianGalois - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - let hI := - rationalCyclotomicFieldInertia_le H.field - IsAbelianGalois - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) := by - let hI := - rationalCyclotomicFieldInertia_le H.field - let hnormal : - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI).Normal := by - rw [extensionSubgroup_rationalCyclotomicFieldInertia] - infer_instance - let : IsGalois - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) := - LocalClassFieldTheory.abstractRelativeFixedField_isGalois - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal - let e := - abstractFixedFieldCyclotomicGalEquivZHat H - exact - { is_comm.comm := by - intro σ τ - apply e.injective - simpa only [map_mul] using mul_comm (e σ) (e τ) } - -/-- The rational cyclotomic `ZHat`-field embedded in the actual -maximal-unramified compositum of an abstract fixed field. -/ -noncomputable def - rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - let hI := - rationalCyclotomicFieldInertia_le H.field - rationalCyclotomicZHatField →ₐ[ℚ] - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI := by - let hI := - rationalCyclotomicFieldInertia_le H.field - let J := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicDegreeData.fieldInertia H.field) - have hTJ : - rationalCyclotomicZHatField ≤ J := by - change - rationalCyclotomicZHatField ≤ - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicDegreeData.fieldInertia H.field) - rw [ - rationalCyclotomicDegreeData_fixedField_fieldInertia] - exact le_sup_right - exact IntermediateField.inclusion hTJ - -noncomputable instance - abstractFixedFieldCyclotomicCompositum_algebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - let hI := - rationalCyclotomicFieldInertia_le H.field - Algebra rationalCyclotomicZHatField - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) := - ((rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H).toRingHom).toAlgebra - -instance abstractFixedFieldCyclotomicCompositum_scalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - let hI := - rationalCyclotomicFieldInertia_le H.field - IsScalarTower ℚ rationalCyclotomicZHatField - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) := - IsScalarTower.of_algebraMap_eq' - ((rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H).comp_algebraMap).symm - -instance abstractFixedFieldCyclotomicCompositum_baseScalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - let hI := - rationalCyclotomicFieldInertia_le H.field - IsScalarTower ℚ - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) := by - let hI := - rationalCyclotomicFieldInertia_le H.field - apply IsScalarTower.of_algebraMap_eq - intro x - apply Subtype.ext - rfl - -/-- Restriction from the actual maximal-unramified compositum of an -abstract fixed field to the rational cyclotomic factor. -/ -noncomputable def abstractFixedFieldCyclotomicRestriction - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - let hI := - rationalCyclotomicFieldInertia_le H.field - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) →* - Gal(rationalCyclotomicZHatField / ℚ) := by - let hI := - rationalCyclotomicFieldInertia_le H.field - exact - IntermediateField.restrictRestrictAlgEquivMapHom - ℚ rationalCyclotomicZHatField - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) - -/-- On a quotient representative, cyclotomic restriction of the -actual relative automorphism is ordinary restriction of the same -ambient absolute-Galois automorphism. -/ -noncomputable local instance - cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldNormal : - Normal ℚ rationalCyclotomicZHatField := - rationalCyclotomicZHatField_isNormal - -@[simp] -theorem abstractFixedFieldCyclotomicRestriction_extensionClass - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (σ : H.field.toSubgroup) : - let hI := - rationalCyclotomicFieldInertia_le H.field - let hnormal : - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI).Normal := by - rw [extensionSubgroup_rationalCyclotomicFieldInertia] - infer_instance - abstractFixedFieldCyclotomicRestriction H - (LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal - (QuotientGroup.mk σ)) = - AlgEquiv.restrictNormalHom - rationalCyclotomicZHatField σ.1 := by - let hI := - rationalCyclotomicFieldInertia_le H.field - let hnormal : - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI).Normal := by - rw [extensionSubgroup_rationalCyclotomicFieldInertia] - infer_instance - let τ := - LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal - (QuotientGroup.mk' - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) hI) - σ) - apply AlgEquiv.ext - intro x - apply Subtype.ext - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI - have hrestrict : - algebraMap rationalCyclotomicZHatField U - ((abstractFixedFieldCyclotomicRestriction H τ) x) = - τ (algebraMap rationalCyclotomicZHatField U x) := by - change - algebraMap rationalCyclotomicZHatField U - ((AlgEquiv.restrictNormal - (MulSemiringAction.toAlgEquiv ℚ U τ) - rationalCyclotomicZHatField) x) = - (MulSemiringAction.toAlgEquiv ℚ U τ) - (algebraMap rationalCyclotomicZHatField U x) - exact - AlgEquiv.restrictNormal_commutes - (MulSemiringAction.toAlgEquiv ℚ U τ) - rationalCyclotomicZHatField x - have halgebraMap_eq_embedding - (z : rationalCyclotomicZHatField) : - algebraMap rationalCyclotomicZHatField U z = - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H z : U) := by - rfl - have hembedding_coe - (z : rationalCyclotomicZHatField) : - (((rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H z : U) : SeparableClosure ℚ)) = - (z : SeparableClosure ℚ) := by - rfl - have halgebraMap_coe - (z : rationalCyclotomicZHatField) : - ((algebraMap rationalCyclotomicZHatField U z : U) : - SeparableClosure ℚ) = - (z : SeparableClosure ℚ) := by - rw [halgebraMap_eq_embedding] - exact hembedding_coe z - have hambient := - LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup_mk_apply_val - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal σ - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H x) - calc - (((abstractFixedFieldCyclotomicRestriction H τ) x : - rationalCyclotomicZHatField) : - SeparableClosure ℚ) = - ((τ - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H x) : - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) : - SeparableClosure ℚ) := by - calc - (((abstractFixedFieldCyclotomicRestriction H τ) x : - rationalCyclotomicZHatField) : SeparableClosure ℚ) = - ((algebraMap rationalCyclotomicZHatField U - ((abstractFixedFieldCyclotomicRestriction H τ) x) : U) : - SeparableClosure ℚ) := - (halgebraMap_coe - ((abstractFixedFieldCyclotomicRestriction H τ) x)).symm - _ = ((τ (algebraMap rationalCyclotomicZHatField U x) : U) : - SeparableClosure ℚ) := - congrArg (fun y : U => (y : SeparableClosure ℚ)) hrestrict - _ = ((τ - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H x) : U) : SeparableClosure ℚ) := by - rw [halgebraMap_eq_embedding] - _ = σ.1 (x : SeparableClosure ℚ) := by - calc - ((τ - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H x) : U) : SeparableClosure ℚ) = - σ.1 - ((rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H x : U) : SeparableClosure ℚ) := by - simpa only [τ, U] using hambient.symm - _ = σ.1 (x : SeparableClosure ℚ) := by - rw [hembedding_coe] - _ = - (((AlgEquiv.restrictNormalHom - rationalCyclotomicZHatField σ.1) x : - rationalCyclotomicZHatField) : - SeparableClosure ℚ) := by - exact - (AlgEquiv.restrictNormal_commutes - σ.1 rationalCyclotomicZHatField x).symm - -/-- Raw cyclotomic restriction is residue-degree multiplication of -the normalized actual Galois coordinate. -/ -theorem - abstractFixedFieldCyclotomicRestriction_coordinate - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (τ : - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) : - Multiplicative.toAdd - (rationalCyclotomicZHatFieldGalEquivZHat - (abstractFixedFieldCyclotomicRestriction H τ)) = - (H.residueDegree rationalCyclotomicDegreeData : ℕ) • - Multiplicative.toAdd - (abstractFixedFieldCyclotomicGalEquivZHat H τ) := by - let hI := - rationalCyclotomicFieldInertia_le H.field - let hnormal : - (CyclicCohomology.extensionSubgroup H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI).Normal := by - rw [extensionSubgroup_rationalCyclotomicFieldInertia] - infer_instance - let qField := - LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) H.field - (rationalCyclotomicDegreeData.fieldInertia H.field) - hI hnormal - obtain ⟨q, rfl⟩ := qField.surjective τ - refine Quotient.inductionOn' q ?_ - intro σ - rw [ - abstractFixedFieldCyclotomicRestriction_extensionClass, - abstractFixedFieldCyclotomicGalEquivZHat_extensionClass] - exact - (rationalCyclotomicDegreeData.residueDegree_nsmul_normalizedDegree - (H.toFiniteResidueAbstractField - rationalCyclotomicDegreeData) σ).symm - -/-- The canonical compositum of an abstract fixed field with a finite -layer of the rational cyclotomic `ZHat`-extension. -/ -def abstractFixedFieldCyclotomicFiniteCompositum - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IntermediateField ℚ (SeparableClosure ℚ) := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field ⊔ - IntermediateField.lift E.toIntermediateField - -noncomputable instance - abstractFixedFieldCyclotomicFiniteCompositum_finiteDimensional - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - FiniteDimensional ℚ - (abstractFixedFieldCyclotomicFiniteCompositum H E) := by - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - let : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - let : FiniteDimensional ℚ - (IntermediateField.lift E.toIntermediateField) := - ((IntermediateField.liftAlgEquiv - E.toIntermediateField).toLinearEquiv).finiteDimensional - exact IntermediateField.finiteDimensional_sup - F (IntermediateField.lift E.toIntermediateField) - -noncomputable instance - abstractFixedFieldCyclotomicFiniteCompositum_numberField - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - NumberField - (abstractFixedFieldCyclotomicFiniteCompositum H E) := - NumberField.of_module_finite ℚ - (abstractFixedFieldCyclotomicFiniteCompositum H E) - -/-- The lower abstract fixed field embedded into its finite -cyclotomic compositum. -/ -noncomputable def - abstractFixedFieldCyclotomicFiniteCompositumBaseEmbedding - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field →ₐ[ℚ] - abstractFixedFieldCyclotomicFiniteCompositum H E := - IntermediateField.inclusion - (show - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field ≤ - abstractFixedFieldCyclotomicFiniteCompositum H E from - le_sup_left) - -/-- The fixed field attached to a finite abstract field is a number -field. Keeping this as the single file-local instance makes it -available while later theorem binders are elaborated. -/ -noncomputable local instance - abstractFixedFieldCyclotomic_numberField - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - NumberField - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) := by - let : FiniteDimensional ℚ - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - exact - NumberField.of_module_finite ℚ - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - -/-- A finite rational cyclotomic layer embedded into its compositum -with the abstract fixed field. -/ -noncomputable def - abstractFixedFieldCyclotomicFiniteCompositumLayerEmbedding - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - E →ₐ[ℚ] - abstractFixedFieldCyclotomicFiniteCompositum H E := - (IntermediateField.inclusion - (show - IntermediateField.lift E.toIntermediateField ≤ - abstractFixedFieldCyclotomicFiniteCompositum H E from - le_sup_right)).comp - (IntermediateField.liftAlgEquiv E.toIntermediateField).toAlgHom - -noncomputable instance - abstractFixedFieldCyclotomicFiniteCompositum_baseAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Algebra - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteCompositum H E) := - RingHom.toAlgebra - (AlgHom.toRingHom - (abstractFixedFieldCyclotomicFiniteCompositumBaseEmbedding H E)) - -noncomputable instance - abstractFixedFieldCyclotomicFiniteCompositum_layerAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Algebra E - (abstractFixedFieldCyclotomicFiniteCompositum H E) := - RingHom.toAlgebra - (AlgHom.toRingHom - (abstractFixedFieldCyclotomicFiniteCompositumLayerEmbedding H E)) - -/-- The finite-layer action induced by its explicit embedding into the -finite compositum. -/ -noncomputable instance - abstractFixedFieldCyclotomicFiniteCompositum_layerSMul - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - SMul E - (abstractFixedFieldCyclotomicFiniteCompositum H E) := - Algebra.toSMul - (self := - abstractFixedFieldCyclotomicFiniteCompositum_layerAlgebra H E) - -instance - abstractFixedFieldCyclotomicFiniteCompositum_baseScalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsScalarTower ℚ - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteCompositum H E) := - IsScalarTower.of_algebraMap_eq' - (AlgHom.comp_algebraMap - (abstractFixedFieldCyclotomicFiniteCompositumBaseEmbedding H E)).symm - -instance - abstractFixedFieldCyclotomicFiniteCompositum_layerScalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsScalarTower ℚ E - (abstractFixedFieldCyclotomicFiniteCompositum H E) := - IsScalarTower.of_algebraMap_eq' - (AlgHom.comp_algebraMap - (abstractFixedFieldCyclotomicFiniteCompositumLayerEmbedding H E)).symm - -/-- Inclusion of the finite cyclotomic compositum into the actual -maximal-unramified compositum. -/ -noncomputable def - abstractFixedFieldCyclotomicFiniteCompositumInclusion - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - let hI := - rationalCyclotomicFieldInertia_le H.field - abstractFixedFieldCyclotomicFiniteCompositum H E →ₐ[ℚ] - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI := by - let hI := - rationalCyclotomicFieldInertia_le H.field - let J := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicDegreeData.fieldInertia H.field) - have hle : - abstractFixedFieldCyclotomicFiniteCompositum H E ≤ J := by - dsimp only [J] - rw [ - rationalCyclotomicDegreeData_fixedField_fieldInertia H.field] - exact - sup_le_sup le_rfl - (IntermediateField.lift_le E.toIntermediateField) - exact IntermediateField.inclusion hle - -/-- The same finite-compositum inclusion over the lower abstract fixed -field. -/ -noncomputable def - abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - let hI := - rationalCyclotomicFieldInertia_le H.field - abstractFixedFieldCyclotomicFiniteCompositum H E →ₐ[ - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field] - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI := by - let f := - abstractFixedFieldCyclotomicFiniteCompositumInclusion H E - exact - { f.toRingHom with - commutes' := by - intro x - rfl } - -/-- The finite cyclotomic compositum as an intermediate field of the -actual maximal-unramified extension. -/ -noncomputable def abstractFixedFieldCyclotomicFiniteLayer - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - let hI := - rationalCyclotomicFieldInertia_le H.field - IntermediateField - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) := - (abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase H E).fieldRange - -/-- The base algebra on the finite field range, obtained from the -explicit base embedding followed by the field-range equivalence. -/ -noncomputable instance - abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Algebra - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) := - RingHom.toAlgebra - ((AlgHom.toRingHom - (AlgEquiv.toAlgHom - (AlgHom.equivFieldRange - (abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase - H E)))).comp - (AlgHom.toRingHom - (abstractFixedFieldCyclotomicFiniteCompositumBaseEmbedding H E))) - -/-- The scalar action belonging to the canonical base algebra on the -finite field range. -/ -noncomputable instance - abstractFixedFieldCyclotomicFiniteLayer_baseSMul - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - SMul - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) := - Algebra.toSMul - (self := abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra H E) - -/-- The module structure belonging to the canonical base algebra on -the finite field range. -/ -noncomputable instance - abstractFixedFieldCyclotomicFiniteLayer_baseModule - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Module - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) := - @Algebra.toModule - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) - _ _ - (abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra H E) - -/-- The field-range equivalence rebuilt over the explicit base -algebras. Its underlying ring equivalence is the canonical one. -/ -noncomputable def - abstractFixedFieldCyclotomicFiniteCompositumEquivFiniteLayer - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - abstractFixedFieldCyclotomicFiniteCompositum H E ≃ₐ[ - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field] - abstractFixedFieldCyclotomicFiniteLayer H E := - AlgEquiv.ofRingEquiv - (f := - (AlgHom.equivFieldRange - (abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase - H E)).toRingEquiv) - (fun _ => rfl) - -noncomputable instance - abstractFixedFieldCyclotomicFiniteLayer_finiteDimensional - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - FiniteDimensional - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) := - (abstractFixedFieldCyclotomicFiniteCompositumEquivFiniteLayer - H E).toLinearEquiv.finiteDimensional - -noncomputable instance - abstractFixedFieldCyclotomicFiniteLayer_numberField - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - NumberField - (abstractFixedFieldCyclotomicFiniteLayer H E) := - NumberField.of_module_finite - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) - -noncomputable instance - abstractFixedFieldCyclotomicFiniteLayer_isAbelianGalois - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsAbelianGalois - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) := by - let hI := - rationalCyclotomicFieldInertia_le H.field - let : IsAbelianGalois - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) := - abstractFixedFieldCyclotomic_isAbelianGalois H - exact - IsAbelianGalois.of_algHom - ((abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase - H E).comp - (AlgEquiv.toAlgHom - (AlgEquiv.symm - (abstractFixedFieldCyclotomicFiniteCompositumEquivFiniteLayer - H E)))) - -instance - abstractFixedFieldCyclotomicFiniteLayer_baseScalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsScalarTower ℚ - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) := by - let hI := - rationalCyclotomicFieldInertia_le H.field - apply IsScalarTower.of_algebraMap_eq - intro x - apply Subtype.ext - change - algebraMap ℚ - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) x = - algebraMap - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) - (algebraMap ℚ - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) x) - exact - IsScalarTower.algebraMap_apply - ℚ - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) x - -/-- The finite rational layer embedded into its corresponding -intermediate field over the abstract fixed field. -/ -noncomputable def - abstractFixedFieldCyclotomicFiniteLayerEmbedding - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - E →ₐ[ℚ] - abstractFixedFieldCyclotomicFiniteLayer H E := by - exact - (AlgEquiv.toAlgHom - (AlgEquiv.restrictScalars ℚ - (abstractFixedFieldCyclotomicFiniteCompositumEquivFiniteLayer - H E))).comp - (abstractFixedFieldCyclotomicFiniteCompositumLayerEmbedding H E) - -noncomputable instance - abstractFixedFieldCyclotomicFiniteLayer_layerAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Algebra E - (abstractFixedFieldCyclotomicFiniteLayer H E) := - RingHom.toAlgebra - (AlgHom.toRingHom - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E)) - -/-- The finite-layer action on its actual image in the relative fixed -field. -/ -noncomputable instance - abstractFixedFieldCyclotomicFiniteLayer_layerSMul - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - SMul E - (abstractFixedFieldCyclotomicFiniteLayer H E) := - Algebra.toSMul - (self := abstractFixedFieldCyclotomicFiniteLayer_layerAlgebra H E) - -instance - abstractFixedFieldCyclotomicFiniteLayer_layerScalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsScalarTower ℚ E - (abstractFixedFieldCyclotomicFiniteLayer H E) := - IsScalarTower.of_algebraMap_eq' - (AlgHom.comp_algebraMap - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E)).symm - -/-- The finite cyclotomic layer as an object of the finite-Galois -inverse system of the actual maximal-unramified extension. -/ -@[reducible] -noncomputable def - abstractFixedFieldCyclotomicFiniteGaloisLayer - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - FiniteGaloisIntermediateField - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field)) where - toIntermediateField := - abstractFixedFieldCyclotomicFiniteLayer H E - finiteDimensional := - abstractFixedFieldCyclotomicFiniteLayer_finiteDimensional H E - isGalois := - (abstractFixedFieldCyclotomicFiniteLayer_isAbelianGalois H E).toIsGalois - -/-- The explicit base algebra on a finite cyclotomic layer is the canonical -intermediate-field inclusion used by the finite Galois inverse system. -/ -theorem abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra_eq_algebra' - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra H E = - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E).algebra' := by - apply Algebra.algebra_ext - intro x - apply Subtype.ext - rfl - -/-- The finite Galois layer uses its canonical inclusion into the full -relative fixed field for the upper scalar action. -/ -instance - abstractFixedFieldCyclotomicFiniteGaloisLayer_scalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsScalarTower - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E).toIntermediateField - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field)) := by - let i : - (abstractFixedFieldCyclotomicFiniteGaloisLayer - H E).toIntermediateField →ₐ[ - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field] - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) := - { (abstractFixedFieldCyclotomicFiniteGaloisLayer - H E).toIntermediateField.val.toRingHom with - commutes' := by - intro x - rfl } - exact - IsScalarTower.of_algebraMap_eq' - (AlgHom.comp_algebraMap i).symm - -/-- The canonical inclusion of the finite cyclotomic layer into the -full abstract-fixed-field compositum. -/ -private noncomputable def - abstractFixedFieldCyclotomicFiniteLayerInclusion - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - abstractFixedFieldCyclotomicFiniteLayer H E →ₐ[ - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field] - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) := - IntermediateField.val - (abstractFixedFieldCyclotomicFiniteLayer H E) - -/-- The two embeddings of a finite rational cyclotomic layer into the -full abstract-fixed-field compositum agree. -/ -private theorem - abstractFixedFieldCyclotomicFiniteLayerEmbedding_inclusion - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) - (z : E) : - abstractFixedFieldCyclotomicFiniteLayerInclusion H E - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E z) = - rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H - (z : rationalCyclotomicZHatField) := by - exact Subtype.ext rfl - -/-- Restriction to `E` commutes pointwise with the restriction from the -full rational cyclotomic tower. -/ -private theorem - restrictNormalHom_abstractFixedFieldCyclotomicRestriction_apply - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) - [Normal ℚ E] - (σ : - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) - (z : E) : - ((AlgEquiv.restrictNormalHom E - (abstractFixedFieldCyclotomicRestriction H σ)) z : - rationalCyclotomicZHatField) = - (abstractFixedFieldCyclotomicRestriction H σ) - (z : rationalCyclotomicZHatField) := by - exact - AlgEquiv.restrictNormal_commutes - (abstractFixedFieldCyclotomicRestriction H σ) E z - -/-- The raw cyclotomic restriction commutes with the canonical embedding -of the full rational cyclotomic tower. -/ -private theorem - abstractFixedFieldCyclotomicRestriction_embedding_apply - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (σ : - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) - (z : rationalCyclotomicZHatField) : - rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H - (abstractFixedFieldCyclotomicRestriction H σ z) = - σ - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H z) := by - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) - exact - AlgEquiv.restrictNormal_commutes - (MulSemiringAction.toAlgEquiv ℚ U σ) - rationalCyclotomicZHatField z - -/-- Restriction to the finite compositum layer commutes with its -canonical inclusion into the full compositum. -/ -private theorem - restrictNormalHom_abstractFixedFieldCyclotomicFiniteLayer_apply - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) - [Normal - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E)] - (σ : - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) - (z : abstractFixedFieldCyclotomicFiniteLayer H E) : - abstractFixedFieldCyclotomicFiniteLayerInclusion H E - (AlgEquiv.restrictNormalHom - (abstractFixedFieldCyclotomicFiniteLayer H E) σ z) = - σ (abstractFixedFieldCyclotomicFiniteLayerInclusion H E z) := by - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) - let P : IntermediateField F U := - abstractFixedFieldCyclotomicFiniteLayer H E - exact - AlgEquiv.restrictNormal_commutes - (MulSemiringAction.toAlgEquiv F U σ) P z - -/-- Restricting the finite-compositum action further to `E` commutes -with the explicit embedding of `E` into that finite layer. -/ -private theorem - abstractFixedFieldCyclotomicFiniteLayerEmbedding_restrict_apply - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) - [Normal ℚ E] - [Normal - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E)] - (σ : - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) - (z : E) : - abstractFixedFieldCyclotomicFiniteLayerEmbedding H E - (IntermediateField.restrictRestrictAlgEquivMapHom - ℚ E - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) - (AlgEquiv.restrictNormalHom - (abstractFixedFieldCyclotomicFiniteLayer H E) σ) z) = - (AlgEquiv.restrictNormalHom - (abstractFixedFieldCyclotomicFiniteLayer H E) σ) - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E z) := by - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) - let P : IntermediateField F U := - abstractFixedFieldCyclotomicFiniteLayer H E - exact - AlgEquiv.restrictNormal_commutes - (MulSemiringAction.toAlgEquiv ℚ P - (AlgEquiv.restrictNormalHom P σ)) E z - -/-- The left finite-level restriction, after both canonical embeddings into -the full compositum, is the action of `σ` on the cyclotomic embedding. -/ -private theorem - restrictNormalHom_abstractFixedFieldCyclotomicRestriction_left_embedded - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) - [Normal ℚ E] - (σ : - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) - (x : E) : - abstractFixedFieldCyclotomicFiniteLayerInclusion H E - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E - (AlgEquiv.restrictNormalHom E - (abstractFixedFieldCyclotomicRestriction H σ) x)) = - σ - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H - (x : rationalCyclotomicZHatField)) := by - calc - abstractFixedFieldCyclotomicFiniteLayerInclusion H E - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E - (AlgEquiv.restrictNormalHom E - (abstractFixedFieldCyclotomicRestriction H σ) x)) = - rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H - (((AlgEquiv.restrictNormalHom E - (abstractFixedFieldCyclotomicRestriction H σ) x) : - rationalCyclotomicZHatField)) := - abstractFixedFieldCyclotomicFiniteLayerEmbedding_inclusion H E _ - _ = rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H - (abstractFixedFieldCyclotomicRestriction H σ - (x : rationalCyclotomicZHatField)) := - congrArg - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H) - (restrictNormalHom_abstractFixedFieldCyclotomicRestriction_apply - H E σ x) - _ = σ - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H (x : rationalCyclotomicZHatField)) := - abstractFixedFieldCyclotomicRestriction_embedding_apply - H σ (x : rationalCyclotomicZHatField) - -/-- The right finite-level restriction, after both canonical embeddings into -the full compositum, is the same action of `σ`. -/ -private theorem - restrictNormalHom_abstractFixedFieldCyclotomicRestriction_right_embedded - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) - [Normal ℚ E] - [Normal - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E)] - (σ : - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) - (x : E) : - abstractFixedFieldCyclotomicFiniteLayerInclusion H E - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E - (IntermediateField.restrictRestrictAlgEquivMapHom - ℚ E - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) - (AlgEquiv.restrictNormalHom - (abstractFixedFieldCyclotomicFiniteLayer H E) σ) x)) = - σ - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H - (x : rationalCyclotomicZHatField)) := by - calc - abstractFixedFieldCyclotomicFiniteLayerInclusion H E - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E - (IntermediateField.restrictRestrictAlgEquivMapHom - ℚ E - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) - (AlgEquiv.restrictNormalHom - (abstractFixedFieldCyclotomicFiniteLayer H E) σ) x)) = - abstractFixedFieldCyclotomicFiniteLayerInclusion H E - ((AlgEquiv.restrictNormalHom - (abstractFixedFieldCyclotomicFiniteLayer H E) σ) - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E x)) := - congrArg - (abstractFixedFieldCyclotomicFiniteLayerInclusion H E) - (abstractFixedFieldCyclotomicFiniteLayerEmbedding_restrict_apply - H E σ x) - _ = σ - (abstractFixedFieldCyclotomicFiniteLayerInclusion H E - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E x)) := - restrictNormalHom_abstractFixedFieldCyclotomicFiniteLayer_apply - H E σ (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E x) - _ = σ - (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum - H (x : rationalCyclotomicZHatField)) := - congrArg σ - (abstractFixedFieldCyclotomicFiniteLayerEmbedding_inclusion H E x) - -/-- Pointwise form of finite-layer restriction compatibility. -/ -private theorem - restrictNormalHom_abstractFixedFieldCyclotomicRestriction_pointwise - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) - [Normal ℚ E] - [Normal - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E)] - (σ : - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) - (x : E) : - AlgEquiv.restrictNormalHom E - (abstractFixedFieldCyclotomicRestriction H σ) x = - IntermediateField.restrictRestrictAlgEquivMapHom - ℚ E - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) - (AlgEquiv.restrictNormalHom - (abstractFixedFieldCyclotomicFiniteLayer H E) σ) x := by - apply - (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E).injective - apply - (abstractFixedFieldCyclotomicFiniteLayerInclusion H E).injective - exact - (restrictNormalHom_abstractFixedFieldCyclotomicRestriction_left_embedded - H E σ x).trans - (restrictNormalHom_abstractFixedFieldCyclotomicRestriction_right_embedded - H E σ x).symm - -/-- Restricting through a finite layer commutes with restriction from -the full abstract-fixed-field compositum. -/ -theorem - restrictNormalHom_abstractFixedFieldCyclotomicRestriction - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) - (σ : - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) : - letI : Normal ℚ E := E.isGalois.to_normal - AlgEquiv.restrictNormalHom E - (abstractFixedFieldCyclotomicRestriction H σ) = - IntermediateField.restrictRestrictAlgEquivMapHom - ℚ E - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (abstractFixedFieldCyclotomicFiniteLayer H E) - (AlgEquiv.restrictNormalHom - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) - σ) := by - let : Normal ℚ E := E.isGalois.to_normal - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) - let T := rationalCyclotomicZHatField - let P : IntermediateField F U := - abstractFixedFieldCyclotomicFiniteLayer H E - let : Algebra T U := - abstractFixedFieldCyclotomicCompositum_algebra H - let : IsScalarTower ℚ T U := - abstractFixedFieldCyclotomicCompositum_scalarTower H - let : Algebra E P := - abstractFixedFieldCyclotomicFiniteLayer_layerAlgebra H E - let : IsScalarTower ℚ E P := - abstractFixedFieldCyclotomicFiniteLayer_layerScalarTower H E - let : IsAbelianGalois F P := by - change IsAbelianGalois F - (abstractFixedFieldCyclotomicFiniteLayer H E) - exact - abstractFixedFieldCyclotomicFiniteLayer_isAbelianGalois H E - let : Normal F P := IsGalois.to_normal - apply AlgEquiv.ext - intro x - exact - restrictNormalHom_abstractFixedFieldCyclotomicRestriction_pointwise - H E σ x - -section FiniteCoordinateHelpers - -/-- Opaque three-step equality composition used to keep large dependent -finite-level coordinates out of endpoint proof normalization. -/ -private theorem cyclotomicAbstractFixedFieldArtin_eqTransThree - {α : Type} {a b c d : α} - (hab : a = b) (hbc : b = c) (hcd : c = d) : - a = d := - hab.trans (hbc.trans hcd) - -private abbrev cyclotomicAbstractFixedFieldArtinCoordinateBase - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - -private abbrev cyclotomicAbstractFixedFieldArtinCoordinateRelative - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (rationalCyclotomicFieldInertia_le H.field) - -private abbrev cyclotomicAbstractFixedFieldArtinCoordinateLayer - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IntermediateField - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := - abstractFixedFieldCyclotomicFiniteLayer H E - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateBaseAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - Algebra ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) := - (cyclotomicAbstractFixedFieldArtinCoordinateBase H).algebra' - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateBaseFiniteDimensional - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - FiniteDimensional ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateBaseNumberField - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - NumberField - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) := - NumberField.of_module_finite ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateBaseSeparableAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - Algebra - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (SeparableClosure ℚ) := - IntermediateField.toAlgebra - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateRelativeAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - Algebra - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H).algebra' - -local instance - cyclotomicAbstractFixedFieldArtinCoordinateRelativeScalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - IsScalarTower ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := - abstractFixedFieldCyclotomicCompositum_baseScalarTower H - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateRelativeIsAbelianGalois - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : - IsAbelianGalois - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := - abstractFixedFieldCyclotomic_isAbelianGalois H - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateAlgebra - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Algebra ℚ E := - E.toIntermediateField.algebra' - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateNumberField - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - NumberField E := - NumberField.of_module_finite ℚ E - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateIsAbelianGalois - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsAbelianGalois ℚ E := - IsAbelianGalois.of_algHom E.toIntermediateField.val - -local instance - cyclotomicAbstractFixedFieldArtinCoordinateNormal - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Normal ℚ E := - E.isGalois.to_normal - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Algebra - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E).algebra' - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Algebra ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := - DivisionRing.toRatAlgebra - -local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseScalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsScalarTower ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := by - let hI := rationalCyclotomicFieldInertia_le H.field - apply IsScalarTower.of_algebraMap_eq - intro x - apply Subtype.ext - change - algebraMap ℚ - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) x = - algebraMap - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) - (algebraMap ℚ - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) x) - exact - IsScalarTower.algebraMap_apply - ℚ - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI) x - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerNumberField - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - NumberField - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) := - abstractFixedFieldCyclotomicFiniteLayer_numberField H E - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Algebra E - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := - abstractFixedFieldCyclotomicFiniteLayer_layerAlgebra H E - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerSMul - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - SMul E - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := - abstractFixedFieldCyclotomicFiniteLayer_layerSMul H E - -local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerScalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsScalarTower ℚ E - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := - abstractFixedFieldCyclotomicFiniteLayer_layerScalarTower H E - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerRelativeAlgebra - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Algebra - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := - IntermediateField.toAlgebra - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) - -local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerRelativeScalarTower - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsScalarTower - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := - abstractFixedFieldCyclotomicFiniteGaloisLayer_scalarTower H E - -noncomputable local instance - cyclotomicAbstractFixedFieldArtinCoordinateLayerIsAbelianGalois - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - IsAbelianGalois - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := - abstractFixedFieldCyclotomicFiniteLayer_isAbelianGalois H E - -/-- The full abstract Artin symbol whose finite coordinates are compared -below. Naming this endpoint keeps its relative fixed-field data opaque. -/ -private noncomputable def - cyclotomicAbstractFixedFieldArtinAbstractEndpoint - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) : - Gal(rationalCyclotomicZHatField / ℚ) := - abstractFixedFieldCyclotomicRestriction H - (infiniteGlobalArtinMonoidHom - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) a) - -/-- The rational norm Artin symbol serving as the other full endpoint. -/ -private noncomputable def - cyclotomicAbstractFixedFieldArtinRationalEndpoint - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) : - Gal(rationalCyclotomicZHatField / ℚ) := - rationalCyclotomicZHatGlobalArtin - (IdeleGroup.norm ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) a) - -/-- The finite restriction map packaged together with its pointwise Artin -naturality law. The map is inferred from the generic hom-level theorem, so -no concrete instance tower is compared after the opaque boundary. -/ -private noncomputable def cyclotomicAbstractFixedFieldArtinCoordinateMapData - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - {f : Gal(abstractFixedFieldCyclotomicFiniteGaloisLayer H E / - cyclotomicAbstractFixedFieldArtinCoordinateBase H) →* - Gal(E / ℚ) // - f.comp - (@globalArtinMonoidHomOfNumberField - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) - (inferInstance : Field - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (cyclotomicAbstractFixedFieldArtinCoordinateBaseNumberField H) - (inferInstance : Field - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E)) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerIsAbelianGalois H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerNumberField H E)) = - (globalArtinMonoidHom (K := ℚ) (L := E)).comp - (IdeleGroup.norm ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateBase H))} := by - have hnat := - @globalArtinMonoidHomOfNumberField_norm_restriction - ℚ E - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) - inferInstance inferInstance - inferInstance - (cyclotomicAbstractFixedFieldArtinCoordinateNumberField E) - (cyclotomicAbstractFixedFieldArtinCoordinateAlgebra E) - (cyclotomicAbstractFixedFieldArtinCoordinateIsAbelianGalois E) - inferInstance - (cyclotomicAbstractFixedFieldArtinCoordinateBaseNumberField H) - inferInstance - (cyclotomicAbstractFixedFieldArtinCoordinateBaseAlgebra H) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseScalarTower H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerScalarTower H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerIsAbelianGalois H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerNumberField H E) - exact - ⟨(@AlgEquiv.restrictNormalHom - ℚ inferInstance - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) - inferInstance - (cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra H E) - E inferInstance - (cyclotomicAbstractFixedFieldArtinCoordinateAlgebra E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerScalarTower H E) - (cyclotomicAbstractFixedFieldArtinCoordinateNormal E)).comp - (@AlgEquiv.restrictScalarsHom - ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) - inferInstance inferInstance inferInstance - (cyclotomicAbstractFixedFieldArtinCoordinateBaseAlgebra H) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseScalarTower H E)), - hnat⟩ - -/-- The fixed restriction map from the relative finite layer to one rational -cyclotomic coordinate. -/ -private noncomputable def cyclotomicAbstractFixedFieldArtinCoordinateMap - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Gal(abstractFixedFieldCyclotomicFiniteGaloisLayer H E / - cyclotomicAbstractFixedFieldArtinCoordinateBase H) →* - Gal(E / ℚ) := - (cyclotomicAbstractFixedFieldArtinCoordinateMapData H E).1 - -/-- Naturality of the named coordinate map, kept at the hom level so later -pointwise rewrites match the opaque map without unfolding its data package. -/ -private theorem cyclotomicAbstractFixedFieldArtinCoordinateMap_naturality - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - (cyclotomicAbstractFixedFieldArtinCoordinateMap H E).comp - (globalArtinMonoidHom - (K := cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (L := abstractFixedFieldCyclotomicFiniteGaloisLayer H E)) = - (globalArtinMonoidHom (K := ℚ) (L := E)).comp - (IdeleGroup.norm ℚ - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) := - (cyclotomicAbstractFixedFieldArtinCoordinateMapData H E).2 - -/-- Pointwise identification of the named coordinate map with the concrete -two-stage restriction used by the abstract fixed-field comparison. -/ -private theorem cyclotomicAbstractFixedFieldArtinCoordinateMap_apply - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) - (σ : Gal(abstractFixedFieldCyclotomicFiniteGaloisLayer H E / - cyclotomicAbstractFixedFieldArtinCoordinateBase H)) : - cyclotomicAbstractFixedFieldArtinCoordinateMap H E σ = - @IntermediateField.restrictRestrictAlgEquivMapHom - ℚ E - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) - inferInstance inferInstance inferInstance inferInstance - (cyclotomicAbstractFixedFieldArtinCoordinateAlgebra E) - (cyclotomicAbstractFixedFieldArtinCoordinateBaseAlgebra H) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerScalarTower H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseScalarTower H E) - (cyclotomicAbstractFixedFieldArtinCoordinateNormal E) σ := - rfl - -/-- The relative projection, common rational finite value, and rational -infinite projection, with both comparison steps packaged by the generic -provider before this concrete tower becomes opaque. -/ -private noncomputable def - cyclotomicAbstractFixedFieldArtinCoordinateBridgeData - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) := - @compRestrictNormalHomInfiniteGlobalArtinRationalCyclotomicDataOfNumberField - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) - (inferInstance : Field - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (cyclotomicAbstractFixedFieldArtinCoordinateBaseNumberField H) - (inferInstance : Field - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H)) - (cyclotomicAbstractFixedFieldArtinCoordinateRelativeAlgebra H) - (cyclotomicAbstractFixedFieldArtinCoordinateRelativeIsAbelianGalois H) - a - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerNumberField H E) - E - (cyclotomicAbstractFixedFieldArtinCoordinateNumberField E) - (cyclotomicAbstractFixedFieldArtinCoordinateIsAbelianGalois E) - (cyclotomicAbstractFixedFieldArtinCoordinateMap H E) - (cyclotomicAbstractFixedFieldArtinCoordinateMap_naturality H E) - -/-- The abstract endpoint after projection to one finite coordinate. -/ -private noncomputable def - cyclotomicAbstractFixedFieldArtinAbstractCoordinate - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Gal(E / ℚ) := - AlgEquiv.restrictNormalHom E - (cyclotomicAbstractFixedFieldArtinAbstractEndpoint H a) - -/-- The relative infinite Artin symbol, restricted to a finite layer and -then mapped to the corresponding rational coordinate. -/ -private noncomputable def - cyclotomicAbstractFixedFieldArtinRestrictedLayerCoordinate - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Gal(E / ℚ) := - (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).1.1 - -/-- The finite relative Artin symbol mapped to one rational coordinate. -/ -private noncomputable def - cyclotomicAbstractFixedFieldArtinFiniteCoordinate - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Gal(E / ℚ) := - (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).1.2.1 - -/-- The finite rational Artin coordinate of the idele norm. -/ -private noncomputable def - cyclotomicAbstractFixedFieldArtinRationalCoordinate - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Gal(E / ℚ) := - (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).1.2.1 - -/-- Naturality of the finite global Artin map at the concrete cyclotomic -coordinate. -/ -private theorem - cyclotomicAbstractFixedFieldArtinCoordinateNaturality - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - cyclotomicAbstractFixedFieldArtinFiniteCoordinate H a E = - cyclotomicAbstractFixedFieldArtinRationalCoordinate H a E := by - rfl - -/-- The rational endpoint after projection to one finite coordinate. -/ -private noncomputable def - cyclotomicAbstractFixedFieldArtinRationalEndpointCoordinate - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - Gal(E / ℚ) := - (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).1.2.2 - -/-- The abstract restriction map projected to the concrete finite layer. -/ -private theorem - cyclotomicAbstractFixedFieldArtinCoordinateRestriction - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - cyclotomicAbstractFixedFieldArtinAbstractCoordinate H a E = - cyclotomicAbstractFixedFieldArtinRestrictedLayerCoordinate H a E := by - calc - cyclotomicAbstractFixedFieldArtinAbstractCoordinate H a E = - AlgEquiv.restrictNormalHom E - (cyclotomicAbstractFixedFieldArtinAbstractEndpoint H a) := rfl - _ = cyclotomicAbstractFixedFieldArtinCoordinateMap H E - (AlgEquiv.restrictNormalHom - (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) - (infiniteGlobalArtinMonoidHom - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) a)) := - (restrictNormalHom_abstractFixedFieldCyclotomicRestriction - H E - (infiniteGlobalArtinMonoidHom - (cyclotomicAbstractFixedFieldArtinCoordinateBase H) - (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) a)).trans - (cyclotomicAbstractFixedFieldArtinCoordinateMap_apply H E _).symm - _ = cyclotomicAbstractFixedFieldArtinRestrictedLayerCoordinate H a E := rfl - -/-- Restricting the infinite relative Artin symbol supplies exactly the -finite Artin coordinate. -/ -private theorem - cyclotomicAbstractFixedFieldArtinCoordinateLayerProjection - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - cyclotomicAbstractFixedFieldArtinRestrictedLayerCoordinate H a E = - cyclotomicAbstractFixedFieldArtinFiniteCoordinate H a E := - (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).2.1 - -/-- The rational cyclotomic Artin map projected to the same finite -coordinate. -/ -private theorem - cyclotomicAbstractFixedFieldArtinCoordinateRationalProjection - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - cyclotomicAbstractFixedFieldArtinRationalEndpointCoordinate H a E = - cyclotomicAbstractFixedFieldArtinFiniteCoordinate H a E := by - exact - (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).2.2.symm - -/-- Equality of the two full endpoints at one opaque finite coordinate. -/ -private theorem - cyclotomicAbstractFixedFieldArtinFiniteCoordinateComparison - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) - (E : - FiniteGaloisIntermediateField - ℚ rationalCyclotomicZHatField) : - AlgEquiv.restrictNormalHom E - (cyclotomicAbstractFixedFieldArtinAbstractEndpoint H a) = - AlgEquiv.restrictNormalHom E - (cyclotomicAbstractFixedFieldArtinRationalEndpoint H a) := by - change - cyclotomicAbstractFixedFieldArtinAbstractCoordinate H a E = - cyclotomicAbstractFixedFieldArtinRationalEndpointCoordinate H a E - exact - cyclotomicAbstractFixedFieldArtin_eqTransThree - (cyclotomicAbstractFixedFieldArtinCoordinateRestriction H a E) - (cyclotomicAbstractFixedFieldArtinCoordinateLayerProjection H a E) - (cyclotomicAbstractFixedFieldArtinCoordinateRationalProjection - H a E).symm - -/-- The finite-coordinate comparison assembled in the rational cyclotomic -inverse limit. -/ -private theorem - abstractFixedFieldCyclotomicRestriction_infiniteGlobalArtin_inverseLimit - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : - IdeleGroup - (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) : - cyclotomicAbstractFixedFieldArtinAbstractEndpoint H a = - cyclotomicAbstractFixedFieldArtinRationalEndpoint H a := by - apply - (InfiniteGalois.continuousMulEquivToLimit - ℚ rationalCyclotomicZHatField).injective - apply Subtype.ext - funext Eop - exact - cyclotomicAbstractFixedFieldArtinFiniteCoordinateComparison - H a Eop.unop - -end FiniteCoordinateHelpers - -/-- The actual infinite global Artin map on an abstract fixed field -restricts to the rational cyclotomic Artin map of the ordinary idele -norm. -/ -@[simp] -theorem - abstractFixedFieldCyclotomicRestriction_infiniteGlobalArtinMonoidHom - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : - IdeleGroup - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) : - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - letI : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - letI : NumberField F := - NumberField.of_module_finite ℚ F - let hI := - rationalCyclotomicFieldInertia_le H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI - letI : IsAbelianGalois F U := - abstractFixedFieldCyclotomic_isAbelianGalois H - abstractFixedFieldCyclotomicRestriction H - (infiniteGlobalArtinMonoidHom F U a) = - rationalCyclotomicZHatGlobalArtin - (IdeleGroup.norm ℚ F a) := by - exact - abstractFixedFieldCyclotomicRestriction_infiniteGlobalArtin_inverseLimit - H a - -/-- In the normalized actual Galois coordinate, the infinite global -Artin symbol is exactly the normalized cyclotomic idele value. -/ -theorem - abstractFixedFieldCyclotomicGalEquivZHat_infiniteGlobalArtinMonoidHom - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : - IdeleGroup - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) : - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - letI : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - letI : NumberField F := - NumberField.of_module_finite ℚ F - let hI := - rationalCyclotomicFieldInertia_le H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI - letI : IsAbelianGalois F U := - abstractFixedFieldCyclotomic_isAbelianGalois H - Multiplicative.toAdd - (abstractFixedFieldCyclotomicGalEquivZHat H - (infiniteGlobalArtinMonoidHom F U a)) = - normalizedCyclotomicZHatIdeleValue F - (Additive.ofMul a) := by - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - let : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - let : NumberField F := - NumberField.of_module_finite ℚ F - let hI := - rationalCyclotomicFieldInertia_le H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI - let : IsAbelianGalois F U := - abstractFixedFieldCyclotomic_isAbelianGalois H - apply - zHatMulNat_injective - (H.residueDegree rationalCyclotomicDegreeData).pos - calc - (H.residueDegree rationalCyclotomicDegreeData : ℕ) • - Multiplicative.toAdd - (abstractFixedFieldCyclotomicGalEquivZHat H - (infiniteGlobalArtinMonoidHom F U a)) = - Multiplicative.toAdd - (rationalCyclotomicZHatFieldGalEquivZHat - (abstractFixedFieldCyclotomicRestriction H - (infiniteGlobalArtinMonoidHom F U a))) := by - exact - (abstractFixedFieldCyclotomicRestriction_coordinate H - (infiniteGlobalArtinMonoidHom F U a)).symm - _ = - Multiplicative.toAdd - (rationalCyclotomicZHatFieldGalEquivZHat - (rationalCyclotomicZHatGlobalArtin - (IdeleGroup.norm ℚ F a))) := by - rw [ - abstractFixedFieldCyclotomicRestriction_infiniteGlobalArtinMonoidHom] - _ = - cyclotomicZHatNormComposite F - (Additive.ofMul a) := by - rfl - _ = - cyclotomicZHatIntersectionDegree F • - normalizedCyclotomicZHatIdeleValue F - (Additive.ofMul a) := by - exact - (cyclotomicZHatIntersectionDegree_nsmul_normalizedIdeleValue - F (Additive.ofMul a)).symm - _ = - (H.residueDegree rationalCyclotomicDegreeData : ℕ) • - normalizedCyclotomicZHatIdeleValue F - (Additive.ofMul a) := by - rw [ - cyclotomicZHatIntersectionDegree_abstractFixedField_eq_residueDegree - H] - -/-- Representative form of the actual cyclotomic Artin-coordinate -identity after descent of the normalized value to the idele class -group. -/ -theorem - abstractFixedFieldCyclotomicGalEquivZHat_infiniteGlobalArtinMonoidHom_mk - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (a : - IdeleGroup - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)) : - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - letI : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - letI : NumberField F := - NumberField.of_module_finite ℚ F - let hI := - rationalCyclotomicFieldInertia_le H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI - letI : IsAbelianGalois F U := - abstractFixedFieldCyclotomic_isAbelianGalois H - Multiplicative.toAdd - (abstractFixedFieldCyclotomicGalEquivZHat H - (infiniteGlobalArtinMonoidHom F U a)) = - normalizedCyclotomicZHatIdeleClassValueContinuous F - (Additive.ofMul - (QuotientGroup.mk' - (IdeleGroup.principalSubgroup F) a)) := by - have hSeparableClosureAlgebra : - cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra = - rationalSeparableClosureAlgebra := - Subsingleton.elim _ _ - cases hSeparableClosureAlgebra - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - let hI := - rationalCyclotomicFieldInertia_le H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI - let : IsAbelianGalois F U := - abstractFixedFieldCyclotomic_isAbelianGalois H - calc - Multiplicative.toAdd - (abstractFixedFieldCyclotomicGalEquivZHat H - (infiniteGlobalArtinMonoidHom F U a)) = - normalizedCyclotomicZHatIdeleValue F - (Additive.ofMul a) := - abstractFixedFieldCyclotomicGalEquivZHat_infiniteGlobalArtinMonoidHom - H a - _ = - normalizedCyclotomicZHatIdeleClassValueContinuous F - (Additive.ofMul - (QuotientGroup.mk' - (IdeleGroup.principalSubgroup F) a)) := - (normalizedCyclotomicZHatIdeleClassValueContinuous_mk - (K := F) a).symm - -/-- The genuine infinite global Artin symbol of the cyclotomic -maximal-unramified extension kills every principal idele of the -abstract fixed field. -/ -@[simp] -theorem - infiniteGlobalArtinMonoidHom_abstractFixedFieldCyclotomic_principalIdele - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (x : - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field)ˣ) : - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - letI : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - letI : NumberField F := - NumberField.of_module_finite ℚ F - let hI := - rationalCyclotomicFieldInertia_le H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI - letI : IsAbelianGalois F U := - abstractFixedFieldCyclotomic_isAbelianGalois H - infiniteGlobalArtinMonoidHom F U - (IdeleGroup.principalIdele F x) = - 1 := by - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H.field - let : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - let : NumberField F := - NumberField.of_module_finite ℚ F - let hI := - rationalCyclotomicFieldInertia_le H.field - let U := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hI - let : IsAbelianGalois F U := - abstractFixedFieldCyclotomic_isAbelianGalois H - have hcoord : - Multiplicative.toAdd - (abstractFixedFieldCyclotomicGalEquivZHat H - (infiniteGlobalArtinMonoidHom F U - (IdeleGroup.principalIdele F x))) = 0 := - (abstractFixedFieldCyclotomicGalEquivZHat_infiniteGlobalArtinMonoidHom - H (IdeleGroup.principalIdele F x)).trans - (normalizedCyclotomicZHatIdeleValue_principalIdele_eq_zero F x) - apply (abstractFixedFieldCyclotomicGalEquivZHat H).injective - rw [map_one] - apply Multiplicative.ext - exact hcoord.trans toAdd_one.symm +attribute [local instance] + cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldNormal + abstractFixedFieldCyclotomic_numberField /-- The genuine cyclotomic maximal-unramified Artin map descended to the idele class group of an abstract fixed field. -/ diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinBase.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinBase.lean new file mode 100644 index 0000000..dc971fc --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinBase.lean @@ -0,0 +1,545 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicIdeleClassValuation +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.InfiniteGlobalArtin +import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.MaximalUnramifiedReciprocity + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open KummerTheory + + +noncomputable local instance + cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra : + Algebra ℚ (SeparableClosure ℚ) := + DivisionRing.toRatAlgebra + +noncomputable local instance + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldAlgebra : + Algebra ℚ rationalCyclotomicZHatField := + DivisionRing.toRatAlgebra + +/-- Cyclotomic field inertia is contained in the original abstract +field subgroup. -/ +theorem rationalCyclotomicFieldInertia_le + (H : ClosedSubgroup + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + (rationalCyclotomicDegreeData.fieldInertia H).toSubgroup ≤ + H.toSubgroup := by + intro σ hσ + exact hσ.1 + + +theorem extensionSubgroup_rationalCyclotomicFieldInertia + (H : ClosedSubgroup + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + CyclicCohomology.extensionSubgroup H + (rationalCyclotomicDegreeData.fieldInertia H) + (rationalCyclotomicFieldInertia_le H) = + rationalCyclotomicDegreeData.fieldInertiaWithin H := by + ext σ + rw [ + mem_extensionSubgroup_iff, + rationalCyclotomicDegreeData.mem_fieldInertiaWithin_iff, + rationalCyclotomicDegreeData.mem_fieldInertia_iff] + exact and_iff_right σ.2 + +/-- The actual Galois group of the cyclotomic maximal-unramified +extension of an abstract fixed field, in its normalized `ZHat` +coordinate. -/ +noncomputable def abstractFixedFieldCyclotomicGalEquivZHat + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + let hI := + rationalCyclotomicFieldInertia_le H.field + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) ≃* + Multiplicative ZHat := by + let hI := + rationalCyclotomicFieldInertia_le H.field + let hnormal : + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI).Normal := by + rw [extensionSubgroup_rationalCyclotomicFieldInertia] + infer_instance + let qField : + H.field.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI ≃* + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) := + LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal + let qInertia : + H.field.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI ≃* + H.field.toSubgroup ⧸ + rationalCyclotomicDegreeData.fieldInertiaWithin H.field := + QuotientGroup.quotientMulEquivOfEq + (extensionSubgroup_rationalCyclotomicFieldInertia H.field) + exact + qField.symm.trans + (qInertia.trans + (rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv + (H.toFiniteResidueAbstractField + rationalCyclotomicDegreeData))) + +/-- On an absolute-Galois representative fixing the lower field, the +actual cyclotomic Galois coordinate is its normalized degree. -/ +@[simp] +theorem abstractFixedFieldCyclotomicGalEquivZHat_extensionClass + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (σ : H.field.toSubgroup) : + let hI := + rationalCyclotomicFieldInertia_le H.field + let hnormal : + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI).Normal := by + rw [extensionSubgroup_rationalCyclotomicFieldInertia] + infer_instance + abstractFixedFieldCyclotomicGalEquivZHat H + (LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal + (QuotientGroup.mk σ)) = + rationalCyclotomicDegreeData.normalizedDegree + (H.toFiniteResidueAbstractField + rationalCyclotomicDegreeData) σ := by + let hI := + rationalCyclotomicFieldInertia_le H.field + let hnormal : + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI).Normal := by + rw [extensionSubgroup_rationalCyclotomicFieldInertia] + infer_instance + let qField := + LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal + change + (rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv + (H.toFiniteResidueAbstractField + rationalCyclotomicDegreeData)) + (QuotientGroup.quotientMulEquivOfEq + (extensionSubgroup_rationalCyclotomicFieldInertia H.field) + (qField.symm (qField (QuotientGroup.mk σ)))) = + rationalCyclotomicDegreeData.normalizedDegree + (H.toFiniteResidueAbstractField + rationalCyclotomicDegreeData) σ + rw [qField.symm_apply_apply] + rfl + +/-- Quotient-level evaluation of the actual cyclotomic Galois +coordinate. -/ +@[simp] +theorem abstractFixedFieldCyclotomicGalEquivZHat_quotientClass + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (q : + H.field.toSubgroup ⧸ + rationalCyclotomicDegreeData.fieldInertiaWithin H.field) : + let hI := + rationalCyclotomicFieldInertia_le H.field + let hnormal : + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI).Normal := by + rw [extensionSubgroup_rationalCyclotomicFieldInertia] + infer_instance + let qInertia : + H.field.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI ≃* + H.field.toSubgroup ⧸ + rationalCyclotomicDegreeData.fieldInertiaWithin H.field := + QuotientGroup.quotientMulEquivOfEq + (extensionSubgroup_rationalCyclotomicFieldInertia H.field) + abstractFixedFieldCyclotomicGalEquivZHat H + (LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal + (qInertia.symm q)) = + rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv + (H.toFiniteResidueAbstractField + rationalCyclotomicDegreeData) q := by + let hI := + rationalCyclotomicFieldInertia_le H.field + let hnormal : + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI).Normal := by + rw [extensionSubgroup_rationalCyclotomicFieldInertia] + infer_instance + let qField := + LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal + let qInertia : + H.field.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI ≃* + H.field.toSubgroup ⧸ + rationalCyclotomicDegreeData.fieldInertiaWithin H.field := + QuotientGroup.quotientMulEquivOfEq + (extensionSubgroup_rationalCyclotomicFieldInertia H.field) + change + (rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv + (H.toFiniteResidueAbstractField + rationalCyclotomicDegreeData)) + (qInertia + (qField.symm + (qField (qInertia.symm q)))) = + rationalCyclotomicDegreeData.maximalUnramifiedDegreeEquiv + (H.toFiniteResidueAbstractField + rationalCyclotomicDegreeData) q + rw [qField.symm_apply_apply, qInertia.apply_symm_apply] + +/-- The extension fixed by cyclotomic field inertia is an actual +abelian Galois extension of the lower abstract fixed field. -/ +theorem abstractFixedFieldCyclotomic_isAbelianGalois + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + let hI := + rationalCyclotomicFieldInertia_le H.field + IsAbelianGalois + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) := by + let hI := + rationalCyclotomicFieldInertia_le H.field + let hnormal : + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI).Normal := by + rw [extensionSubgroup_rationalCyclotomicFieldInertia] + infer_instance + let : IsGalois + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) := + LocalClassFieldTheory.abstractRelativeFixedField_isGalois + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal + let e := + abstractFixedFieldCyclotomicGalEquivZHat H + exact + { is_comm.comm := by + intro σ τ + apply e.injective + simpa only [map_mul] using mul_comm (e σ) (e τ) } + +/-- The rational cyclotomic `ZHat`-field embedded in the actual +maximal-unramified compositum of an abstract fixed field. -/ +noncomputable def + rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + let hI := + rationalCyclotomicFieldInertia_le H.field + rationalCyclotomicZHatField →ₐ[ℚ] + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI := by + let hI := + rationalCyclotomicFieldInertia_le H.field + let J := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicDegreeData.fieldInertia H.field) + have hTJ : + rationalCyclotomicZHatField ≤ J := by + change + rationalCyclotomicZHatField ≤ + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicDegreeData.fieldInertia H.field) + rw [ + rationalCyclotomicDegreeData_fixedField_fieldInertia] + exact le_sup_right + exact IntermediateField.inclusion hTJ + +noncomputable instance + abstractFixedFieldCyclotomicCompositum_algebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + let hI := + rationalCyclotomicFieldInertia_le H.field + Algebra rationalCyclotomicZHatField + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) := + ((rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H).toRingHom).toAlgebra + +instance abstractFixedFieldCyclotomicCompositum_scalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + let hI := + rationalCyclotomicFieldInertia_le H.field + IsScalarTower ℚ rationalCyclotomicZHatField + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) := + IsScalarTower.of_algebraMap_eq' + ((rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H).comp_algebraMap).symm + +instance abstractFixedFieldCyclotomicCompositum_baseScalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + let hI := + rationalCyclotomicFieldInertia_le H.field + IsScalarTower ℚ + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) := by + let hI := + rationalCyclotomicFieldInertia_le H.field + apply IsScalarTower.of_algebraMap_eq + intro x + apply Subtype.ext + rfl + +/-- Restriction from the actual maximal-unramified compositum of an +abstract fixed field to the rational cyclotomic factor. -/ +noncomputable def abstractFixedFieldCyclotomicRestriction + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + let hI := + rationalCyclotomicFieldInertia_le H.field + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) →* + Gal(rationalCyclotomicZHatField / ℚ) := by + let hI := + rationalCyclotomicFieldInertia_le H.field + exact + IntermediateField.restrictRestrictAlgEquivMapHom + ℚ rationalCyclotomicZHatField + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) + +/-- On a quotient representative, cyclotomic restriction of the +actual relative automorphism is ordinary restriction of the same +ambient absolute-Galois automorphism. -/ +noncomputable local instance + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldNormal : + Normal ℚ rationalCyclotomicZHatField := + rationalCyclotomicZHatField_isNormal + +@[simp] +theorem abstractFixedFieldCyclotomicRestriction_extensionClass + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (σ : H.field.toSubgroup) : + let hI := + rationalCyclotomicFieldInertia_le H.field + let hnormal : + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI).Normal := by + rw [extensionSubgroup_rationalCyclotomicFieldInertia] + infer_instance + abstractFixedFieldCyclotomicRestriction H + (LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal + (QuotientGroup.mk σ)) = + AlgEquiv.restrictNormalHom + rationalCyclotomicZHatField σ.1 := by + let hI := + rationalCyclotomicFieldInertia_le H.field + let hnormal : + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI).Normal := by + rw [extensionSubgroup_rationalCyclotomicFieldInertia] + infer_instance + let τ := + LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal + (QuotientGroup.mk' + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) hI) + σ) + apply AlgEquiv.ext + intro x + apply Subtype.ext + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI + have hrestrict : + algebraMap rationalCyclotomicZHatField U + ((abstractFixedFieldCyclotomicRestriction H τ) x) = + τ (algebraMap rationalCyclotomicZHatField U x) := by + change + algebraMap rationalCyclotomicZHatField U + ((AlgEquiv.restrictNormal + (MulSemiringAction.toAlgEquiv ℚ U τ) + rationalCyclotomicZHatField) x) = + (MulSemiringAction.toAlgEquiv ℚ U τ) + (algebraMap rationalCyclotomicZHatField U x) + exact + AlgEquiv.restrictNormal_commutes + (MulSemiringAction.toAlgEquiv ℚ U τ) + rationalCyclotomicZHatField x + have halgebraMap_eq_embedding + (z : rationalCyclotomicZHatField) : + algebraMap rationalCyclotomicZHatField U z = + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H z : U) := by + rfl + have hembedding_coe + (z : rationalCyclotomicZHatField) : + (((rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H z : U) : SeparableClosure ℚ)) = + (z : SeparableClosure ℚ) := by + rfl + have halgebraMap_coe + (z : rationalCyclotomicZHatField) : + ((algebraMap rationalCyclotomicZHatField U z : U) : + SeparableClosure ℚ) = + (z : SeparableClosure ℚ) := by + rw [halgebraMap_eq_embedding] + exact hembedding_coe z + have hambient := + LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup_mk_apply_val + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal σ + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H x) + calc + (((abstractFixedFieldCyclotomicRestriction H τ) x : + rationalCyclotomicZHatField) : + SeparableClosure ℚ) = + ((τ + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H x) : + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) : + SeparableClosure ℚ) := by + calc + (((abstractFixedFieldCyclotomicRestriction H τ) x : + rationalCyclotomicZHatField) : SeparableClosure ℚ) = + ((algebraMap rationalCyclotomicZHatField U + ((abstractFixedFieldCyclotomicRestriction H τ) x) : U) : + SeparableClosure ℚ) := + (halgebraMap_coe + ((abstractFixedFieldCyclotomicRestriction H τ) x)).symm + _ = ((τ (algebraMap rationalCyclotomicZHatField U x) : U) : + SeparableClosure ℚ) := + congrArg (fun y : U => (y : SeparableClosure ℚ)) hrestrict + _ = ((τ + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H x) : U) : SeparableClosure ℚ) := by + rw [halgebraMap_eq_embedding] + _ = σ.1 (x : SeparableClosure ℚ) := by + calc + ((τ + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H x) : U) : SeparableClosure ℚ) = + σ.1 + ((rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H x : U) : SeparableClosure ℚ) := by + simpa only [τ, U] using hambient.symm + _ = σ.1 (x : SeparableClosure ℚ) := by + rw [hembedding_coe] + _ = + (((AlgEquiv.restrictNormalHom + rationalCyclotomicZHatField σ.1) x : + rationalCyclotomicZHatField) : + SeparableClosure ℚ) := by + exact + (AlgEquiv.restrictNormal_commutes + σ.1 rationalCyclotomicZHatField x).symm + +/-- Raw cyclotomic restriction is residue-degree multiplication of +the normalized actual Galois coordinate. -/ +theorem + abstractFixedFieldCyclotomicRestriction_coordinate + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (τ : + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) : + Multiplicative.toAdd + (rationalCyclotomicZHatFieldGalEquivZHat + (abstractFixedFieldCyclotomicRestriction H τ)) = + (H.residueDegree rationalCyclotomicDegreeData : ℕ) • + Multiplicative.toAdd + (abstractFixedFieldCyclotomicGalEquivZHat H τ) := by + let hI := + rationalCyclotomicFieldInertia_le H.field + let hnormal : + (CyclicCohomology.extensionSubgroup H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI).Normal := by + rw [extensionSubgroup_rationalCyclotomicFieldInertia] + infer_instance + let qField := + LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) H.field + (rationalCyclotomicDegreeData.fieldInertia H.field) + hI hnormal + obtain ⟨q, rfl⟩ := qField.surjective τ + refine Quotient.inductionOn' q ?_ + intro σ + rw [ + abstractFixedFieldCyclotomicRestriction_extensionClass, + abstractFixedFieldCyclotomicGalEquivZHat_extensionClass] + exact + (rationalCyclotomicDegreeData.residueDegree_nsmul_normalizedDegree + (H.toFiniteResidueAbstractField + rationalCyclotomicDegreeData) σ).symm + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinComparison.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinComparison.lean new file mode 100644 index 0000000..0788ef1 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinComparison.lean @@ -0,0 +1,273 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicAbstractFixedFieldArtinCoordinates + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open KummerTheory + +attribute [local instance] + cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldNormal + abstractFixedFieldCyclotomic_numberField + +/-- The actual infinite global Artin map on an abstract fixed field +restricts to the rational cyclotomic Artin map of the ordinary idele +norm. -/ +@[simp] +theorem + abstractFixedFieldCyclotomicRestriction_infiniteGlobalArtinMonoidHom + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : + IdeleGroup + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) : + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + letI : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + letI : NumberField F := + NumberField.of_module_finite ℚ F + let hI := + rationalCyclotomicFieldInertia_le H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI + letI : IsAbelianGalois F U := + abstractFixedFieldCyclotomic_isAbelianGalois H + abstractFixedFieldCyclotomicRestriction H + (infiniteGlobalArtinMonoidHom F U a) = + rationalCyclotomicZHatGlobalArtin + (IdeleGroup.norm ℚ F a) := by + exact + abstractFixedFieldCyclotomicRestriction_infiniteGlobalArtin_inverseLimit + H a + +/-- In the normalized actual Galois coordinate, the infinite global +Artin symbol is exactly the normalized cyclotomic idele value. -/ +theorem + abstractFixedFieldCyclotomicGalEquivZHat_infiniteGlobalArtinMonoidHom + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : + IdeleGroup + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) : + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + letI : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + letI : NumberField F := + NumberField.of_module_finite ℚ F + let hI := + rationalCyclotomicFieldInertia_le H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI + letI : IsAbelianGalois F U := + abstractFixedFieldCyclotomic_isAbelianGalois H + Multiplicative.toAdd + (abstractFixedFieldCyclotomicGalEquivZHat H + (infiniteGlobalArtinMonoidHom F U a)) = + normalizedCyclotomicZHatIdeleValue F + (Additive.ofMul a) := by + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + let : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + let : NumberField F := + NumberField.of_module_finite ℚ F + let hI := + rationalCyclotomicFieldInertia_le H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI + let : IsAbelianGalois F U := + abstractFixedFieldCyclotomic_isAbelianGalois H + apply + zHatMulNat_injective + (H.residueDegree rationalCyclotomicDegreeData).pos + calc + (H.residueDegree rationalCyclotomicDegreeData : ℕ) • + Multiplicative.toAdd + (abstractFixedFieldCyclotomicGalEquivZHat H + (infiniteGlobalArtinMonoidHom F U a)) = + Multiplicative.toAdd + (rationalCyclotomicZHatFieldGalEquivZHat + (abstractFixedFieldCyclotomicRestriction H + (infiniteGlobalArtinMonoidHom F U a))) := by + exact + (abstractFixedFieldCyclotomicRestriction_coordinate H + (infiniteGlobalArtinMonoidHom F U a)).symm + _ = + Multiplicative.toAdd + (rationalCyclotomicZHatFieldGalEquivZHat + (rationalCyclotomicZHatGlobalArtin + (IdeleGroup.norm ℚ F a))) := by + rw [ + abstractFixedFieldCyclotomicRestriction_infiniteGlobalArtinMonoidHom] + _ = + cyclotomicZHatNormComposite F + (Additive.ofMul a) := by + rfl + _ = + cyclotomicZHatIntersectionDegree F • + normalizedCyclotomicZHatIdeleValue F + (Additive.ofMul a) := by + exact + (cyclotomicZHatIntersectionDegree_nsmul_normalizedIdeleValue + F (Additive.ofMul a)).symm + _ = + (H.residueDegree rationalCyclotomicDegreeData : ℕ) • + normalizedCyclotomicZHatIdeleValue F + (Additive.ofMul a) := by + rw [ + cyclotomicZHatIntersectionDegree_abstractFixedField_eq_residueDegree + H] + +/-- Representative form of the actual cyclotomic Artin-coordinate +identity after descent of the normalized value to the idele class +group. -/ +theorem + abstractFixedFieldCyclotomicGalEquivZHat_infiniteGlobalArtinMonoidHom_mk + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : + IdeleGroup + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) : + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + letI : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + letI : NumberField F := + NumberField.of_module_finite ℚ F + let hI := + rationalCyclotomicFieldInertia_le H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI + letI : IsAbelianGalois F U := + abstractFixedFieldCyclotomic_isAbelianGalois H + Multiplicative.toAdd + (abstractFixedFieldCyclotomicGalEquivZHat H + (infiniteGlobalArtinMonoidHom F U a)) = + normalizedCyclotomicZHatIdeleClassValueContinuous F + (Additive.ofMul + (QuotientGroup.mk' + (IdeleGroup.principalSubgroup F) a)) := by + have hSeparableClosureAlgebra : + cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra = + rationalSeparableClosureAlgebra := + Subsingleton.elim _ _ + cases hSeparableClosureAlgebra + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + let hI := + rationalCyclotomicFieldInertia_le H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI + let : IsAbelianGalois F U := + abstractFixedFieldCyclotomic_isAbelianGalois H + calc + Multiplicative.toAdd + (abstractFixedFieldCyclotomicGalEquivZHat H + (infiniteGlobalArtinMonoidHom F U a)) = + normalizedCyclotomicZHatIdeleValue F + (Additive.ofMul a) := + abstractFixedFieldCyclotomicGalEquivZHat_infiniteGlobalArtinMonoidHom + H a + _ = + normalizedCyclotomicZHatIdeleClassValueContinuous F + (Additive.ofMul + (QuotientGroup.mk' + (IdeleGroup.principalSubgroup F) a)) := + (normalizedCyclotomicZHatIdeleClassValueContinuous_mk + (K := F) a).symm + +/-- The genuine infinite global Artin symbol of the cyclotomic +maximal-unramified extension kills every principal idele of the +abstract fixed field. -/ +@[simp] +theorem + infiniteGlobalArtinMonoidHom_abstractFixedFieldCyclotomic_principalIdele + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (x : + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)ˣ) : + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + letI : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + letI : NumberField F := + NumberField.of_module_finite ℚ F + let hI := + rationalCyclotomicFieldInertia_le H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI + letI : IsAbelianGalois F U := + abstractFixedFieldCyclotomic_isAbelianGalois H + infiniteGlobalArtinMonoidHom F U + (IdeleGroup.principalIdele F x) = + 1 := by + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + let : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + let : NumberField F := + NumberField.of_module_finite ℚ F + let hI := + rationalCyclotomicFieldInertia_le H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI + let : IsAbelianGalois F U := + abstractFixedFieldCyclotomic_isAbelianGalois H + have hcoord : + Multiplicative.toAdd + (abstractFixedFieldCyclotomicGalEquivZHat H + (infiniteGlobalArtinMonoidHom F U + (IdeleGroup.principalIdele F x))) = 0 := + (abstractFixedFieldCyclotomicGalEquivZHat_infiniteGlobalArtinMonoidHom + H (IdeleGroup.principalIdele F x)).trans + (normalizedCyclotomicZHatIdeleValue_principalIdele_eq_zero F x) + apply (abstractFixedFieldCyclotomicGalEquivZHat H).injective + rw [map_one] + apply Multiplicative.ext + exact hcoord.trans toAdd_one.symm + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinCompositum.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinCompositum.lean new file mode 100644 index 0000000..1295a7e --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinCompositum.lean @@ -0,0 +1,257 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicAbstractFixedFieldArtinBase + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open KummerTheory + +attribute [local instance] + cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldNormal + +/-- The canonical compositum of an abstract fixed field with a finite +layer of the rational cyclotomic `ZHat`-extension. -/ +def abstractFixedFieldCyclotomicFiniteCompositum + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IntermediateField ℚ (SeparableClosure ℚ) := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field ⊔ + IntermediateField.lift E.toIntermediateField + +noncomputable instance + abstractFixedFieldCyclotomicFiniteCompositum_finiteDimensional + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + FiniteDimensional ℚ + (abstractFixedFieldCyclotomicFiniteCompositum H E) := by + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + let : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + let : FiniteDimensional ℚ + (IntermediateField.lift E.toIntermediateField) := + ((IntermediateField.liftAlgEquiv + E.toIntermediateField).toLinearEquiv).finiteDimensional + exact IntermediateField.finiteDimensional_sup + F (IntermediateField.lift E.toIntermediateField) + +noncomputable instance + abstractFixedFieldCyclotomicFiniteCompositum_numberField + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + NumberField + (abstractFixedFieldCyclotomicFiniteCompositum H E) := + NumberField.of_module_finite ℚ + (abstractFixedFieldCyclotomicFiniteCompositum H E) + +/-- The lower abstract fixed field embedded into its finite +cyclotomic compositum. -/ +noncomputable def + abstractFixedFieldCyclotomicFiniteCompositumBaseEmbedding + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field →ₐ[ℚ] + abstractFixedFieldCyclotomicFiniteCompositum H E := + IntermediateField.inclusion + (show + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field ≤ + abstractFixedFieldCyclotomicFiniteCompositum H E from + le_sup_left) + + +noncomputable local instance + abstractFixedFieldCyclotomic_numberField + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + NumberField + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) := by + let : FiniteDimensional ℚ + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + exact + NumberField.of_module_finite ℚ + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + +/-- A finite rational cyclotomic layer embedded into its compositum +with the abstract fixed field. -/ +noncomputable def + abstractFixedFieldCyclotomicFiniteCompositumLayerEmbedding + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + E →ₐ[ℚ] + abstractFixedFieldCyclotomicFiniteCompositum H E := + (IntermediateField.inclusion + (show + IntermediateField.lift E.toIntermediateField ≤ + abstractFixedFieldCyclotomicFiniteCompositum H E from + le_sup_right)).comp + (IntermediateField.liftAlgEquiv E.toIntermediateField).toAlgHom + +noncomputable instance + abstractFixedFieldCyclotomicFiniteCompositum_baseAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Algebra + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteCompositum H E) := + RingHom.toAlgebra + (AlgHom.toRingHom + (abstractFixedFieldCyclotomicFiniteCompositumBaseEmbedding H E)) + +noncomputable instance + abstractFixedFieldCyclotomicFiniteCompositum_layerAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Algebra E + (abstractFixedFieldCyclotomicFiniteCompositum H E) := + RingHom.toAlgebra + (AlgHom.toRingHom + (abstractFixedFieldCyclotomicFiniteCompositumLayerEmbedding H E)) + +/-- The finite-layer action induced by its explicit embedding into the +finite compositum. -/ +noncomputable instance + abstractFixedFieldCyclotomicFiniteCompositum_layerSMul + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + SMul E + (abstractFixedFieldCyclotomicFiniteCompositum H E) := + Algebra.toSMul + (self := + abstractFixedFieldCyclotomicFiniteCompositum_layerAlgebra H E) + +instance + abstractFixedFieldCyclotomicFiniteCompositum_baseScalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsScalarTower ℚ + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteCompositum H E) := + IsScalarTower.of_algebraMap_eq' + (AlgHom.comp_algebraMap + (abstractFixedFieldCyclotomicFiniteCompositumBaseEmbedding H E)).symm + +instance + abstractFixedFieldCyclotomicFiniteCompositum_layerScalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsScalarTower ℚ E + (abstractFixedFieldCyclotomicFiniteCompositum H E) := + IsScalarTower.of_algebraMap_eq' + (AlgHom.comp_algebraMap + (abstractFixedFieldCyclotomicFiniteCompositumLayerEmbedding H E)).symm + +/-- Inclusion of the finite cyclotomic compositum into the actual +maximal-unramified compositum. -/ +noncomputable def + abstractFixedFieldCyclotomicFiniteCompositumInclusion + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + let hI := + rationalCyclotomicFieldInertia_le H.field + abstractFixedFieldCyclotomicFiniteCompositum H E →ₐ[ℚ] + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI := by + let hI := + rationalCyclotomicFieldInertia_le H.field + let J := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicDegreeData.fieldInertia H.field) + have hle : + abstractFixedFieldCyclotomicFiniteCompositum H E ≤ J := by + dsimp only [J] + rw [ + rationalCyclotomicDegreeData_fixedField_fieldInertia H.field] + exact + sup_le_sup le_rfl + (IntermediateField.lift_le E.toIntermediateField) + exact IntermediateField.inclusion hle + +/-- The same finite-compositum inclusion over the lower abstract fixed +field. -/ +noncomputable def + abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + let hI := + rationalCyclotomicFieldInertia_le H.field + abstractFixedFieldCyclotomicFiniteCompositum H E →ₐ[ + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field] + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI := by + let f := + abstractFixedFieldCyclotomicFiniteCompositumInclusion H E + exact + { f.toRingHom with + commutes' := by + intro x + rfl } + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinCoordinates.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinCoordinates.lean new file mode 100644 index 0000000..64ed13e --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinCoordinates.lean @@ -0,0 +1,668 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicAbstractFixedFieldArtinFiniteRestriction + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open KummerTheory + +attribute [local instance] + cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldNormal + abstractFixedFieldCyclotomic_numberField + +section FiniteCoordinateHelpers + +/-- Opaque three-step equality composition used to keep large dependent +finite-level coordinates out of endpoint proof normalization. -/ +private theorem cyclotomicAbstractFixedFieldArtin_eqTransThree + {α : Type} {a b c d : α} + (hab : a = b) (hbc : b = c) (hcd : c = d) : + a = d := + hab.trans (hbc.trans hcd) + +private abbrev cyclotomicAbstractFixedFieldArtinCoordinateBase + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + +private abbrev cyclotomicAbstractFixedFieldArtinCoordinateRelative + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) + +private abbrev cyclotomicAbstractFixedFieldArtinCoordinateLayer + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IntermediateField + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := + abstractFixedFieldCyclotomicFiniteLayer H E + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateBaseAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + Algebra ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) := + (cyclotomicAbstractFixedFieldArtinCoordinateBase H).algebra' + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateBaseFiniteDimensional + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + FiniteDimensional ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateBaseNumberField + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + NumberField + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) := + NumberField.of_module_finite ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateBaseSeparableAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + Algebra + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (SeparableClosure ℚ) := + IntermediateField.toAlgebra + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateRelativeAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + Algebra + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H).algebra' + +local instance + cyclotomicAbstractFixedFieldArtinCoordinateRelativeScalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + IsScalarTower ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := + abstractFixedFieldCyclotomicCompositum_baseScalarTower H + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateRelativeIsAbelianGalois + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) : + IsAbelianGalois + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := + abstractFixedFieldCyclotomic_isAbelianGalois H + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateAlgebra + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Algebra ℚ E := + E.toIntermediateField.algebra' + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateNumberField + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + NumberField E := + NumberField.of_module_finite ℚ E + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateIsAbelianGalois + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsAbelianGalois ℚ E := + IsAbelianGalois.of_algHom E.toIntermediateField.val + +local instance + cyclotomicAbstractFixedFieldArtinCoordinateNormal + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Normal ℚ E := + E.isGalois.to_normal + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Algebra + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E).algebra' + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Algebra ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := + DivisionRing.toRatAlgebra + +local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseScalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsScalarTower ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := by + let hI := rationalCyclotomicFieldInertia_le H.field + apply IsScalarTower.of_algebraMap_eq + intro x + apply Subtype.ext + change + algebraMap ℚ + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) x = + algebraMap + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) + (algebraMap ℚ + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) x) + exact + IsScalarTower.algebraMap_apply + ℚ + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) x + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerNumberField + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + NumberField + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) := + abstractFixedFieldCyclotomicFiniteLayer_numberField H E + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Algebra E + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := + abstractFixedFieldCyclotomicFiniteLayer_layerAlgebra H E + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerSMul + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + SMul E + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := + abstractFixedFieldCyclotomicFiniteLayer_layerSMul H E + +local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerScalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsScalarTower ℚ E + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := + abstractFixedFieldCyclotomicFiniteLayer_layerScalarTower H E + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerRelativeAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Algebra + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := + IntermediateField.toAlgebra + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) + +local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerRelativeScalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsScalarTower + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) := + abstractFixedFieldCyclotomicFiniteGaloisLayer_scalarTower H E + +noncomputable local instance + cyclotomicAbstractFixedFieldArtinCoordinateLayerIsAbelianGalois + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsAbelianGalois + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateLayer H E) := + abstractFixedFieldCyclotomicFiniteLayer_isAbelianGalois H E + +/-- The full abstract Artin symbol whose finite coordinates are compared +below. Naming this endpoint keeps its relative fixed-field data opaque. -/ +private noncomputable def + cyclotomicAbstractFixedFieldArtinAbstractEndpoint + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) : + Gal(rationalCyclotomicZHatField / ℚ) := + abstractFixedFieldCyclotomicRestriction H + (infiniteGlobalArtinMonoidHom + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) a) + +/-- The rational norm Artin symbol serving as the other full endpoint. -/ +private noncomputable def + cyclotomicAbstractFixedFieldArtinRationalEndpoint + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) : + Gal(rationalCyclotomicZHatField / ℚ) := + rationalCyclotomicZHatGlobalArtin + (IdeleGroup.norm ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) a) + + +private noncomputable def cyclotomicAbstractFixedFieldArtinCoordinateMapData + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + {f : Gal(abstractFixedFieldCyclotomicFiniteGaloisLayer H E / + cyclotomicAbstractFixedFieldArtinCoordinateBase H) →* + Gal(E / ℚ) // + f.comp + (@globalArtinMonoidHomOfNumberField + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) + (inferInstance : Field + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (cyclotomicAbstractFixedFieldArtinCoordinateBaseNumberField H) + (inferInstance : Field + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E)) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerIsAbelianGalois H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerNumberField H E)) = + (globalArtinMonoidHom (K := ℚ) (L := E)).comp + (IdeleGroup.norm ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateBase H))} := by + have hnat := + @globalArtinMonoidHomOfNumberField_norm_restriction + ℚ E + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) + inferInstance inferInstance + inferInstance + (cyclotomicAbstractFixedFieldArtinCoordinateNumberField E) + (cyclotomicAbstractFixedFieldArtinCoordinateAlgebra E) + (cyclotomicAbstractFixedFieldArtinCoordinateIsAbelianGalois E) + inferInstance + (cyclotomicAbstractFixedFieldArtinCoordinateBaseNumberField H) + inferInstance + (cyclotomicAbstractFixedFieldArtinCoordinateBaseAlgebra H) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseScalarTower H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerScalarTower H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerIsAbelianGalois H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerNumberField H E) + exact + ⟨(@AlgEquiv.restrictNormalHom + ℚ inferInstance + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) + inferInstance + (cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra H E) + E inferInstance + (cyclotomicAbstractFixedFieldArtinCoordinateAlgebra E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerScalarTower H E) + (cyclotomicAbstractFixedFieldArtinCoordinateNormal E)).comp + (@AlgEquiv.restrictScalarsHom + ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) + inferInstance inferInstance inferInstance + (cyclotomicAbstractFixedFieldArtinCoordinateBaseAlgebra H) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseScalarTower H E)), + hnat⟩ + +/-- The fixed restriction map from the relative finite layer to one rational +cyclotomic coordinate. -/ +private noncomputable def cyclotomicAbstractFixedFieldArtinCoordinateMap + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Gal(abstractFixedFieldCyclotomicFiniteGaloisLayer H E / + cyclotomicAbstractFixedFieldArtinCoordinateBase H) →* + Gal(E / ℚ) := + (cyclotomicAbstractFixedFieldArtinCoordinateMapData H E).1 + + +private theorem cyclotomicAbstractFixedFieldArtinCoordinateMap_naturality + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + (cyclotomicAbstractFixedFieldArtinCoordinateMap H E).comp + (globalArtinMonoidHom + (K := cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (L := abstractFixedFieldCyclotomicFiniteGaloisLayer H E)) = + (globalArtinMonoidHom (K := ℚ) (L := E)).comp + (IdeleGroup.norm ℚ + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) := + (cyclotomicAbstractFixedFieldArtinCoordinateMapData H E).2 + +/-- Pointwise identification of the named coordinate map with the concrete +two-stage restriction used by the abstract fixed-field comparison. -/ +private theorem cyclotomicAbstractFixedFieldArtinCoordinateMap_apply + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) + (σ : Gal(abstractFixedFieldCyclotomicFiniteGaloisLayer H E / + cyclotomicAbstractFixedFieldArtinCoordinateBase H)) : + cyclotomicAbstractFixedFieldArtinCoordinateMap H E σ = + @IntermediateField.restrictRestrictAlgEquivMapHom + ℚ E + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) + inferInstance inferInstance inferInstance inferInstance + (cyclotomicAbstractFixedFieldArtinCoordinateAlgebra E) + (cyclotomicAbstractFixedFieldArtinCoordinateBaseAlgebra H) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerRatAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseAlgebra H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerScalarTower H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerBaseScalarTower H E) + (cyclotomicAbstractFixedFieldArtinCoordinateNormal E) σ := + rfl + +/-- The relative projection, common rational finite value, and rational +infinite projection, with both comparison steps packaged by the generic +provider before this concrete tower becomes opaque. -/ +private noncomputable def + cyclotomicAbstractFixedFieldArtinCoordinateBridgeData + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) := + @compRestrictNormalHomInfiniteGlobalArtinRationalCyclotomicDataOfNumberField + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) + (inferInstance : Field + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (cyclotomicAbstractFixedFieldArtinCoordinateBaseNumberField H) + (inferInstance : Field + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H)) + (cyclotomicAbstractFixedFieldArtinCoordinateRelativeAlgebra H) + (cyclotomicAbstractFixedFieldArtinCoordinateRelativeIsAbelianGalois H) + a + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerNumberField H E) + E + (cyclotomicAbstractFixedFieldArtinCoordinateNumberField E) + (cyclotomicAbstractFixedFieldArtinCoordinateIsAbelianGalois E) + (cyclotomicAbstractFixedFieldArtinCoordinateMap H E) + (cyclotomicAbstractFixedFieldArtinCoordinateMap_naturality H E) + +/-- The abstract endpoint after projection to one finite coordinate. -/ +private noncomputable def + cyclotomicAbstractFixedFieldArtinAbstractCoordinate + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Gal(E / ℚ) := + AlgEquiv.restrictNormalHom E + (cyclotomicAbstractFixedFieldArtinAbstractEndpoint H a) + +/-- The relative infinite Artin symbol, restricted to a finite layer and +then mapped to the corresponding rational coordinate. -/ +private noncomputable def + cyclotomicAbstractFixedFieldArtinRestrictedLayerCoordinate + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Gal(E / ℚ) := + (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).1.1 + +/-- The finite relative Artin symbol mapped to one rational coordinate. -/ +private noncomputable def + cyclotomicAbstractFixedFieldArtinFiniteCoordinate + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Gal(E / ℚ) := + (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).1.2.1 + +/-- The finite rational Artin coordinate of the idele norm. -/ +private noncomputable def + cyclotomicAbstractFixedFieldArtinRationalCoordinate + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Gal(E / ℚ) := + (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).1.2.1 + +/-- Naturality of the finite global Artin map at the concrete cyclotomic +coordinate. -/ +private theorem + cyclotomicAbstractFixedFieldArtinCoordinateNaturality + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + cyclotomicAbstractFixedFieldArtinFiniteCoordinate H a E = + cyclotomicAbstractFixedFieldArtinRationalCoordinate H a E := by + rfl + +/-- The rational endpoint after projection to one finite coordinate. -/ +private noncomputable def + cyclotomicAbstractFixedFieldArtinRationalEndpointCoordinate + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Gal(E / ℚ) := + (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).1.2.2 + +/-- The abstract restriction map projected to the concrete finite layer. -/ +private theorem + cyclotomicAbstractFixedFieldArtinCoordinateRestriction + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + cyclotomicAbstractFixedFieldArtinAbstractCoordinate H a E = + cyclotomicAbstractFixedFieldArtinRestrictedLayerCoordinate H a E := by + calc + cyclotomicAbstractFixedFieldArtinAbstractCoordinate H a E = + AlgEquiv.restrictNormalHom E + (cyclotomicAbstractFixedFieldArtinAbstractEndpoint H a) := rfl + _ = cyclotomicAbstractFixedFieldArtinCoordinateMap H E + (AlgEquiv.restrictNormalHom + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) + (infiniteGlobalArtinMonoidHom + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) a)) := + (restrictNormalHom_abstractFixedFieldCyclotomicRestriction + H E + (infiniteGlobalArtinMonoidHom + (cyclotomicAbstractFixedFieldArtinCoordinateBase H) + (cyclotomicAbstractFixedFieldArtinCoordinateRelative H) a)).trans + (cyclotomicAbstractFixedFieldArtinCoordinateMap_apply H E _).symm + _ = cyclotomicAbstractFixedFieldArtinRestrictedLayerCoordinate H a E := rfl + +/-- Restricting the infinite relative Artin symbol supplies exactly the +finite Artin coordinate. -/ +private theorem + cyclotomicAbstractFixedFieldArtinCoordinateLayerProjection + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + cyclotomicAbstractFixedFieldArtinRestrictedLayerCoordinate H a E = + cyclotomicAbstractFixedFieldArtinFiniteCoordinate H a E := + (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).2.1 + +/-- The rational cyclotomic Artin map projected to the same finite +coordinate. -/ +private theorem + cyclotomicAbstractFixedFieldArtinCoordinateRationalProjection + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + cyclotomicAbstractFixedFieldArtinRationalEndpointCoordinate H a E = + cyclotomicAbstractFixedFieldArtinFiniteCoordinate H a E := by + exact + (cyclotomicAbstractFixedFieldArtinCoordinateBridgeData H a E).2.2.symm + +/-- Equality of the two full endpoints at one opaque finite coordinate. -/ +private theorem + cyclotomicAbstractFixedFieldArtinFiniteCoordinateComparison + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + AlgEquiv.restrictNormalHom E + (cyclotomicAbstractFixedFieldArtinAbstractEndpoint H a) = + AlgEquiv.restrictNormalHom E + (cyclotomicAbstractFixedFieldArtinRationalEndpoint H a) := by + change + cyclotomicAbstractFixedFieldArtinAbstractCoordinate H a E = + cyclotomicAbstractFixedFieldArtinRationalEndpointCoordinate H a E + exact + cyclotomicAbstractFixedFieldArtin_eqTransThree + (cyclotomicAbstractFixedFieldArtinCoordinateRestriction H a E) + (cyclotomicAbstractFixedFieldArtinCoordinateLayerProjection H a E) + (cyclotomicAbstractFixedFieldArtinCoordinateRationalProjection + H a E).symm + +/-- The finite-coordinate comparison assembled in the rational cyclotomic +inverse limit. -/ +theorem + abstractFixedFieldCyclotomicRestriction_infiniteGlobalArtin_inverseLimit + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (a : + IdeleGroup + (cyclotomicAbstractFixedFieldArtinCoordinateBase H)) : + cyclotomicAbstractFixedFieldArtinAbstractEndpoint H a = + cyclotomicAbstractFixedFieldArtinRationalEndpoint H a := by + apply + (InfiniteGalois.continuousMulEquivToLimit + ℚ rationalCyclotomicZHatField).injective + apply Subtype.ext + funext Eop + exact + cyclotomicAbstractFixedFieldArtinFiniteCoordinateComparison + H a Eop.unop + +end FiniteCoordinateHelpers + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinFiniteLayer.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinFiniteLayer.lean new file mode 100644 index 0000000..0ee433c --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinFiniteLayer.lean @@ -0,0 +1,298 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicAbstractFixedFieldArtinCompositum + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open KummerTheory + +attribute [local instance] + cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldNormal + abstractFixedFieldCyclotomic_numberField + +/-- The finite cyclotomic compositum as an intermediate field of the +actual maximal-unramified extension. -/ +noncomputable def abstractFixedFieldCyclotomicFiniteLayer + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + let hI := + rationalCyclotomicFieldInertia_le H.field + IntermediateField + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) := + (abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase H E).fieldRange + +/-- The base algebra on the finite field range, obtained from the +explicit base embedding followed by the field-range equivalence. -/ +noncomputable instance + abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Algebra + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) := + RingHom.toAlgebra + ((AlgHom.toRingHom + (AlgEquiv.toAlgHom + (AlgHom.equivFieldRange + (abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase + H E)))).comp + (AlgHom.toRingHom + (abstractFixedFieldCyclotomicFiniteCompositumBaseEmbedding H E))) + +/-- The scalar action belonging to the canonical base algebra on the +finite field range. -/ +noncomputable instance + abstractFixedFieldCyclotomicFiniteLayer_baseSMul + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + SMul + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) := + Algebra.toSMul + (self := abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra H E) + + +noncomputable instance + abstractFixedFieldCyclotomicFiniteLayer_baseModule + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Module + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) := + @Algebra.toModule + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) + _ _ + (abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra H E) + +/-- The field-range equivalence rebuilt over the explicit base +algebras. Its underlying ring equivalence is the canonical one. -/ +noncomputable def + abstractFixedFieldCyclotomicFiniteCompositumEquivFiniteLayer + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + abstractFixedFieldCyclotomicFiniteCompositum H E ≃ₐ[ + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field] + abstractFixedFieldCyclotomicFiniteLayer H E := + AlgEquiv.ofRingEquiv + (f := + (AlgHom.equivFieldRange + (abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase + H E)).toRingEquiv) + (fun _ => rfl) + +noncomputable instance + abstractFixedFieldCyclotomicFiniteLayer_finiteDimensional + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + FiniteDimensional + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) := + (abstractFixedFieldCyclotomicFiniteCompositumEquivFiniteLayer + H E).toLinearEquiv.finiteDimensional + +noncomputable instance + abstractFixedFieldCyclotomicFiniteLayer_numberField + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + NumberField + (abstractFixedFieldCyclotomicFiniteLayer H E) := + NumberField.of_module_finite + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) + +noncomputable instance + abstractFixedFieldCyclotomicFiniteLayer_isAbelianGalois + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsAbelianGalois + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) := by + let hI := + rationalCyclotomicFieldInertia_le H.field + let : IsAbelianGalois + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) := + abstractFixedFieldCyclotomic_isAbelianGalois H + exact + IsAbelianGalois.of_algHom + ((abstractFixedFieldCyclotomicFiniteCompositumInclusionOverBase + H E).comp + (AlgEquiv.toAlgHom + (AlgEquiv.symm + (abstractFixedFieldCyclotomicFiniteCompositumEquivFiniteLayer + H E)))) + +instance + abstractFixedFieldCyclotomicFiniteLayer_baseScalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsScalarTower ℚ + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) := by + let hI := + rationalCyclotomicFieldInertia_le H.field + apply IsScalarTower.of_algebraMap_eq + intro x + apply Subtype.ext + change + algebraMap ℚ + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) x = + algebraMap + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) + (algebraMap ℚ + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) x) + exact + IsScalarTower.algebraMap_apply + ℚ + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hI) x + +/-- The finite rational layer embedded into its corresponding +intermediate field over the abstract fixed field. -/ +noncomputable def + abstractFixedFieldCyclotomicFiniteLayerEmbedding + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + E →ₐ[ℚ] + abstractFixedFieldCyclotomicFiniteLayer H E := by + exact + (AlgEquiv.toAlgHom + (AlgEquiv.restrictScalars ℚ + (abstractFixedFieldCyclotomicFiniteCompositumEquivFiniteLayer + H E))).comp + (abstractFixedFieldCyclotomicFiniteCompositumLayerEmbedding H E) + +noncomputable instance + abstractFixedFieldCyclotomicFiniteLayer_layerAlgebra + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + Algebra E + (abstractFixedFieldCyclotomicFiniteLayer H E) := + RingHom.toAlgebra + (AlgHom.toRingHom + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E)) + +/-- The finite-layer action on its actual image in the relative fixed +field. -/ +noncomputable instance + abstractFixedFieldCyclotomicFiniteLayer_layerSMul + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + SMul E + (abstractFixedFieldCyclotomicFiniteLayer H E) := + Algebra.toSMul + (self := abstractFixedFieldCyclotomicFiniteLayer_layerAlgebra H E) + +instance + abstractFixedFieldCyclotomicFiniteLayer_layerScalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsScalarTower ℚ E + (abstractFixedFieldCyclotomicFiniteLayer H E) := + IsScalarTower.of_algebraMap_eq' + (AlgHom.comp_algebraMap + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E)).symm + +/-- The finite cyclotomic layer as an object of the finite-Galois +inverse system of the actual maximal-unramified extension. -/ +@[reducible] +noncomputable def + abstractFixedFieldCyclotomicFiniteGaloisLayer + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + FiniteGaloisIntermediateField + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field)) where + toIntermediateField := + abstractFixedFieldCyclotomicFiniteLayer H E + finiteDimensional := + abstractFixedFieldCyclotomicFiniteLayer_finiteDimensional H E + isGalois := + (abstractFixedFieldCyclotomicFiniteLayer_isAbelianGalois H E).toIsGalois + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinFiniteRestriction.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinFiniteRestriction.lean new file mode 100644 index 0000000..bcfbbc2 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/CyclotomicAbstractFixedFieldArtinFiniteRestriction.lean @@ -0,0 +1,462 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicAbstractFixedFieldArtinFiniteLayer + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open KummerTheory + +attribute [local instance] + cyclotomicAbstractFixedFieldArtin_separableClosureAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldAlgebra + cyclotomicAbstractFixedFieldArtin_cyclotomicZHatFieldNormal + abstractFixedFieldCyclotomic_numberField + +/-- The explicit base algebra on a finite cyclotomic layer is the canonical +intermediate-field inclusion used by the finite Galois inverse system. -/ +theorem abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra_eq_algebra' + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + abstractFixedFieldCyclotomicFiniteLayer_baseAlgebra H E = + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E).algebra' := by + apply Algebra.algebra_ext + intro x + apply Subtype.ext + rfl + +/-- The finite Galois layer uses its canonical inclusion into the full +relative fixed field for the upper scalar action. -/ +instance + abstractFixedFieldCyclotomicFiniteGaloisLayer_scalarTower + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + IsScalarTower + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E).toIntermediateField + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field)) := by + let i : + (abstractFixedFieldCyclotomicFiniteGaloisLayer + H E).toIntermediateField →ₐ[ + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field] + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) := + { (abstractFixedFieldCyclotomicFiniteGaloisLayer + H E).toIntermediateField.val.toRingHom with + commutes' := by + intro x + rfl } + exact + IsScalarTower.of_algebraMap_eq' + (AlgHom.comp_algebraMap i).symm + +/-- The canonical inclusion of the finite cyclotomic layer into the +full abstract-fixed-field compositum. -/ +private noncomputable def + abstractFixedFieldCyclotomicFiniteLayerInclusion + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) : + abstractFixedFieldCyclotomicFiniteLayer H E →ₐ[ + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field] + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) := + IntermediateField.val + (abstractFixedFieldCyclotomicFiniteLayer H E) + +/-- The two embeddings of a finite rational cyclotomic layer into the +full abstract-fixed-field compositum agree. -/ +private theorem + abstractFixedFieldCyclotomicFiniteLayerEmbedding_inclusion + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) + (z : E) : + abstractFixedFieldCyclotomicFiniteLayerInclusion H E + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E z) = + rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H + (z : rationalCyclotomicZHatField) := by + exact Subtype.ext rfl + +/-- Restriction to `E` commutes pointwise with the restriction from the +full rational cyclotomic tower. -/ +private theorem + restrictNormalHom_abstractFixedFieldCyclotomicRestriction_apply + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) + [Normal ℚ E] + (σ : + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) + (z : E) : + ((AlgEquiv.restrictNormalHom E + (abstractFixedFieldCyclotomicRestriction H σ)) z : + rationalCyclotomicZHatField) = + (abstractFixedFieldCyclotomicRestriction H σ) + (z : rationalCyclotomicZHatField) := by + exact + AlgEquiv.restrictNormal_commutes + (abstractFixedFieldCyclotomicRestriction H σ) E z + +/-- The raw cyclotomic restriction commutes with the canonical embedding +of the full rational cyclotomic tower. -/ +private theorem + abstractFixedFieldCyclotomicRestriction_embedding_apply + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (σ : + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) + (z : rationalCyclotomicZHatField) : + rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H + (abstractFixedFieldCyclotomicRestriction H σ z) = + σ + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H z) := by + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) + exact + AlgEquiv.restrictNormal_commutes + (MulSemiringAction.toAlgEquiv ℚ U σ) + rationalCyclotomicZHatField z + +/-- Restriction to the finite compositum layer commutes with its +canonical inclusion into the full compositum. -/ +private theorem + restrictNormalHom_abstractFixedFieldCyclotomicFiniteLayer_apply + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) + [Normal + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E)] + (σ : + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) + (z : abstractFixedFieldCyclotomicFiniteLayer H E) : + abstractFixedFieldCyclotomicFiniteLayerInclusion H E + (AlgEquiv.restrictNormalHom + (abstractFixedFieldCyclotomicFiniteLayer H E) σ z) = + σ (abstractFixedFieldCyclotomicFiniteLayerInclusion H E z) := by + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) + let P : IntermediateField F U := + abstractFixedFieldCyclotomicFiniteLayer H E + exact + AlgEquiv.restrictNormal_commutes + (MulSemiringAction.toAlgEquiv F U σ) P z + +/-- Restricting the finite-compositum action further to `E` commutes +with the explicit embedding of `E` into that finite layer. -/ +private theorem + abstractFixedFieldCyclotomicFiniteLayerEmbedding_restrict_apply + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) + [Normal ℚ E] + [Normal + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E)] + (σ : + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) + (z : E) : + abstractFixedFieldCyclotomicFiniteLayerEmbedding H E + (IntermediateField.restrictRestrictAlgEquivMapHom + ℚ E + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) + (AlgEquiv.restrictNormalHom + (abstractFixedFieldCyclotomicFiniteLayer H E) σ) z) = + (AlgEquiv.restrictNormalHom + (abstractFixedFieldCyclotomicFiniteLayer H E) σ) + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E z) := by + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) + let P : IntermediateField F U := + abstractFixedFieldCyclotomicFiniteLayer H E + exact + AlgEquiv.restrictNormal_commutes + (MulSemiringAction.toAlgEquiv ℚ P + (AlgEquiv.restrictNormalHom P σ)) E z + +/-- The left finite-level restriction, after both canonical embeddings into +the full compositum, is the action of `σ` on the cyclotomic embedding. -/ +private theorem + restrictNormalHom_abstractFixedFieldCyclotomicRestriction_left_embedded + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) + [Normal ℚ E] + (σ : + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) + (x : E) : + abstractFixedFieldCyclotomicFiniteLayerInclusion H E + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E + (AlgEquiv.restrictNormalHom E + (abstractFixedFieldCyclotomicRestriction H σ) x)) = + σ + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H + (x : rationalCyclotomicZHatField)) := by + calc + abstractFixedFieldCyclotomicFiniteLayerInclusion H E + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E + (AlgEquiv.restrictNormalHom E + (abstractFixedFieldCyclotomicRestriction H σ) x)) = + rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H + (((AlgEquiv.restrictNormalHom E + (abstractFixedFieldCyclotomicRestriction H σ) x) : + rationalCyclotomicZHatField)) := + abstractFixedFieldCyclotomicFiniteLayerEmbedding_inclusion H E _ + _ = rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H + (abstractFixedFieldCyclotomicRestriction H σ + (x : rationalCyclotomicZHatField)) := + congrArg + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H) + (restrictNormalHom_abstractFixedFieldCyclotomicRestriction_apply + H E σ x) + _ = σ + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H (x : rationalCyclotomicZHatField)) := + abstractFixedFieldCyclotomicRestriction_embedding_apply + H σ (x : rationalCyclotomicZHatField) + +/-- The right finite-level restriction, after both canonical embeddings into +the full compositum, is the same action of `σ`. -/ +private theorem + restrictNormalHom_abstractFixedFieldCyclotomicRestriction_right_embedded + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) + [Normal ℚ E] + [Normal + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E)] + (σ : + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) + (x : E) : + abstractFixedFieldCyclotomicFiniteLayerInclusion H E + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E + (IntermediateField.restrictRestrictAlgEquivMapHom + ℚ E + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) + (AlgEquiv.restrictNormalHom + (abstractFixedFieldCyclotomicFiniteLayer H E) σ) x)) = + σ + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum H + (x : rationalCyclotomicZHatField)) := by + calc + abstractFixedFieldCyclotomicFiniteLayerInclusion H E + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E + (IntermediateField.restrictRestrictAlgEquivMapHom + ℚ E + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) + (AlgEquiv.restrictNormalHom + (abstractFixedFieldCyclotomicFiniteLayer H E) σ) x)) = + abstractFixedFieldCyclotomicFiniteLayerInclusion H E + ((AlgEquiv.restrictNormalHom + (abstractFixedFieldCyclotomicFiniteLayer H E) σ) + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E x)) := + congrArg + (abstractFixedFieldCyclotomicFiniteLayerInclusion H E) + (abstractFixedFieldCyclotomicFiniteLayerEmbedding_restrict_apply + H E σ x) + _ = σ + (abstractFixedFieldCyclotomicFiniteLayerInclusion H E + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E x)) := + restrictNormalHom_abstractFixedFieldCyclotomicFiniteLayer_apply + H E σ (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E x) + _ = σ + (rationalCyclotomicZHatFieldEmbeddingInAbstractFixedFieldCompositum + H (x : rationalCyclotomicZHatField)) := + congrArg σ + (abstractFixedFieldCyclotomicFiniteLayerEmbedding_inclusion H E x) + +/-- Pointwise form of finite-layer restriction compatibility. -/ +private theorem + restrictNormalHom_abstractFixedFieldCyclotomicRestriction_pointwise + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) + [Normal ℚ E] + [Normal + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E)] + (σ : + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) + (x : E) : + AlgEquiv.restrictNormalHom E + (abstractFixedFieldCyclotomicRestriction H σ) x = + IntermediateField.restrictRestrictAlgEquivMapHom + ℚ E + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) + (AlgEquiv.restrictNormalHom + (abstractFixedFieldCyclotomicFiniteLayer H E) σ) x := by + apply + (abstractFixedFieldCyclotomicFiniteLayerEmbedding H E).injective + apply + (abstractFixedFieldCyclotomicFiniteLayerInclusion H E).injective + exact + (restrictNormalHom_abstractFixedFieldCyclotomicRestriction_left_embedded + H E σ x).trans + (restrictNormalHom_abstractFixedFieldCyclotomicRestriction_right_embedded + H E σ x).symm + +/-- Restricting through a finite layer commutes with restriction from +the full abstract-fixed-field compositum. -/ +theorem + restrictNormalHom_abstractFixedFieldCyclotomicRestriction + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (E : + FiniteGaloisIntermediateField + ℚ rationalCyclotomicZHatField) + (σ : + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field)) : + letI : Normal ℚ E := E.isGalois.to_normal + AlgEquiv.restrictNormalHom E + (abstractFixedFieldCyclotomicRestriction H σ) = + IntermediateField.restrictRestrictAlgEquivMapHom + ℚ E + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field) + (abstractFixedFieldCyclotomicFiniteLayer H E) + (AlgEquiv.restrictNormalHom + (abstractFixedFieldCyclotomicFiniteGaloisLayer H E) + σ) := by + let : Normal ℚ E := E.isGalois.to_normal + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H.field + let U := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (rationalCyclotomicFieldInertia_le H.field) + let T := rationalCyclotomicZHatField + let P : IntermediateField F U := + abstractFixedFieldCyclotomicFiniteLayer H E + let : Algebra T U := + abstractFixedFieldCyclotomicCompositum_algebra H + let : IsScalarTower ℚ T U := + abstractFixedFieldCyclotomicCompositum_scalarTower H + let : Algebra E P := + abstractFixedFieldCyclotomicFiniteLayer_layerAlgebra H E + let : IsScalarTower ℚ E P := + abstractFixedFieldCyclotomicFiniteLayer_layerScalarTower H E + let : IsAbelianGalois F P := by + change IsAbelianGalois F + (abstractFixedFieldCyclotomicFiniteLayer H E) + exact + abstractFixedFieldCyclotomicFiniteLayer_isAbelianGalois H E + let : Normal F P := IsGalois.to_normal + apply AlgEquiv.ext + intro x + exact + restrictNormalHom_abstractFixedFieldCyclotomicRestriction_pointwise + H E σ x + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/FiniteGaloisRealizationCore.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/FiniteGaloisRealizationCore.lean index 73951e8..edb78f8 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/FiniteGaloisRealizationCore.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/FiniteGaloisRealizationCore.lean @@ -15,6 +15,7 @@ import ClassFieldTheory.LocalClassFieldTheory.Finite.LocalReciprocity.FixedField import ClassFieldTheory.LocalClassFieldTheory.Finite.LocalReciprocity.FixedFieldIntrinsicReciprocity.BaseComparison.IntrinsicBaseEquivalence import ValuedFieldTheory.Valuation.Completion.AbsoluteValueExtensions + set_option autoImplicit false /-! @@ -431,9 +432,16 @@ noncomputable def numberFieldTowerSeparableClosureToBaseSubgroup : (numberFieldTowerBaseSubgroup K L).toSubgroup := by let _ : Algebra K (SeparableClosure ℚ) := numberFieldTowerSeparableClosureBaseAlgebra K L - refine + exact { toFun := fun σ => - ⟨AlgEquiv.restrictScalars ℚ σ, ?_⟩ + ⟨AlgEquiv.restrictScalars ℚ σ, by + change + AlgEquiv.restrictScalars ℚ σ ∈ + (numberFieldTowerBaseField K L).fixingSubgroup + rw [IntermediateField.mem_fixingSubgroup_iff] + intro x hx + obtain ⟨y, rfl⟩ := hx + exact σ.commutes y⟩ map_one' := by apply Subtype.ext rfl @@ -441,13 +449,6 @@ noncomputable def numberFieldTowerSeparableClosureToBaseSubgroup : intro σ τ apply Subtype.ext rfl } - change - AlgEquiv.restrictScalars ℚ σ ∈ - (numberFieldTowerBaseField K L).fixingSubgroup - rw [IntermediateField.mem_fixingSubgroup_iff] - intro x hx - obtain ⟨y, rfl⟩ := hx - exact σ.commutes y /-- The compatible `K`-absolute Galois group is exactly the fixing subgroup of the embedded copy of `K` inside the rational absolute diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalHilbertSymbol/FinitePlaceFiniteSupport.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalHilbertSymbol/FinitePlaceFiniteSupport.lean index 9f029f0..a47f31b 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalHilbertSymbol/FinitePlaceFiniteSupport.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalHilbertSymbol/FinitePlaceFiniteSupport.lean @@ -6,6 +6,8 @@ Authors: Naganori Yamaguchi (assisted by OpenAI Codex) import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalHilbertSymbol.FinitePlaceCharacterComparison import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.FiniteIdeleArtin +import Mathlib.Algebra.FiniteSupport.Basic + set_option autoImplicit false diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturality.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturality.lean index 974d793..dfea338 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturality.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturality.lean @@ -4,19 +4,11 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.AbstractFixedFieldGlobalNormResidue -import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.TowerAlgEquivNaturality +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidueNaturalityTowerNorm -set_option autoImplicit false -/-! -# Naturality of the global norm-residue symbol +set_option autoImplicit false -This file records the same-base restriction specialization of abstract -norm-residue naturality in the rational absolute class formation. All -closed subgroups remain in one fixed separable-closure ambient, so the -statement is directly usable by fixed-field overextension arguments. --/ open scoped IsMulCommutative @@ -34,2834 +26,11 @@ open RamificationTheory universe u -@[instance_reducible] -private noncomputable def naturalityIdeleClassCommGroup - (F : Type) [Field F] [NumberField F] : CommGroup (IdeleClassGroup F) := - QuotientGroup.Quotient.commGroup (IdeleGroup.principalSubgroup F) - -attribute [local instance] naturalityIdeleClassCommGroup - -local instance ideleClassGroupIsMulCommutative - {F : Type} [Field F] [NumberField F] - : IsMulCommutative (IdeleClassGroup F) := - ⟨⟨fun a b => mul_comm a b⟩⟩ - -local instance ideleClassSubgroupNormal - {F : Type} [Field F] [NumberField F] - (N : Subgroup (IdeleClassGroup F)) : N.Normal := - N.normal_of_isMulCommutative - - -/-- Two finite Galois subextensions with the same underlying closed subgroup -are equal; the remaining structure fields are proof-irrelevant. -/ -private theorem finiteGaloisSubextension_eq_of_field_eq - {G : Type u} [Group G] [TopologicalSpace G] - {K : ClosedSubgroup G} - (A B : FiniteGaloisSubextension K) - (h : A.field = B.field) : - A = B := by - cases A with - | mk A hA nA fA => - cases B with - | mk B hB nB fB => - dsimp only at h - cases h - rfl - -/-- Rebase a finite Galois subextension along equality of its bundled base. -The field equality is the only data component; the remaining fields are -proof-irrelevant. -/ -private theorem finiteGaloisSubextension_transport_eq_of_field_eq - {G : Type u} [Group G] [TopologicalSpace G] - {A B : FiniteAbstractField G} - (hAB : A = B) - (P : FiniteGaloisSubextension A.field) - (Q : FiniteGaloisSubextension B.field) - (hfield : P.field = Q.field) : - Eq.mp - (congrArg - (fun X : FiniteAbstractField G => - FiniteGaloisSubextension X.field) - hAB) - P = Q := by - cases hAB - exact finiteGaloisSubextension_eq_of_field_eq P Q hfield - -/-- Transporting an additive equivalence between rational ambient fixed -subgroups does not change the underlying direct-limit class. -/ -private theorem rationalAmbientFixedAddEquiv_transport_apply_val - {A B : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)} - (hAB : A = B) - {X : Type} [AddGroup X] - (e : X ≃+ - ambientFixedAddSubgroup rationalIdeleClassRepresentation A.field) - (x : X) : - ((Eq.mp - (congrArg - (fun Y : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - X ≃+ ambientFixedAddSubgroup - rationalIdeleClassRepresentation Y.field) - hAB) - e x).1) = - (e x).1 := by - cases hAB - rfl - -/-- Changing only the bundled subgroup of an additive subgroup element -does not change its value in the ambient group. -/ -private theorem addSubgroupCongr_apply_val - {A : Type} [AddGroup A] - {H K : AddSubgroup A} - (h : H = K) (x : H) : - ((AddEquiv.addSubgroupCongr h x).1 : A) = x.1 := by - cases h - rfl - -/-- Transporting an idele class along a field equality and the corresponding -algebra equivalence leaves its rational direct-limit representative fixed. -/ -private theorem rationalIdeleClassEquivFixed_congr_apply_val - {A B : IntermediateField ℚ (SeparableClosure ℚ)} - [FiniteDimensional ℚ A] [FiniteDimensional ℚ B] - (h : A = B) - (e : B ≃ₐ[ℚ] A) - (he : e.trans (IntermediateField.equivOfEq h) = - (AlgEquiv.refl : B ≃ₐ[ℚ] B)) - (c : Additive (IdeleClassGroup B)) : - ((rationalIdeleClassEquivFixed A) - (MulEquiv.toAdditive (ideleClassCongr e) c)).1 = - ((rationalIdeleClassEquivFixed B) c).1 := by - cases h - have he' : e = AlgEquiv.refl := by - apply AlgEquiv.ext - intro x - have hx := DFunLike.congr_fun he x - change e x = x at hx - exact hx - rw [he'] - have hc : - MulEquiv.toAdditive - (ideleClassCongr (AlgEquiv.refl : A ≃ₐ[ℚ] A)) c = c := by - cases c with - | ofMul c => - exact congrArg Additive.ofMul (ideleClassCongr_refl c) - rw [hc] - -/-- Transporting the target intermediate field of a base-field equivalence -preserves its rational fixed-part representative. -/ -private theorem rationalIdeleClassEquivFixed_transport_baseEquiv_val - {T : Type} [Field T] [NumberField T] - {A B : IntermediateField ℚ (SeparableClosure ℚ)} - [FiniteDimensional ℚ A] [FiniteDimensional ℚ B] - (h : A = B) (e : T ≃ₐ[ℚ] B) - (c : IdeleClassGroup T) : - ((rationalIdeleClassEquivFixed A) - (Additive.ofMul - (ideleClassCongr (K := T) (M := A) - (e.trans (IntermediateField.equivOfEq h).symm) c))).1 = - ((rationalIdeleClassEquivFixed B) - (Additive.ofMul (ideleClassCongr (K := T) (M := B) e c))).1 := by - cases h - have he : - e.trans (IntermediateField.equivOfEq (rfl : A = A)).symm = e := by - ext x - rfl - rw [he] - -/-- Equality of the lower and upper closed subgroups transports the raw -extension quotient without exposing dependent rewrites to clients. -/ -private def extensionQuotientMulEquivOfEq - {G : Type u} [Group G] [TopologicalSpace G] - {H H' J J' : ClosedSubgroup G} - (hH : H = H') (hJ : J = J') - (hJH : J.toSubgroup ≤ H.toSubgroup) - (hJH' : J'.toSubgroup ≤ H'.toSubgroup) - [(CyclicCohomology.extensionSubgroup H J hJH).Normal] - [(CyclicCohomology.extensionSubgroup H' J' hJH').Normal] : - (H.toSubgroup ⧸ CyclicCohomology.extensionSubgroup H J hJH) ≃* - (H'.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H' J' hJH') := by - cases hH - cases hJ - exact MulEquiv.refl _ - -/-- The quotient transport sends a quotient representative to the same -ambient group element, rebundled in the equal lower subgroup. -/ -@[simp] -private theorem extensionQuotientMulEquivOfEq_mk - {G : Type u} [Group G] [TopologicalSpace G] - {H H' J J' : ClosedSubgroup G} - (hH : H = H') (hJ : J = J') - (hJH : J.toSubgroup ≤ H.toSubgroup) - (hJH' : J'.toSubgroup ≤ H'.toSubgroup) - [(CyclicCohomology.extensionSubgroup H J hJH).Normal] - [(CyclicCohomology.extensionSubgroup H' J' hJH').Normal] - (σ : H.toSubgroup) : - extensionQuotientMulEquivOfEq hH hJ hJH hJH' - (QuotientGroup.mk σ) = - QuotientGroup.mk - ((MulEquiv.subgroupCongr - (congrArg ClosedSubgroup.toSubgroup hH)) σ) := by - cases hH - cases hJ - rfl - -/-- Rebundling an element along equality of closed subgroups preserves its -underlying ambient group element. -/ -private theorem closedSubgroupCongr_apply_val - {G : Type u} [Group G] [TopologicalSpace G] - {H H' : ClosedSubgroup G} - (hH : H = H') (σ : H.toSubgroup) : - (((MulEquiv.subgroupCongr - (congrArg ClosedSubgroup.toSubgroup hH)) σ).1 : G) = σ.1 := by - cases hH - rfl - -/-- Rebase an abelianized extension-quotient equivalence together with its -finite abstract base. -/ -private def abelianizedExtensionQuotientAddEquiv_transportBase - {G : Type u} [Group G] [TopologicalSpace G] - {A B : FiniteAbstractField G} - (hAB : A = B) - (P : FiniteGaloisSubextension A.field) - {X : Type} [AddGroup X] - (e : Additive (Abelianization P.extensionQuotient) ≃+ X) : - Additive - (Abelianization - (Eq.mp - (congrArg - (fun Y : FiniteAbstractField G => - FiniteGaloisSubextension Y.field) - hAB) - P).extensionQuotient) ≃+ X := by - cases hAB - exact e - -/-- Rebase an abelianized equivalence along equality of finite Galois -subextensions over a fixed abstract base. -/ -private def abelianizedExtensionQuotientAddEquiv_transportExtension - {G : Type u} [Group G] [TopologicalSpace G] - {K : ClosedSubgroup G} - {P Q : FiniteGaloisSubextension K} - (hPQ : P = Q) - {X : Type} [AddGroup X] - (e : Additive (Abelianization P.extensionQuotient) ≃+ X) : - Additive (Abelianization Q.extensionQuotient) ≃+ X := by - cases hPQ - exact e - -/-- The explicit quotient equivalence induced by rebasing a finite Galois -subextension. -/ -private def extensionQuotientMulEquiv_transportFiniteGalois - {G : Type u} [Group G] [TopologicalSpace G] - {A B : FiniteAbstractField G} - (hAB : A = B) - (P : FiniteGaloisSubextension A.field) - {Q : FiniteGaloisSubextension B.field} - (hPQ : - Eq.mp - (congrArg - (fun Y : FiniteAbstractField G => - FiniteGaloisSubextension Y.field) - hAB) - P = Q) : - Q.extensionQuotient ≃* P.extensionQuotient := by - cases hAB - cases hPQ - exact MulEquiv.refl _ - -/-- Quotient rebasing sends a canonical representative to the same ambient -group element rebundled in the old base subgroup. -/ -@[simp] -private theorem extensionQuotientMulEquiv_transportFiniteGalois_mk - {G : Type u} [Group G] [TopologicalSpace G] - {A B : FiniteAbstractField G} - (hAB : A = B) - (P : FiniteGaloisSubextension A.field) - {Q : FiniteGaloisSubextension B.field} - (hPQ : - Eq.mp - (congrArg - (fun Y : FiniteAbstractField G => - FiniteGaloisSubextension Y.field) - hAB) - P = Q) - (σ : B.field.toSubgroup) : - extensionQuotientMulEquiv_transportFiniteGalois hAB P hPQ - (Q.extensionQuotientMk σ) = - P.extensionQuotientMk - ((MulEquiv.subgroupCongr - (congrArg ClosedSubgroup.toSubgroup - (congrArg FiniteAbstractField.field hAB).symm)) σ) := by - cases hAB - cases hPQ - rfl - -/-- Abelianization commutes with simultaneous transport of the abstract base -and its finite Galois subextension. -/ -private theorem abelianizedCanonicalEquiv_transportFiniteGalois - {G : Type u} [Group G] [TopologicalSpace G] - {A B : FiniteAbstractField G} - (hAB : A = B) - (P : FiniteGaloisSubextension A.field) - {Q : FiniteGaloisSubextension B.field} - (hPQ : - Eq.mp - (congrArg - (fun Y : FiniteAbstractField G => - FiniteGaloisSubextension Y.field) - hAB) - P = Q) - {X : Type} [CommGroup X] - (e : P.extensionQuotient ≃* X) : - abelianizedExtensionQuotientAddEquiv_transportExtension hPQ - (abelianizedExtensionQuotientAddEquiv_transportBase - hAB P - (MulEquiv.toAdditive - (e.abelianizationCongr.trans - (Abelianization.equivOfComm : X ≃* Abelianization X).symm))) = - MulEquiv.toAdditive - (((extensionQuotientMulEquiv_transportFiniteGalois - hAB P hPQ).trans e).abelianizationCongr.trans - (Abelianization.equivOfComm : X ≃* Abelianization X).symm) := by - cases hAB - cases hPQ - rfl - -/-- Package the entire rational finite norm-residue evaluation so that its -dependent base, extension, quotient and comparison maps move together. -/ -private def rationalFiniteNormResidueValue - (K : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (L : FiniteGaloisSubextension K.field) - {C X : Type} [AddGroup C] [AddGroup X] - (eIdele : C ≃+ - ambientFixedAddSubgroup rationalIdeleClassRepresentation K.field) - (eGalois : Additive (Abelianization L.extensionQuotient) ≃+ X) - (c : C) : X := by - letI : - Finite - (K.field.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - K.field L.field L.below) := - L.finite - exact - eGalois - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - K L - (finiteNormClass rationalIdeleClassRepresentation - K.field L.field L.below (eIdele c))) - -/-- The packaged norm-residue value is invariant under rebasing the finite -abstract field together with all dependent data. -/ -private theorem rationalFiniteNormResidueValue_transportBase - {A B : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)} - (hAB : A = B) - (P : FiniteGaloisSubextension A.field) - {C X : Type} [AddGroup C] [AddGroup X] - (eIdele : C ≃+ - ambientFixedAddSubgroup rationalIdeleClassRepresentation A.field) - (eGalois : Additive (Abelianization P.extensionQuotient) ≃+ X) - (c : C) : - rationalFiniteNormResidueValue A P eIdele eGalois c = - rationalFiniteNormResidueValue B - (Eq.mp - (congrArg - (fun Y : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension Y.field) - hAB) - P) - (Eq.mp - (congrArg - (fun Y : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - C ≃+ ambientFixedAddSubgroup - rationalIdeleClassRepresentation Y.field) - hAB) - eIdele) - (abelianizedExtensionQuotientAddEquiv_transportBase - hAB P eGalois) - c := by - cases hAB - rfl - -/-- The packaged norm-residue value is invariant under equality of the finite -Galois subextension. -/ -private theorem rationalFiniteNormResidueValue_transportExtension - (K : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - {P Q : FiniteGaloisSubextension K.field} - (hPQ : P = Q) - {C X : Type} [AddGroup C] [AddGroup X] - (eIdele : C ≃+ - ambientFixedAddSubgroup rationalIdeleClassRepresentation K.field) - (eGalois : Additive (Abelianization P.extensionQuotient) ≃+ X) - (c : C) : - rationalFiniteNormResidueValue K P eIdele eGalois c = - rationalFiniteNormResidueValue K Q eIdele - (abelianizedExtensionQuotientAddEquiv_transportExtension - hPQ eGalois) - c := by - cases hPQ - rfl - -/-- Evaluation of the canonical abelianization comparison induced by a -multiplicative equivalence into a commutative group. -/ -private theorem abelianizationCongrToComm_apply - {Q R : Type*} [Group Q] [CommGroup R] - (e : Q ≃* R) (q : Q) : - MulEquiv.toAdditive - (e.abelianizationCongr.trans - (Abelianization.equivOfComm : R ≃* Abelianization R).symm) - (Additive.ofMul (Abelianization.of q)) = - Additive.ofMul (e q) := by - apply Additive.toMul.injective - change - (Abelianization.equivOfComm : R ≃* Abelianization R).symm - (e.abelianizationCongr (Abelianization.of q)) = e q - rw [abelianizationCongr_of] - exact - (Abelianization.equivOfComm : R ≃* Abelianization R).symm_apply_apply _ - -/-- Evaluation of the canonical quotient from the abelianization of a -commutative group. -/ -private theorem commutativeAbelianizationEquiv_apply - {Q R : Type*} [CommGroup Q] [Group R] - (e : Q ≃* R) (q : Q) : - MulEquiv.toAdditive - ((Abelianization.equivOfComm : Q ≃* Abelianization Q).symm.trans e) - (Additive.ofMul (Abelianization.of q)) = - Additive.ofMul (e q) := by - apply Additive.toMul.injective - change - e ((Abelianization.equivOfComm : Q ≃* Abelianization Q).symm - (Abelianization.of q)) = e q - exact congrArg e - ((Abelianization.equivOfComm : Q ≃* Abelianization Q).symm_apply_apply q) - -section AbstractFixedFieldInclusion - -variable - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - -local instance naturalityAbstractFixedFieldBaseQuotientFinite : - Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - H.field (le_baseField H.field)) := - H.finite - -local instance naturalityAbstractFixedFieldRelativeQuotientFinite : - Finite - (H.field.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H.field P.field P.below) := - P.finite - -noncomputable local instance - naturalityAbstractFixedFieldFiniteDimensional : - FiniteDimensional ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) := - abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) H.field H.finite - -noncomputable local instance - naturalityAbstractRelativeFixedFieldFiniteDimensional : - FiniteDimensional - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) := - abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) - H.field P.field P.below H.finite P.finite - -local instance naturalityAbstractFixedFieldRelativeScalarTower : - IsScalarTower ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) := - IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) - -noncomputable local instance - naturalityAbstractRelativeFixedFieldAbsoluteFiniteDimensional : - FiniteDimensional ℚ - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) := - FiniteDimensional.trans ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) - -noncomputable local instance naturalityAbstractFixedFieldNumberField : - NumberField - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) := - NumberField.of_module_finite ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) - -noncomputable local instance - naturalityAbstractRelativeFixedFieldNumberField : - NumberField - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) := - NumberField.of_module_finite ℚ - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) - -/-- Use the same direct fixed-field Galois witness as the intrinsic -norm-residue construction. This prevents the dependent Galois-group type -from being synthesized through a second `IsAbelianGalois` instance path. -/ -noncomputable local instance - naturalityAbstractRelativeFixedFieldIsGalois : - IsGalois - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) := - abstractRelativeFixedField_isGalois - ℚ (SeparableClosure ℚ) - H.field P.field P.below P.normal - -noncomputable local instance - naturalityAbstractRelativeFixedFieldIsAbelianGalois : - IsAbelianGalois - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) := - finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois P - -/-- The lower subgroup obtained from the canonical inclusion of an abstract -fixed-field tower is the original lower closed subgroup. -/ -private theorem - numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - numberFieldEmbeddedBaseSubgroup F E j = H.field := by - dsimp only - have hi : - numberFieldEmbeddedLowerEmbedding - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) - ((abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ) = - (abstractFixedField - ℚ (SeparableClosure ℚ) H.field).val := by - ext x - rfl - have hRange : - (numberFieldEmbeddedLowerEmbedding - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) - ((abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ)).fieldRange = - abstractFixedField ℚ (SeparableClosure ℚ) H.field := by - ext x - constructor - · rintro ⟨y, rfl⟩ - change - numberFieldEmbeddedLowerEmbedding - (abstractFixedField ℚ (SeparableClosure ℚ) H.field) - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) - ((abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ) y ∈ - abstractFixedField ℚ (SeparableClosure ℚ) H.field - rw [hi] - exact y.property - · intro hx - refine ⟨⟨x, hx⟩, ?_⟩ - rw [hi] - rfl - rw [numberFieldEmbeddedBaseSubgroup, hRange] - exact - closedFixingSubgroup_abstractFixedField_eq - ℚ (SeparableClosure ℚ) H.field - -/-- The upper subgroup obtained from the canonical inclusion of an abstract -fixed-field tower is the original upper closed subgroup. -/ -private theorem - numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - numberFieldEmbeddedTopSubgroup F E j = P.field := by - dsimp only - rw [numberFieldEmbeddedTopSubgroup] - have hjRangeSelf : - ((abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ).fieldRange = - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below).restrictScalars ℚ := by - ext x - constructor - · rintro ⟨y, rfl⟩ - exact y.property - · intro hx - exact ⟨⟨x, hx⟩, rfl⟩ - have hjRange : - ((abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ).fieldRange = - abstractFixedField ℚ (SeparableClosure ℚ) P.field := by - exact hjRangeSelf.trans - (IntermediateField.extendScalars_restrictScalars - (abstractFixedField_le - ℚ (SeparableClosure ℚ) P.below)) - rw [hjRange] - exact - closedFixingSubgroup_abstractFixedField_eq - ℚ (SeparableClosure ℚ) P.field - -/-- Transport a packaged rational norm-residue value directly from an equal -abstract base to the finite Galois extension underlying `P`. Keeping the two -dependent transports in their own declaration prevents their elaboration cost -from accumulating in the main fixed-field comparison theorem. -/ -private theorem rationalFiniteNormResidueValue_transportToAbstractExtension - {A : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)} - (hAH : A = H) - (L : FiniteGaloisSubextension A.field) - (hLP : - Eq.mp - (congrArg - (fun Y : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension Y.field) - hAH) - L = - P.toFiniteGaloisExtension) - {C X : Type} [AddGroup C] [AddGroup X] - (eIdele : C ≃+ - ambientFixedAddSubgroup rationalIdeleClassRepresentation A.field) - (eGalois : Additive (Abelianization L.extensionQuotient) ≃+ X) - (c : C) : - rationalFiniteNormResidueValue A L eIdele eGalois c = - rationalFiniteNormResidueValue H P.toFiniteGaloisExtension - (Eq.mp - (congrArg - (fun Y : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - C ≃+ ambientFixedAddSubgroup - rationalIdeleClassRepresentation Y.field) - hAH) - eIdele) - (abelianizedExtensionQuotientAddEquiv_transportExtension hLP - (abelianizedExtensionQuotientAddEquiv_transportBase - hAH L eGalois)) - c := by - calc - _ = rationalFiniteNormResidueValue H - (Eq.mp - (congrArg - (fun Y : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension Y.field) - hAH) - L) - (Eq.mp - (congrArg - (fun Y : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - C ≃+ ambientFixedAddSubgroup - rationalIdeleClassRepresentation Y.field) - hAH) - eIdele) - (abelianizedExtensionQuotientAddEquiv_transportBase hAH L eGalois) - c := - rationalFiniteNormResidueValue_transportBase - (A := A) (B := H) (C := C) (X := X) - hAH L eIdele eGalois c - _ = _ := - rationalFiniteNormResidueValue_transportExtension - (K := H) - (P := Eq.mp - (congrArg - (fun Y : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension Y.field) - hAH) - L) - (Q := P.toFiniteGaloisExtension) (C := C) (X := X) - hLP - (Eq.mp - (congrArg - (fun Y : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - C ≃+ ambientFixedAddSubgroup - rationalIdeleClassRepresentation Y.field) - hAH) - eIdele) - (abelianizedExtensionQuotientAddEquiv_transportBase hAH L eGalois) - c - -/-- The packaged value at the literal fixed-field realization is the ambient -fixed-part norm-residue homomorphism evaluated at the same idele class. -/ -private theorem rationalFiniteNormResidueValue_abstractFixedField_eq_ambient - (c : IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) : - rationalFiniteNormResidueValue H P.toFiniteGaloisExtension - (rationalAbstractFixedFieldIdeleClassEquivFixed H.field) - (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P) - (Additive.ofMul c) = - ambientFixedGlobalNormResidueAddMonoidHom H P - (rationalAbstractFixedFieldIdeleClassEquivFixed - H.field (Additive.ofMul c)) := by - let eRec := - rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - H P.toFiniteGaloisExtension - let eGal := - abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P - change - eGal - (eRec - (finiteNormClass rationalIdeleClassRepresentation - H.field P.field P.below - (rationalAbstractFixedFieldIdeleClassEquivFixed - H.field (Additive.ofMul c)))) = - eGal - (eRec - (finiteNormClass rationalIdeleClassRepresentation - H.field P.field P.below - (rationalAbstractFixedFieldIdeleClassEquivFixed - H.field (Additive.ofMul c)))) - rfl - -/-- The packaged norm-residue value for the literal fixed-field realization -is the intrinsic abstract fixed-field norm-residue value. -/ -private theorem rationalFiniteNormResidueValue_abstractFixedField_apply - (c : IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) : - Additive.toMul - (rationalFiniteNormResidueValue H P.toFiniteGaloisExtension - (rationalAbstractFixedFieldIdeleClassEquivFixed H.field) - (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup - H P) - (Additive.ofMul c)) = - abstractFixedFieldGlobalNormResidueMonoidHom H P c := by - let a := - rationalAbstractFixedFieldIdeleClassEquivFixed - H.field (Additive.ofMul c) - have hAbstract := - abstractFixedFieldGlobalNormResidueMonoidHom_fixed_apply H P a - calc - _ = Additive.toMul - (ambientFixedGlobalNormResidueAddMonoidHom H P - (rationalAbstractFixedFieldIdeleClassEquivFixed - H.field (Additive.ofMul c))) := by - exact congrArg Additive.toMul - (rationalFiniteNormResidueValue_abstractFixedField_eq_ambient - (H := H) (P := P) c) - _ = _ := by - simpa only [a, AddEquiv.symm_apply_apply, toMul_ofMul] using - hAbstract.symm - -/-- The finite abstract field reconstructed from the literal fixed-field -inclusion is the original packaged abstract field. Keeping this structure -equality separate avoids repeatedly rebuilding all of its proof fields. -/ -private theorem - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - numberFieldEmbeddedFiniteAbstractField F E j = H := by - dsimp only - exact FiniteAbstractField.eq_of_field_eq _ _ - (numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P) - -/-- Pointwise specification of the idele-class comparison after transporting -the explicitly embedded abstract field to the canonical packaged field. The -transport is kept at the value boundary, so clients never compare the two -dependent additive equivalences themselves. -/ -private theorem - numberFieldEmbeddedIdeleClassEquivAmbientFixed_transport_apply - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (c : Additive - (IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - let hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - Eq.mp - (congrArg - (fun X : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - Additive (IdeleClassGroup F) ≃+ - ambientFixedAddSubgroup - rationalIdeleClassRepresentation X.field) - hHEmbedded) - (numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j) c = - rationalAbstractFixedFieldIdeleClassEquivFixed H.field c := by - dsimp only - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - have hBase : - numberFieldEmbeddedBaseSubgroup F E j = H.field := - numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P - have hHEmbedded : - numberFieldEmbeddedFiniteAbstractField F E j = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - have hFixedBase : - abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup F E j) = F := - congrArg - (abstractFixedField ℚ (SeparableClosure ℚ)) hBase - let eBase : F ≃ₐ[ℚ] F := - (numberFieldEmbeddedAbstractBaseFieldEquiv F E j).trans - (IntermediateField.equivOfEq hFixedBase) - have heBase : - eBase = (AlgEquiv.refl : F ≃ₐ[ℚ] F) := by - apply AlgEquiv.ext - intro x - apply Subtype.ext - change x.1 = x.1 - rfl - let hEmbeddedQuotientFinite := - numberFieldEmbeddedAbsoluteQuotientFinite F E j - let hEmbeddedFixedFiniteDimensional := - numberFieldEmbeddedAbstractFixedFieldFiniteDimensional F E j - apply Subtype.ext - rw [rationalAmbientFixedAddEquiv_transport_apply_val - hHEmbedded - (numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j) c] - dsimp only [numberFieldEmbeddedIdeleClassEquivAmbientFixed] - simp only [AddEquiv.trans_apply] - change - ((rationalIdeleClassEquivFixed - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup F E j))) - (MulEquiv.toAdditive - (ideleClassCongr - (numberFieldEmbeddedAbstractBaseFieldEquiv F E j)) c)).1 = - ((rationalIdeleClassEquivFixed F) c).1 - exact rationalIdeleClassEquivFixed_congr_apply_val - hFixedBase - (numberFieldEmbeddedAbstractBaseFieldEquiv F E j) - heBase c - -/-- Transporting the finite Galois subextension reconstructed from the literal -fixed-field inclusion recovers the canonical subextension packaged by `P`. -This is the sole dependent structure equality used by the later quotient -comparisons. -/ -private theorem - numberFieldEmbeddedFiniteGaloisSubextension_transport_eq - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - let PEmbedded : FiniteGaloisSubextension HEmbedded.field := - numberFieldEmbeddedFiniteGaloisSubextension F E j - let hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - Eq.mp - (congrArg - (fun X : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension X.field) - hHEmbedded) - PEmbedded = - P.toFiniteGaloisExtension := by - dsimp only - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - let PEmbedded : FiniteGaloisSubextension HEmbedded.field := - numberFieldEmbeddedFiniteGaloisSubextension F E j - have hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - exact finiteGaloisSubextension_transport_eq_of_field_eq - hHEmbedded PEmbedded P.toFiniteGaloisExtension - (numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion H P) - -/-- Opaque endpoint for the extension-quotient comparison supplied by the -literal embedding. Its domain is already the canonical quotient of `P`, so -no client has to reconstruct the two subgroup transports. -/ -private noncomputable def - abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - P.toFiniteGaloisExtension.extensionQuotient ≃* - Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - have hBase : - numberFieldEmbeddedBaseSubgroup F E j = H.field := - numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P - have hTop : - numberFieldEmbeddedTopSubgroup F E j = P.field := - numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion H P - letI hAlgebra : Algebra F (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra F E j - let eSep := - numberFieldEmbeddedSeparableClosureEquiv F E j - letI hEmbeddedExtensionNormal : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup F E j) - (numberFieldEmbeddedTopSubgroup F E j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := - numberFieldEmbeddedExtensionSubgroup_normal F E j - exact - P.toFiniteGaloisExtension.extensionQuotientMulEquiv.trans - ((extensionQuotientMulEquivOfEq - hBase.symm hTop.symm P.below - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).trans - (ambientEmbeddedExtensionQuotientEquivGaloisGroup - ℚ F E j eSep)) - -/-- Opaque canonical endpoint for the same quotient, obtained directly from -the abstract fixed-field realization. -/ -private noncomputable def - abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - P.toFiniteGaloisExtension.extensionQuotient ≃* - Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := by - exact - P.toFiniteGaloisExtension.extensionQuotientMulEquiv.trans - (abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) - H.field P.field P.below P.normal) - -/-- Pointwise opaque endpoint of the embedded quotient equivalence. -/ -private noncomputable def - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (q : P.toFiniteGaloisExtension.extensionQuotient) : - Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := - abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv H P q - -/-- Pointwise opaque endpoint of the canonical quotient equivalence. -/ -private noncomputable def - abstractFixedFieldInclusionCanonicalExtensionQuotientValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (q : P.toFiniteGaloisExtension.extensionQuotient) : - Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := - abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv H P q - -/-- Fully applied ambient value of the embedded quotient endpoint. -/ -private noncomputable def - abstractFixedFieldInclusionEmbeddedExtensionQuotientApplyVal - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (q : P.toFiniteGaloisExtension.extensionQuotient) - (x : abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) : SeparableClosure ℚ := - (abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q x : - SeparableClosure ℚ) - -/-- Fully applied ambient value of the canonical quotient endpoint. -/ -private noncomputable def - abstractFixedFieldInclusionCanonicalExtensionQuotientApplyVal - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (q : P.toFiniteGaloisExtension.extensionQuotient) - (x : abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) : SeparableClosure ℚ := - (abstractFixedFieldInclusionCanonicalExtensionQuotientValue H P q x : - SeparableClosure ℚ) - -/-- The ambient Galois value attached to a representative of the canonical -quotient, packaged behind a literal result type. -/ -private noncomputable def - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) : - Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - have hBase : - numberFieldEmbeddedBaseSubgroup F E j = H.field := - numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P - letI hAlgebra : Algebra F (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra F E j - let eSep := - numberFieldEmbeddedSeparableClosureEquiv F E j - letI hEmbeddedExtensionNormal : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup F E j) - (numberFieldEmbeddedTopSubgroup F E j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := - numberFieldEmbeddedExtensionSubgroup_normal F E j - let σEmbedded : - (numberFieldEmbeddedBaseSubgroup F E j).toSubgroup := - (MulEquiv.subgroupCongr - (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ - exact - ambientEmbeddedExtensionQuotientEquivGaloisGroup - ℚ F E j eSep (QuotientGroup.mk σEmbedded) - -/-- Fully applied ambient value of the packaged representative endpoint. -/ -private noncomputable def - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) - (x : abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) : SeparableClosure ℚ := - (abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue H P σ x : - SeparableClosure ℚ) - -/-- Ambient action of the representative after rebundling it in the embedded -base subgroup. -/ -private noncomputable def - abstractFixedFieldInclusionRebasedAutomorphismApplyVal - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) - (x : abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) : SeparableClosure ℚ := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - have hBase : - numberFieldEmbeddedBaseSubgroup F E j = H.field := - numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P - let σEmbedded : - (numberFieldEmbeddedBaseSubgroup F E j).toSubgroup := - (MulEquiv.subgroupCongr - (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ - exact σEmbedded.1.1 (x : SeparableClosure ℚ) - -/-- The embedded quotient endpoint sends a canonical representative to the -packaged ambient value above. -/ -private theorem - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue_mk - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) : - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P - (P.toFiniteGaloisExtension.extensionQuotientMk σ) = - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue H P σ := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - have hBase : - numberFieldEmbeddedBaseSubgroup F E j = H.field := - numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P - have hTop : - numberFieldEmbeddedTopSubgroup F E j = P.field := - numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion H P - let hAlgebra : Algebra F (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra F E j - let eSep := - numberFieldEmbeddedSeparableClosureEquiv F E j - let hEmbeddedExtensionNormal : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup F E j) - (numberFieldEmbeddedTopSubgroup F E j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := - numberFieldEmbeddedExtensionSubgroup_normal F E j - simp only [ - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue, - abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv, - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue, - MulEquiv.trans_apply, - FiniteGaloisSubextension.extensionQuotientMk_apply] - exact congrArg - (ambientEmbeddedExtensionQuotientEquivGaloisGroup ℚ F E j eSep) - (extensionQuotientMulEquivOfEq_mk - hBase.symm hTop.symm P.below - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j) σ) - -/-- The packaged ambient endpoint evaluates to the action of the rebundled -representative. -/ -private theorem - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal_eq_rebased - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) - (x : abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) : - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal H P σ x = - abstractFixedFieldInclusionRebasedAutomorphismApplyVal H P σ x := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - have hBase : - numberFieldEmbeddedBaseSubgroup F E j = H.field := - numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P - let hAlgebra : Algebra F (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra F E j - let eSep := - numberFieldEmbeddedSeparableClosureEquiv F E j - let hEmbeddedExtensionNormal : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup F E j) - (numberFieldEmbeddedTopSubgroup F E j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := - numberFieldEmbeddedExtensionSubgroup_normal F E j - let σEmbedded : - (numberFieldEmbeddedBaseSubgroup F E j).toSubgroup := - (MulEquiv.subgroupCongr - (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ - have hmk := - ambientEmbeddedExtensionQuotientEquivGaloisGroup_mk_apply - ℚ F E j eSep σEmbedded x - change - (ambientEmbeddedExtensionQuotientEquivGaloisGroup - ℚ F E j eSep (QuotientGroup.mk σEmbedded) x : - SeparableClosure ℚ) = - σEmbedded.1.1 (x : SeparableClosure ℚ) at hmk - simpa only [ - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal, - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue, - abstractFixedFieldInclusionRebasedAutomorphismApplyVal] using hmk - -/-- Rebundling the representative does not change its action in the ambient -separable closure. -/ -private theorem - abstractFixedFieldInclusionRebasedAutomorphismApplyVal_eq - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) - (x : abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) : - abstractFixedFieldInclusionRebasedAutomorphismApplyVal H P σ x = - σ.1.1 (x : SeparableClosure ℚ) := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - have hBase : - numberFieldEmbeddedBaseSubgroup F E j = H.field := - numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P - let σEmbedded : - (numberFieldEmbeddedBaseSubgroup F E j).toSubgroup := - (MulEquiv.subgroupCongr - (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ - have hσEmbedded : - (σEmbedded.1 : SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) = σ.1 := - closedSubgroupCongr_apply_val hBase.symm σ - change σEmbedded.1.1 (x : SeparableClosure ℚ) = _ - rw [hσEmbedded] - -/-- The packaged ambient representative acts by the original automorphism on -the underlying separable-closure value. -/ -private theorem - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue_apply - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) - (x : abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) : - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal H P σ x = - σ.1.1 (x : SeparableClosure ℚ) := by - exact - (abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal_eq_rebased - H P σ x).trans - (abstractFixedFieldInclusionRebasedAutomorphismApplyVal_eq H P σ x) - -/-- Evaluation of the embedded quotient endpoint on a canonical quotient -representative, stated only in the ambient separable closure. -/ -private theorem - abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv_mk_val - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) - (x : abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) : - abstractFixedFieldInclusionEmbeddedExtensionQuotientApplyVal H P - (P.toFiniteGaloisExtension.extensionQuotientMk σ) x = - σ.1.1 (x : SeparableClosure ℚ) := by - calc - _ = abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal - H P σ x := by - exact congrArg - (fun g => (g x : SeparableClosure ℚ)) - (abstractFixedFieldInclusionEmbeddedExtensionQuotientValue_mk - H P σ) - _ = _ := - abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue_apply - H P σ x - -/-- Evaluation of the canonical abstract quotient endpoint on a quotient -representative, again exposed only through its ambient value. -/ -private theorem - abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv_mk_val - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) - (x : abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) : - abstractFixedFieldInclusionCanonicalExtensionQuotientApplyVal H P - (P.toFiniteGaloisExtension.extensionQuotientMk σ) x = - σ.1.1 (x : SeparableClosure ℚ) := by - simp only [ - abstractFixedFieldInclusionCanonicalExtensionQuotientApplyVal, - abstractFixedFieldInclusionCanonicalExtensionQuotientValue, - abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv, - MulEquiv.trans_apply, - FiniteGaloisSubextension.extensionQuotientMk_apply] - exact - (abstractExtensionQuotientEquivGaloisGroup_mk_apply_val - ℚ (SeparableClosure ℚ) - H.field P.field P.below P.normal σ x).symm - -/-- The embedded and canonical quotient endpoints agree on each quotient -class. This pointwise boundary is intentionally weaker than equality of the -dependent `MulEquiv` structures. -/ -private theorem - abstractFixedFieldInclusionExtensionQuotientEquiv_apply - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (q : P.toFiniteGaloisExtension.extensionQuotient) : - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q = - abstractFixedFieldInclusionCanonicalExtensionQuotientValue H P q := by - refine P.toFiniteGaloisExtension.extensionQuotient_inductionOn - (motive := fun q => - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q = - abstractFixedFieldInclusionCanonicalExtensionQuotientValue H P q) - q ?_ - intro σ - apply AlgEquiv.ext - intro x - apply Subtype.ext - exact - (abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv_mk_val - H P σ x).trans - (abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv_mk_val - H P σ x).symm - -/-- Opaque quotient endpoint obtained by transporting the explicitly embedded -finite Galois subextension back to the canonical package. -/ -private noncomputable def - abstractFixedFieldInclusionTransportedExtensionQuotientEquiv - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - P.toFiniteGaloisExtension.extensionQuotient ≃* - Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - let PEmbedded : FiniteGaloisSubextension HEmbedded.field := - numberFieldEmbeddedFiniteGaloisSubextension F E j - have hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - have hPEmbedded : - Eq.mp - (congrArg - (fun X : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension X.field) - hHEmbedded) - PEmbedded = - P.toFiniteGaloisExtension := - numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P - exact - (extensionQuotientMulEquiv_transportFiniteGalois - hHEmbedded PEmbedded hPEmbedded).trans - (numberFieldEmbeddedExtensionQuotientEquivGaloisGroup F E j) - -/-- Pointwise opaque endpoint of the transported quotient equivalence. -/ -private noncomputable def - abstractFixedFieldInclusionTransportedExtensionQuotientValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (q : P.toFiniteGaloisExtension.extensionQuotient) : - Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := - abstractFixedFieldInclusionTransportedExtensionQuotientEquiv H P q - -/-- Transporting a canonical representative of the embedded finite Galois -package preserves its Galois value. -/ -private theorem - abstractFixedFieldInclusionTransportedExtensionQuotientValue_mk - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (σ : H.field.toSubgroup) : - abstractFixedFieldInclusionTransportedExtensionQuotientValue H P - (P.toFiniteGaloisExtension.extensionQuotientMk σ) = - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P - (P.toFiniteGaloisExtension.extensionQuotientMk σ) := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - have hBase : - numberFieldEmbeddedBaseSubgroup F E j = H.field := - numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P - have hTop : - numberFieldEmbeddedTopSubgroup F E j = P.field := - numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion H P - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - let PEmbedded : FiniteGaloisSubextension HEmbedded.field := - numberFieldEmbeddedFiniteGaloisSubextension F E j - have hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - have hPEmbedded : - Eq.mp - (congrArg - (fun X : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension X.field) - hHEmbedded) - PEmbedded = - P.toFiniteGaloisExtension := - numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P - let hAlgebra : Algebra F (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra F E j - let eSep := - numberFieldEmbeddedSeparableClosureEquiv F E j - let hEmbeddedExtensionNormal : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup F E j) - (numberFieldEmbeddedTopSubgroup F E j) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := - numberFieldEmbeddedExtensionSubgroup_normal F E j - have hFieldEq : - (congrArg FiniteAbstractField.field hHEmbedded).symm = hBase.symm := - Subsingleton.elim _ _ - simp only [ - abstractFixedFieldInclusionTransportedExtensionQuotientValue, - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue, - abstractFixedFieldInclusionTransportedExtensionQuotientEquiv, - abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv, - MulEquiv.trans_apply, - extensionQuotientMulEquiv_transportFiniteGalois_mk, - FiniteGaloisSubextension.extensionQuotientMk_apply, - numberFieldEmbeddedExtensionQuotientEquivGaloisGroup] - rw [hFieldEq] - change - ambientEmbeddedExtensionQuotientEquivGaloisGroup ℚ F E j eSep - (QuotientGroup.mk - ((MulEquiv.subgroupCongr - (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ)) = _ - exact - (congrArg - (ambientEmbeddedExtensionQuotientEquivGaloisGroup ℚ F E j eSep) - (extensionQuotientMulEquivOfEq_mk - hBase.symm hTop.symm P.below - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j) σ)).symm - -/-- Transporting the embedded finite Galois package preserves the value of -its extension-quotient comparison. -/ -private theorem - abstractFixedFieldInclusionTransportedExtensionQuotientEquiv_apply - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (q : P.toFiniteGaloisExtension.extensionQuotient) : - abstractFixedFieldInclusionTransportedExtensionQuotientValue H P q = - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q := by - refine P.toFiniteGaloisExtension.extensionQuotient_inductionOn - (motive := fun q => - abstractFixedFieldInclusionTransportedExtensionQuotientValue H P q = - abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q) - q ?_ - intro σ - exact abstractFixedFieldInclusionTransportedExtensionQuotientValue_mk - H P σ - -/-- Opaque abelianized equivalence obtained by transporting the explicitly -embedded finite Galois package to the canonical one. -/ -private noncomputable def - abstractFixedFieldInclusionTransportedAbelianizedEquiv - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - Additive - (Abelianization - P.toFiniteGaloisExtension.extensionQuotient) ≃+ - Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - let PEmbedded : FiniteGaloisSubextension HEmbedded.field := - numberFieldEmbeddedFiniteGaloisSubextension F E j - have hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - have hPEmbedded : - Eq.mp - (congrArg - (fun X : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension X.field) - hHEmbedded) - PEmbedded = - P.toFiniteGaloisExtension := - numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P - exact - abelianizedExtensionQuotientAddEquiv_transportExtension hPEmbedded - (abelianizedExtensionQuotientAddEquiv_transportBase - hHEmbedded PEmbedded - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - F E j)) - -/-- Canonical abelianization comparison built from the already transported -opaque extension-quotient endpoint. -/ -private noncomputable def - abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - Additive - (Abelianization - P.toFiniteGaloisExtension.extensionQuotient) ≃+ - Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := by - let Q := - Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) - exact - MulEquiv.toAdditive - ((MulEquiv.abelianizationCongr - (abstractFixedFieldInclusionTransportedExtensionQuotientEquiv H P)).trans - (Abelianization.equivOfComm : Q ≃* Abelianization Q).symm) - -/-- Pointwise opaque value of the transported abelianized equivalence. -/ -private noncomputable def - abstractFixedFieldInclusionTransportedAbelianizedValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (z : Additive - (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : - Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := - abstractFixedFieldInclusionTransportedAbelianizedEquiv H P z - -/-- Pointwise opaque value of the canonical abelianization comparison built -from the transported quotient endpoint. -/ -private noncomputable def - abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (z : Additive - (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : - Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := - abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv H P z - -/-- Pointwise opaque value of the intrinsic abstract fixed-field -abelianization comparison. -/ -private noncomputable def - abstractFixedFieldInclusionCanonicalAbelianizedValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (z : Additive - (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : - Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := - abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P z - -/-- The transported abelianized endpoint agrees pointwise with the canonical -abelianization comparison built from the transported quotient endpoint. -/ -private theorem - abstractFixedFieldInclusionTransportedAbelianizedValue_eq_canonical - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (z : Additive - (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : - abstractFixedFieldInclusionTransportedAbelianizedValue H P z = - abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue - H P z := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - let PEmbedded : FiniteGaloisSubextension HEmbedded.field := - numberFieldEmbeddedFiniteGaloisSubextension F E j - have hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - have hPEmbedded : - Eq.mp - (congrArg - (fun X : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension X.field) - hHEmbedded) - PEmbedded = - P.toFiniteGaloisExtension := - numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P - let qEmbedded : PEmbedded.extensionQuotient ≃* Gal(E / F) := - numberFieldEmbeddedExtensionQuotientEquivGaloisGroup F E j - have hCanonical : - abstractFixedFieldInclusionTransportedAbelianizedEquiv H P = - abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv - H P := by - simpa only [ - abstractFixedFieldInclusionTransportedAbelianizedEquiv, - abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv, - abstractFixedFieldInclusionTransportedExtensionQuotientEquiv, - numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup, - qEmbedded] using - (abelianizedCanonicalEquiv_transportFiniteGalois - hHEmbedded PEmbedded hPEmbedded qEmbedded) - exact DFunLike.congr_fun hCanonical z - -/-- On an abelianization representative, the transported canonical endpoint -is the additive value of the transported quotient endpoint. -/ -private theorem - abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue_of - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (q : P.toFiniteGaloisExtension.extensionQuotient) : - abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue H P - (Additive.ofMul (Abelianization.of q)) = - Additive.ofMul - (abstractFixedFieldInclusionTransportedExtensionQuotientValue - H P q) := by - simpa only [ - abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue, - abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv, - abstractFixedFieldInclusionTransportedExtensionQuotientValue] using - (abelianizationCongrToComm_apply - (abstractFixedFieldInclusionTransportedExtensionQuotientEquiv H P) q) - -/-- On the same representative, the intrinsic fixed-field endpoint is the -additive value of the canonical quotient endpoint. -/ -private theorem - abstractFixedFieldInclusionCanonicalAbelianizedValue_of - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (q : P.toFiniteGaloisExtension.extensionQuotient) : - abstractFixedFieldInclusionCanonicalAbelianizedValue H P - (Additive.ofMul (Abelianization.of q)) = - Additive.ofMul - (abstractFixedFieldInclusionCanonicalExtensionQuotientValue - H P q) := by - let hRawQuotientCommGroup : - CommGroup P.toFiniteGaloisExtension.extensionQuotient := - { (inferInstance : - Group P.toFiniteGaloisExtension.extensionQuotient) with - mul_comm := P.commutative.is_comm.comm } - let qAbstractRaw := - abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv H P - change - MulEquiv.toAdditive - ((Abelianization.equivOfComm : - P.toFiniteGaloisExtension.extensionQuotient ≃* - Abelianization - P.toFiniteGaloisExtension.extensionQuotient).symm.trans - qAbstractRaw) - (Additive.ofMul (Abelianization.of q)) = - Additive.ofMul (qAbstractRaw q) - exact commutativeAbelianizationEquiv_apply qAbstractRaw q - -/-- The canonical abelianization comparison built after transport agrees -pointwise with the intrinsic abstract fixed-field comparison. -/ -private theorem - abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue_eq - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (z : Additive - (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : - abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue H P z = - abstractFixedFieldInclusionCanonicalAbelianizedValue H P z := by - let q : P.toFiniteGaloisExtension.extensionQuotient := - Quotient.out z.toMul - have hz : Additive.ofMul (Abelianization.of q) = z := by - apply Additive.ext - exact Quotient.out_eq' z.toMul - rw [← hz] - calc - _ = Additive.ofMul - (abstractFixedFieldInclusionTransportedExtensionQuotientValue - H P q) := - abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue_of - H P q - _ = Additive.ofMul - (abstractFixedFieldInclusionEmbeddedExtensionQuotientValue - H P q) := - congrArg Additive.ofMul - (abstractFixedFieldInclusionTransportedExtensionQuotientEquiv_apply - H P q) - _ = Additive.ofMul - (abstractFixedFieldInclusionCanonicalExtensionQuotientValue - H P q) := - congrArg Additive.ofMul - (abstractFixedFieldInclusionExtensionQuotientEquiv_apply H P q) - _ = _ := - (abstractFixedFieldInclusionCanonicalAbelianizedValue_of H P q).symm - -/-- The transported abelianized equivalence agrees pointwise with the -intrinsic abstract fixed-field Galois comparison. -/ -private theorem - abstractFixedFieldInclusionTransportedAbelianizedValue_eq - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (z : Additive - (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : - abstractFixedFieldInclusionTransportedAbelianizedValue H P z = - abstractFixedFieldInclusionCanonicalAbelianizedValue H P z := - (abstractFixedFieldInclusionTransportedAbelianizedValue_eq_canonical - H P z).trans - (abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue_eq - H P z) - -/-- Opaque packaged norm-residue value before transporting the explicitly -embedded abstract field and finite Galois package. -/ -private noncomputable def - abstractFixedFieldInclusionEmbeddedNormResidueValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (c : Additive - (IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : - Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - let PEmbedded : FiniteGaloisSubextension HEmbedded.field := - numberFieldEmbeddedFiniteGaloisSubextension F E j - exact - rationalFiniteNormResidueValue HEmbedded PEmbedded - (numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j) - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - F E j) - c - -/-- Opaque packaged value after transporting both dependent structures to -the canonical `H` and `P` endpoints. -/ -private noncomputable def - abstractFixedFieldInclusionTransportedNormResidueValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (c : Additive - (IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : - Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - have hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - let eIdeleEmbedded := - numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j - let eIdeleOverH : - Additive (IdeleClassGroup F) ≃+ - ambientFixedAddSubgroup rationalIdeleClassRepresentation H.field := - Eq.mp - (congrArg - (fun X : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - Additive (IdeleClassGroup F) ≃+ - ambientFixedAddSubgroup - rationalIdeleClassRepresentation X.field) - hHEmbedded) - eIdeleEmbedded - exact - rationalFiniteNormResidueValue H P.toFiniteGaloisExtension - eIdeleOverH - (abstractFixedFieldInclusionTransportedAbelianizedEquiv H P) - c - -/-- Opaque intrinsic packaged norm-residue value at the canonical endpoints. -/ -private noncomputable def - abstractFixedFieldInclusionCanonicalNormResidueValue - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (c : Additive - (IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : - Additive - (Gal( - (abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below) / - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := - rationalFiniteNormResidueValue H P.toFiniteGaloisExtension - (rationalAbstractFixedFieldIdeleClassEquivFixed H.field) - (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P) - c - -/-- Simultaneous transport of the embedded abstract field and finite Galois -package sends the embedded norm-residue value to the transported endpoint. -/ -private theorem - abstractFixedFieldInclusionEmbeddedNormResidueValue_eq_transported - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (c : Additive - (IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : - abstractFixedFieldInclusionEmbeddedNormResidueValue H P c = - abstractFixedFieldInclusionTransportedNormResidueValue H P c := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - let PEmbedded : FiniteGaloisSubextension HEmbedded.field := - numberFieldEmbeddedFiniteGaloisSubextension F E j - have hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - have hPEmbedded : - Eq.mp - (congrArg - (fun X : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - FiniteGaloisSubextension X.field) - hHEmbedded) - PEmbedded = - P.toFiniteGaloisExtension := - numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P - let eIdeleEmbedded := - numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j - let eGaloisEmbedded := - numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup F E j - simpa only [ - abstractFixedFieldInclusionEmbeddedNormResidueValue, - abstractFixedFieldInclusionTransportedNormResidueValue, - abstractFixedFieldInclusionTransportedAbelianizedEquiv, - eIdeleEmbedded, - eGaloisEmbedded] using - (rationalFiniteNormResidueValue_transportToAbstractExtension - (H := H) (P := P) - (A := HEmbedded) - (C := Additive (IdeleClassGroup F)) - (X := Additive Gal(E / F)) - hHEmbedded PEmbedded hPEmbedded - eIdeleEmbedded eGaloisEmbedded c) - -/-- A packaged finite norm-residue value depends only on the value of its -idele comparison at the chosen input and the value of its Galois comparison -at the resulting norm class. -/ -private theorem rationalFiniteNormResidueValue_congr_apply - (K : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (L : FiniteGaloisSubextension K.field) - {C X : Type} [AddGroup C] [AddGroup X] - (eIdele eIdele' : C ≃+ - ambientFixedAddSubgroup rationalIdeleClassRepresentation K.field) - (eGalois eGalois' : - Additive (Abelianization L.extensionQuotient) ≃+ X) - (c : C) - (heIdele : eIdele c = eIdele' c) - (heGalois : ∀ z, eGalois z = eGalois' z) : - rationalFiniteNormResidueValue K L eIdele eGalois c = - rationalFiniteNormResidueValue K L eIdele' eGalois' c := by - unfold rationalFiniteNormResidueValue - rw [heIdele] - exact heGalois _ - -/-- The transported packaged value is the intrinsic canonical packaged value; -only the idele input and the eventual abelianized value are compared. -/ -private theorem - abstractFixedFieldInclusionTransportedNormResidueValue_eq_canonical - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (c : Additive - (IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : - abstractFixedFieldInclusionTransportedNormResidueValue H P c = - abstractFixedFieldInclusionCanonicalNormResidueValue H P c := by - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - let HEmbedded := - numberFieldEmbeddedFiniteAbstractField F E j - have hHEmbedded : HEmbedded = H := - numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P - let eIdeleEmbedded := - numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j - let eIdeleOverH : - Additive (IdeleClassGroup F) ≃+ - ambientFixedAddSubgroup rationalIdeleClassRepresentation H.field := - Eq.mp - (congrArg - (fun X : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => - Additive (IdeleClassGroup F) ≃+ - ambientFixedAddSubgroup - rationalIdeleClassRepresentation X.field) - hHEmbedded) - eIdeleEmbedded - simpa only [ - abstractFixedFieldInclusionTransportedNormResidueValue, - abstractFixedFieldInclusionCanonicalNormResidueValue, - eIdeleEmbedded, - eIdeleOverH] using - (rationalFiniteNormResidueValue_congr_apply - H P.toFiniteGaloisExtension - eIdeleOverH - (rationalAbstractFixedFieldIdeleClassEquivFixed H.field) - (abstractFixedFieldInclusionTransportedAbelianizedEquiv H P) - (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P) - c - (numberFieldEmbeddedIdeleClassEquivAmbientFixed_transport_apply H P c) - (fun z => abstractFixedFieldInclusionTransportedAbelianizedValue_eq - H P z)) - -/-- The explicitly embedded and intrinsic packaged norm-residue values agree. -/ -private theorem - abstractFixedFieldInclusionEmbeddedNormResidueValue_eq - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) - (c : Additive - (IdeleClassGroup - (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : - abstractFixedFieldInclusionEmbeddedNormResidueValue H P c = - abstractFixedFieldInclusionCanonicalNormResidueValue H P c := - (abstractFixedFieldInclusionEmbeddedNormResidueValue_eq_transported - H P c).trans - (abstractFixedFieldInclusionTransportedNormResidueValue_eq_canonical - H P c) - -/-- For the literal fixed fields attached to an abstract finite abelian -extension, the norm-residue map obtained from their canonical inclusion in -the rational separable closure is the intrinsic fixed-field norm-residue -map. -/ -theorem - globalNormResidueMonoidHomOfEmbedding_abstractFixedFieldInclusion - (H : FiniteAbstractField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - (P : FiniteAbelianSubextension H.field) : - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H.field - let E := - abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - globalNormResidueMonoidHomOfEmbedding F E j = - abstractFixedFieldGlobalNormResidueMonoidHom H P := by - dsimp only - apply MonoidHom.ext - intro c - rw [globalNormResidueMonoidHomOfEmbedding_apply] - change - Additive.toMul - (abstractFixedFieldInclusionEmbeddedNormResidueValue - H P (Additive.ofMul c)) = - abstractFixedFieldGlobalNormResidueMonoidHom H P c - calc - _ = Additive.toMul - (abstractFixedFieldInclusionCanonicalNormResidueValue - H P (Additive.ofMul c)) := - congrArg Additive.toMul - (abstractFixedFieldInclusionEmbeddedNormResidueValue_eq - H P (Additive.ofMul c)) - _ = _ := by - simpa only [abstractFixedFieldInclusionCanonicalNormResidueValue] using - (rationalFiniteNormResidueValue_abstractFixedField_apply - (H := H) (P := P) c) - -end AbstractFixedFieldInclusion - -section EmbeddedNumberFieldRestriction - -variable - (K K' L L' : Type) - [Field K] [NumberField K] - [Field K'] [NumberField K'] - [Field L] [NumberField L] - [Field L'] [NumberField L'] - [Algebra K K'] [Algebra K L] [Algebra K L'] - [Algebra K' L'] [Algebra L L'] - [IsScalarTower K K' L'] [IsScalarTower K L L'] - - -/-- Rebracketing the compatible tower does not change its embedded lower -fixing subgroup. -/ -private theorem numberFieldEmbeddedBaseSubgroup_baseChange_eq - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - numberFieldEmbeddedBaseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j) = - numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L')) := by - have hi : - numberFieldEmbeddedLowerEmbedding K K' - (numberFieldEmbeddedLowerEmbedding K' L' j) = - numberFieldEmbeddedLowerEmbedding K L - (j.comp (IsScalarTower.toAlgHom ℚ L L')) := by - ext x - simp only [numberFieldEmbeddedLowerEmbedding, AlgHom.comp_apply, - IsScalarTower.coe_toAlgHom'] - rw [← IsScalarTower.algebraMap_apply K K' L', - ← IsScalarTower.algebraMap_apply K L L'] - simp only [numberFieldEmbeddedBaseSubgroup, hi] - -omit [Field K] [NumberField K] - [Algebra K K'] [Algebra K L'] [IsScalarTower K K' L'] in -/-- The top subgroup of the rebracketed base-change tower is the embedded -fixing subgroup of the intermediate field. -/ -private theorem numberFieldEmbeddedTopSubgroup_baseChange_eq - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - numberFieldEmbeddedTopSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j) = - numberFieldEmbeddedBaseSubgroup K' L' j := by - rfl - -/-- Reidentify the two presentations of the embedded lower fixing subgroup -without transporting dependent subgroup data through an equality. -/ -private noncomputable def numberFieldEmbeddedBaseChangeBaseEquiv - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - (numberFieldEmbeddedBaseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup ≃* - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup := - MulEquiv.subgroupCongr - (congrArg ClosedSubgroup.toSubgroup - (numberFieldEmbeddedBaseSubgroup_baseChange_eq K K' L L' j)) - -/-- Under the identity equivalence of the two lower fixing subgroups, the -relative subgroup for the base change is exactly the target presentation. -/ -private theorem numberFieldEmbeddedBaseChangeExtensionSubgroup_map_eq - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)) - (numberFieldEmbeddedTopSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j))).map - (numberFieldEmbeddedBaseChangeBaseEquiv K K' L L' j).toMonoidHom = - CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))) - (numberFieldEmbeddedBaseSubgroup K' L' j) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j) := by - let e := numberFieldEmbeddedBaseChangeBaseEquiv K K' L L' j - have hTop : - (numberFieldEmbeddedTopSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup = - (numberFieldEmbeddedBaseSubgroup K' L' j).toSubgroup := - congrArg ClosedSubgroup.toSubgroup - (numberFieldEmbeddedTopSubgroup_baseChange_eq - (K := K) (K' := K') (L' := L') j) - ext x - constructor - · rintro ⟨y, hy, rfl⟩ - change - ((e y : - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup) : - SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) ∈ - (numberFieldEmbeddedBaseSubgroup K' L' j).toSubgroup - dsimp only [e, numberFieldEmbeddedBaseChangeBaseEquiv] - rw [MulEquiv.subgroupCongr_apply, ← hTop] - exact hy - · intro hx - refine ⟨e.symm x, ?_, e.apply_symm_apply x⟩ - change - (((e.symm x : - (numberFieldEmbeddedBaseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup) : - SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) ∈ - (numberFieldEmbeddedTopSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup) - dsimp only [e, numberFieldEmbeddedBaseChangeBaseEquiv] - rw [MulEquiv.subgroupCongr_symm_apply, hTop] - exact hx - -/-- Normality of the relative subgroup between the two embedded base fields -in a finite Galois base change. -/ -private theorem numberFieldEmbeddedBaseChangeExtensionSubgroup_normal - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))) - (numberFieldEmbeddedBaseSubgroup K' L' j) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)).Normal := by - let e := numberFieldEmbeddedBaseChangeBaseEquiv K K' L L' j - have hNormal := - (numberFieldEmbeddedExtensionSubgroup_normal K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)).map - e.toMonoidHom e.surjective - rw [numberFieldEmbeddedBaseChangeExtensionSubgroup_map_eq - K K' L L' j] at hNormal - exact hNormal - -noncomputable local instance - numberFieldEmbeddedBaseChangeExtensionSubgroupNormal - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - (CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))) - (numberFieldEmbeddedBaseSubgroup K' L' j) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)).Normal := - numberFieldEmbeddedBaseChangeExtensionSubgroup_normal K K' L L' j - -/-- Finiteness of the relative quotient between the two embedded base fields -in a finite Galois base change. -/ -private theorem numberFieldEmbeddedBaseChangeExtensionQuotient_finite - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - Finite - ((numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))) - (numberFieldEmbeddedBaseSubgroup K' L' j) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := by - let e := numberFieldEmbeddedBaseChangeBaseEquiv K K' L L' j - let N := - CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)) - (numberFieldEmbeddedTopSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)) - (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)) - let M := - CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))) - (numberFieldEmbeddedBaseSubgroup K' L' j) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j) - let hNNormal : N.Normal := - numberFieldEmbeddedExtensionSubgroup_normal K K' - (numberFieldEmbeddedLowerEmbedding K' L' j) - let hMNormal : M.Normal := - numberFieldEmbeddedBaseChangeExtensionSubgroup_normal K K' L L' j - let hNFinite : - Finite - ((numberFieldEmbeddedBaseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup ⧸ N) := - numberFieldEmbeddedExtensionQuotient_finite K K' - (numberFieldEmbeddedLowerEmbedding K' L' j) - have hmap : N.map e.toMonoidHom = M := - numberFieldEmbeddedBaseChangeExtensionSubgroup_map_eq K K' L L' j - have hle : N ≤ M.comap e.toMonoidHom := by - rw [← hmap] - exact Subgroup.le_comap_map e.toMonoidHom N - let f : - ((numberFieldEmbeddedBaseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup ⧸ N) →* - ((numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup ⧸ M) := - QuotientGroup.map N M e.toMonoidHom hle - have hmk : Function.Surjective - (QuotientGroup.mk ∘ e : - (numberFieldEmbeddedBaseSubgroup K K' - (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup → - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup ⧸ M) := - QuotientGroup.mk_surjective.comp e.surjective - have hsurj : Function.Surjective f := - QuotientGroup.map_surjective_of_surjective - (N := N) M e.toMonoidHom hmk hle - exact Finite.of_surjective f hsurj - -noncomputable local instance - numberFieldEmbeddedBaseChangeExtensionQuotientFinite - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - Finite - ((numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))) - (numberFieldEmbeddedBaseSubgroup K' L' j) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := - numberFieldEmbeddedBaseChangeExtensionQuotient_finite K K' L L' j - -/-- Reuse the canonical absolute fixed-field witness for the lower embedded -tower. The base-change relative witness below needs this exact instance path -when forming the absolute finite-dimensional tower. -/ -noncomputable local instance - numberFieldEmbeddedBaseChangeBaseFixedFieldFiniteDimensional - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - FiniteDimensional ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L')))) := - numberFieldEmbeddedAbstractFixedFieldFiniteDimensional K L - (j.comp (IsScalarTower.toAlgHom ℚ L L')) - -noncomputable local instance - numberFieldEmbeddedBaseChangeRelativeFixedFieldFiniteDimensional - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - FiniteDimensional - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L')))) - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := - abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))) - (numberFieldEmbeddedBaseSubgroup K' L' j) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j) - (numberFieldEmbeddedAbsoluteQuotientFinite K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))) - (numberFieldEmbeddedBaseChangeExtensionQuotientFinite K K' L L' j) - -local instance - numberFieldEmbeddedBaseChangeRelativeFixedFieldScalarTower - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - IsScalarTower ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L')))) - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := - IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) - -noncomputable local instance - numberFieldEmbeddedBaseChangeRelativeFixedFieldAbsoluteFiniteDimensional - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - FiniteDimensional ℚ - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := - FiniteDimensional.trans ℚ - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L')))) - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) - -noncomputable local instance - numberFieldEmbeddedBaseChangeRelativeFixedFieldNumberField - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - NumberField - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := - NumberField.of_module_finite ℚ - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) - -noncomputable local instance - numberFieldEmbeddedBaseChangeRelativeFixedFieldIsGalois - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - IsGalois - (abstractFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L')))) - (abstractRelativeFixedField ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := - abstractRelativeFixedField_isGalois - ℚ (SeparableClosure ℚ) - (numberFieldEmbeddedBaseSubgroup K L - (j.comp (IsScalarTower.toAlgHom ℚ L L'))) - (numberFieldEmbeddedBaseSubgroup K' L' j) - (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j) - (numberFieldEmbeddedBaseChangeExtensionSubgroupNormal K K' L L' j) - -/-- In one common rational-separable-closure realization, the canonical -quotient-to-Galois comparisons intertwine abstract restriction with -ordinary restriction of the actual number-field automorphisms. -/ -theorem - numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup_restriction - [FiniteDimensional K L] [IsAbelianGalois K L] - [FiniteDimensional K' L'] [IsAbelianGalois K' L'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) - (z : - Abelianization - (numberFieldEmbeddedFiniteGaloisSubextension - K' L' j).extensionQuotient) : - let jLower : L →ₐ[ℚ] SeparableClosure ℚ := - j.comp (IsScalarTower.toAlgHom ℚ L L') - let H := - numberFieldEmbeddedBaseSubgroup K L jLower - let H' := - numberFieldEmbeddedBaseSubgroup K' L' j - let J := - numberFieldEmbeddedTopSubgroup K L jLower - let J' := - numberFieldEmbeddedTopSubgroup K' L' j - let hH'H := - numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j - let hJ'J := - numberFieldEmbeddedTopSubgroup_le_of_tower K K' L L' j - let hJH := - numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L jLower - let hJ'H' := - numberFieldEmbeddedTopSubgroup_le_baseSubgroup K' L' j - letI _ : - (CyclicCohomology.extensionSubgroup H J hJH).Normal := - numberFieldEmbeddedExtensionSubgroup_normal K L jLower - letI _ : - (CyclicCohomology.extensionSubgroup H' J' hJ'H').Normal := - numberFieldEmbeddedExtensionSubgroup_normal K' L' j - ((AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K)) - (Additive.toMul - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K' L' j (Additive.ofMul z))) = - Additive.toMul - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K L jLower - (MonoidHom.toAdditive - (normResidueNaturalityAbelianizedRestriction - H H' J J' - hJH hJ'H' - hH'H hJ'J) - (Additive.ofMul z))) := by - dsimp only - let jLower : L →ₐ[ℚ] SeparableClosure ℚ := - j.comp (IsScalarTower.toAlgHom ℚ L L') - let H := - numberFieldEmbeddedBaseSubgroup K L jLower - let H' := - numberFieldEmbeddedBaseSubgroup K' L' j - let J := - numberFieldEmbeddedTopSubgroup K L jLower - let J' := - numberFieldEmbeddedTopSubgroup K' L' j - let hH'H := - numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j - let hJ'J := - numberFieldEmbeddedTopSubgroup_le_of_tower K K' L L' j - let hJH := - numberFieldEmbeddedTopSubgroup_le_baseSubgroup - K L jLower - let hJ'H' := - numberFieldEmbeddedTopSubgroup_le_baseSubgroup - K' L' j - let hLowerNormal : - (CyclicCohomology.extensionSubgroup H J hJH).Normal := - numberFieldEmbeddedExtensionSubgroup_normal K L jLower - let hUpperNormal : - (CyclicCohomology.extensionSubgroup H' J' hJ'H').Normal := - numberFieldEmbeddedExtensionSubgroup_normal K' L' j - let qLower := - numberFieldEmbeddedExtensionQuotientEquivGaloisGroup - K L jLower - let qUpper := - numberFieldEmbeddedExtensionQuotientEquivGaloisGroup - K' L' j - let qLowerRaw : - (H.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H J hJH) ≃* - Gal(L / K) := by - exact - { qLower.toEquiv with - map_mul' := fun x y => qLower.map_mul x y } - let qUpperRaw : - (H'.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H' J' hJ'H') ≃* - Gal(L' / K') := by - exact - { qUpper.toEquiv with - map_mul' := fun x y => qUpper.map_mul x y } - let restrictActual : - Gal(L' / K') →* Gal(L / K) := - (AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K) - obtain ⟨q, rfl⟩ := - QuotientGroup.mk_surjective z - obtain ⟨σ, rfl⟩ := - (numberFieldEmbeddedFiniteGaloisSubextension - K' L' j).extensionQuotientMk_surjective q - change - restrictActual - ((Abelianization.equivOfComm (H := Gal(L' / K'))).symm - (qUpperRaw.abelianizationCongr - (Abelianization.of (QuotientGroup.mk σ)))) = - (Abelianization.equivOfComm (H := Gal(L / K))).symm - (qLowerRaw.abelianizationCongr - (normResidueNaturalityAbelianizedRestriction - H H' J J' hJH hJ'H' hH'H hJ'J - (Abelianization.of (QuotientGroup.mk σ)))) - rw [normResidueNaturalityAbelianizedRestriction_of_mk, - abelianizationCongr_of, abelianizationCongr_of] - change - restrictActual (qUpperRaw (QuotientGroup.mk σ)) = - qLowerRaw - (QuotientGroup.mk (Subgroup.inclusion hH'H σ)) - apply AlgEquiv.ext - intro x - apply jLower.injective - let hUpperAlgebra : Algebra K' (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra K' L' j - let eUpper := - numberFieldEmbeddedSeparableClosureEquiv K' L' j - let hLowerAlgebra : Algebra K (SeparableClosure ℚ) := - numberFieldEmbeddedSeparableClosureAlgebra K L jLower - let eLower := - numberFieldEmbeddedSeparableClosureEquiv K L jLower - calc - jLower - (restrictActual - (qUpperRaw (QuotientGroup.mk σ)) x) = - j - ((qUpperRaw (QuotientGroup.mk σ)) - (algebraMap L L' x)) := by - exact congrArg j - (AlgEquiv.restrictNormal_commutes - ((AlgEquiv.restrictScalarsHom K) - (qUpperRaw (QuotientGroup.mk σ))) - L x) - _ = σ.1.1 - (j (algebraMap L L' x)) := by - exact - ambientEmbeddedExtensionQuotientEquivGaloisGroup_mk_apply - ℚ K' L' j eUpper σ (algebraMap L L' x) - _ = (Subgroup.inclusion hH'H σ).1.1 - (jLower x) := rfl - _ = jLower - (qLowerRaw - (QuotientGroup.mk - (Subgroup.inclusion hH'H σ)) x) := by - exact - (ambientEmbeddedExtensionQuotientEquivGaloisGroup_mk_apply - ℚ K L jLower eLower - (Subgroup.inclusion hH'H σ) x).symm - -/-- In a compatible common embedding, the fixed-part relative norm -between two (Galois-related) base fields is the genuine ordinary -idele-class norm. -/ -theorem numberFieldEmbeddedIdeleClassEquivAmbientFixed_relativeNorm - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) - (c : IdeleClassGroup K') : - let jLower : L →ₐ[ℚ] SeparableClosure ℚ := - j.comp (IsScalarTower.toAlgHom ℚ L L') - let H := - numberFieldEmbeddedBaseSubgroup K L jLower - let H' := - numberFieldEmbeddedBaseSubgroup K' L' j - let hH'H := - numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j - letI _ : Finite - (H.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H H' hH'H) := - numberFieldEmbeddedBaseChangeExtensionQuotientFinite - K K' L L' j - relativeNorm rationalIdeleClassRepresentation H H' hH'H - (numberFieldEmbeddedIdeleClassEquivAmbientFixed - K' L' j (Additive.ofMul c)) = - numberFieldEmbeddedIdeleClassEquivAmbientFixed - K L jLower - (Additive.ofMul (_root_.ideleClassNorm K K' c)) := by - intro jLower H H' - let hH'H := - numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j - let hnormal := - numberFieldEmbeddedBaseChangeExtensionSubgroupNormal K K' L L' j - let F := - abstractFixedField ℚ (SeparableClosure ℚ) H - let E := - abstractRelativeFixedField ℚ (SeparableClosure ℚ) hH'H - let _ : - (CyclicCohomology.extensionSubgroup H H' hH'H).Normal := - hnormal - let _ : - Finite - (H.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H H' hH'H) := - numberFieldEmbeddedBaseChangeExtensionQuotientFinite - K K' L L' j - let _ : - Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - H (le_baseField H)) := - numberFieldEmbeddedAbsoluteQuotientFinite K L jLower - let _ : NumberField F := - numberFieldEmbeddedAbstractFixedFieldNumberField K L jLower - let _ : NumberField E := - numberFieldEmbeddedBaseChangeRelativeFixedFieldNumberField - K K' L L' j - let _ : FiniteDimensional ℚ (E.restrictScalars ℚ) := by - change FiniteDimensional ℚ E - exact - numberFieldEmbeddedBaseChangeRelativeFixedFieldAbsoluteFiniteDimensional - K K' L L' j - let _ : NumberField - (abstractFixedField ℚ (SeparableClosure ℚ) H') := - numberFieldEmbeddedAbstractFixedFieldNumberField K' L' j - have hE : - E.restrictScalars ℚ = - abstractFixedField ℚ (SeparableClosure ℚ) H' := - IntermediateField.extendScalars_restrictScalars - (abstractFixedField_le - ℚ (SeparableClosure ℚ) hH'H) - let eRel : - E ≃ₐ[ℚ] - abstractFixedField ℚ (SeparableClosure ℚ) H' := - IntermediateField.equivOfEq hE - let eK : - K ≃ₐ[ℚ] F := - numberFieldEmbeddedAbstractBaseFieldEquiv K L jLower - let eK'Base : - K' ≃ₐ[ℚ] - abstractFixedField ℚ (SeparableClosure ℚ) H' := - numberFieldEmbeddedAbstractBaseFieldEquiv K' L' j - let eK' : K' ≃ₐ[ℚ] E := - eK'Base.trans eRel.symm - have hcompat (x : K) : - eK' (algebraMap K K' x) = - algebraMap F E (eK x) := by - apply eRel.injective - apply Subtype.ext - change - j (algebraMap K' L' (algebraMap K K' x)) = - j (algebraMap L L' (algebraMap K L x)) - rw [← IsScalarTower.algebraMap_apply K K' L', - ← IsScalarTower.algebraMap_apply K L L'] - have hupper : - rationalAbstractRelativeFixedFieldIdeleClassEquivFixed - H H' hH'H - (Additive.ofMul (ideleClassCongr eK' c)) = - numberFieldEmbeddedIdeleClassEquivAmbientFixed - K' L' j (Additive.ofMul c) := by - apply Subtype.ext - change - ((rationalIdeleClassEquivFixed (E.restrictScalars ℚ)) - (Additive.ofMul (ideleClassCongr eK' c))).1 = - ((rationalIdeleClassEquivFixed - (abstractFixedField ℚ (SeparableClosure ℚ) H')) - (Additive.ofMul (ideleClassCongr eK'Base c))).1 - exact rationalIdeleClassEquivFixed_transport_baseEquiv_val - (T := K') (A := E.restrictScalars ℚ) - (B := abstractFixedField ℚ (SeparableClosure ℚ) H') hE eK'Base c - have hrelative := - rationalAbstractRelativeFixedFieldIdeleClassEquivFixed_relativeNorm - H H' hH'H hnormal - (Additive.ofMul (ideleClassCongr eK' c)) - change - relativeNorm rationalIdeleClassRepresentation H H' hH'H - (rationalAbstractRelativeFixedFieldIdeleClassEquivFixed - H H' hH'H - (Additive.ofMul (ideleClassCongr eK' c))) = - rationalAbstractFixedFieldIdeleClassEquivFixed H - (Additive.ofMul - (_root_.ideleClassNorm F E - (ideleClassCongr eK' c))) - at hrelative - calc - relativeNorm rationalIdeleClassRepresentation H H' hH'H - (numberFieldEmbeddedIdeleClassEquivAmbientFixed - K' L' j (Additive.ofMul c)) = - relativeNorm rationalIdeleClassRepresentation H H' hH'H - (rationalAbstractRelativeFixedFieldIdeleClassEquivFixed - H H' hH'H (Additive.ofMul (ideleClassCongr eK' c))) := - congrArg (relativeNorm rationalIdeleClassRepresentation H H' hH'H) - hupper.symm - _ = rationalAbstractFixedFieldIdeleClassEquivFixed H - (Additive.ofMul - (_root_.ideleClassNorm F E (ideleClassCongr eK' c))) := hrelative - _ = numberFieldEmbeddedIdeleClassEquivAmbientFixed - K L jLower (Additive.ofMul (_root_.ideleClassNorm K K' c)) := by - change - rationalAbstractFixedFieldIdeleClassEquivFixed H - (Additive.ofMul - (_root_.ideleClassNorm F E (ideleClassCongr eK' c))) = - rationalAbstractFixedFieldIdeleClassEquivFixed H - (Additive.ofMul - (ideleClassCongr eK (_root_.ideleClassNorm K K' c))) - apply congrArg (rationalAbstractFixedFieldIdeleClassEquivFixed H) - apply congrArg Additive.ofMul - exact - (ideleClassCongr_ideleClassNorm - (K := K) (K' := F) (L := K') (L' := E) eK eK' hcompat c).symm - -/-- For one common compatible embedding of a Galois base-change -diamond, the genuine global norm-residue maps commute with ordinary -idele-class norm and actual restriction of automorphisms. -/ -theorem globalNormResidueMonoidHomOfEmbedding_norm_restriction - [FiniteDimensional K L] [IsAbelianGalois K L] - [FiniteDimensional K' L'] [IsAbelianGalois K' L'] - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) : - let jLower : L →ₐ[ℚ] SeparableClosure ℚ := - j.comp (IsScalarTower.toAlgHom ℚ L L') - ((AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K)).comp - (globalNormResidueMonoidHomOfEmbedding K' L' j) = - (globalNormResidueMonoidHomOfEmbedding K L jLower).comp - (_root_.ideleClassNorm K K') := by - dsimp only - let jLower : L →ₐ[ℚ] SeparableClosure ℚ := - j.comp (IsScalarTower.toAlgHom ℚ L L') - let H := - numberFieldEmbeddedBaseSubgroup K L jLower - let H' := - numberFieldEmbeddedBaseSubgroup K' L' j - let J := - numberFieldEmbeddedTopSubgroup K L jLower - let J' := - numberFieldEmbeddedTopSubgroup K' L' j - let hJH := - numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L jLower - let hJ'H' := - numberFieldEmbeddedTopSubgroup_le_baseSubgroup K' L' j - let hH'H := - numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j - let hJ'J := - numberFieldEmbeddedTopSubgroup_le_of_tower K K' L L' j - let _ : - (CyclicCohomology.extensionSubgroup H J hJH).Normal := - numberFieldEmbeddedExtensionSubgroup_normal K L jLower - let _ : - Finite - (H.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H J hJH) := - numberFieldEmbeddedExtensionQuotient_finite K L jLower - let _ : - (CyclicCohomology.extensionSubgroup H' J' hJ'H').Normal := - numberFieldEmbeddedExtensionSubgroup_normal K' L' j - let _ : - Finite - (H'.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H' J' hJ'H') := - numberFieldEmbeddedExtensionQuotient_finite K' L' j - let hHH'finite := - numberFieldEmbeddedBaseChangeExtensionQuotientFinite K K' L L' j - let T : - FiniteAbstractFieldExtension - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := - { field := numberFieldEmbeddedFiniteAbstractField K' L' j - base := numberFieldEmbeddedFiniteAbstractField K L jLower - below := hH'H - finiteQuotient := hHH'finite } - let hTBaseNormal : - (CyclicCohomology.extensionSubgroup - T.base.field J hJH).Normal := by - change - (CyclicCohomology.extensionSubgroup H J hJH).Normal - exact numberFieldEmbeddedExtensionSubgroup_normal K L jLower - let hTBaseFinite : - Finite - (T.base.field.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - T.base.field J hJH) := by - change - Finite - (H.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H J hJH) - exact numberFieldEmbeddedExtensionQuotient_finite K L jLower - let hTFieldNormal : - (CyclicCohomology.extensionSubgroup - T.field.field J' hJ'H').Normal := by - change - (CyclicCohomology.extensionSubgroup H' J' hJ'H').Normal - exact numberFieldEmbeddedExtensionSubgroup_normal K' L' j - let hTFieldFinite : - Finite - (T.field.field.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup - T.field.field J' hJ'H') := by - change - Finite - (H'.toSubgroup ⧸ - CyclicCohomology.extensionSubgroup H' J' hJ'H') - exact numberFieldEmbeddedExtensionQuotient_finite K' L' j - let restrictActual : - Gal(L' / K') →* Gal(L / K) := - (AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K) - apply MonoidHom.ext - intro c - let a := - numberFieldEmbeddedIdeleClassEquivAmbientFixed - K' L' j (Additive.ofMul c) - have hnat := - DegreeData.normResidueNaturality_norm_restriction - (D := rationalCyclotomicDegreeData) - (A := rationalIdeleClassRepresentation) - (v := rationalCyclotomicIdeleClassValuationData) - (hcf := rationalIdeleClassRepresentation_satisfiesClassFieldAxiom) - (T := T) (L := J) (L' := J') - (hLnormal := hTBaseNormal) - (hL'normal := hTFieldNormal) - (hLKfinite := hTBaseFinite) - (hL'K'finite := hTFieldFinite) - hJH hJ'H' hJ'J - have hnatc := - DFunLike.congr_fun hnat - (finiteNormClass rationalIdeleClassRepresentation - H' J' hJ'H' a) - change _ = - rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - T.base - { field := J - below := hJH - normal := hTBaseNormal - finite := hTBaseFinite } - (finiteReciprocityNaturalityNormMap - rationalIdeleClassRepresentation - T.base.field T.field.field J J' - hJH hJ'H' T.below hJ'J - (finiteNormClass rationalIdeleClassRepresentation - T.field.field J' hJ'H' a)) at hnatc - rw [finiteReciprocityNaturalityNormMap_finiteNormClass] - at hnatc - have hnorm : - relativeNorm rationalIdeleClassRepresentation - H H' hH'H a = - numberFieldEmbeddedIdeleClassEquivAmbientFixed - K L jLower - (Additive.ofMul (_root_.ideleClassNorm K K' c)) := - numberFieldEmbeddedIdeleClassEquivAmbientFixed_relativeNorm - K K' L L' j c - calc - restrictActual - (globalNormResidueMonoidHomOfEmbedding K' L' j c) = - restrictActual - (Additive.toMul - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K' L' j - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (numberFieldEmbeddedFiniteAbstractField K' L' j) - (numberFieldEmbeddedFiniteGaloisSubextension K' L' j) - (finiteNormClass rationalIdeleClassRepresentation - H' J' hJ'H' a)))) := by - rw [globalNormResidueMonoidHomOfEmbedding_apply] - _ = - Additive.toMul - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K L jLower - (MonoidHom.toAdditive - (normResidueNaturalityAbelianizedRestriction - H H' J J' hJH hJ'H' hH'H hJ'J) - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (numberFieldEmbeddedFiniteAbstractField K' L' j) - (numberFieldEmbeddedFiniteGaloisSubextension K' L' j) - (finiteNormClass rationalIdeleClassRepresentation - H' J' hJ'H' a)))) := by - exact - numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup_restriction - K K' L L' j _ - _ = - Additive.toMul - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K L jLower - (rationalCyclotomicDegreeData.normResidueSymbol - rationalIdeleClassRepresentation - rationalCyclotomicIdeleClassValuationData - rationalIdeleClassRepresentation_satisfiesClassFieldAxiom - (numberFieldEmbeddedFiniteAbstractField K L jLower) - (numberFieldEmbeddedFiniteGaloisSubextension K L jLower) - (finiteNormClass rationalIdeleClassRepresentation - H J hJH - (relativeNorm rationalIdeleClassRepresentation - H H' hH'H a)))) := by - exact congrArg - (fun z => - Additive.toMul - (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup - K L jLower z)) - hnatc - _ = - globalNormResidueMonoidHomOfEmbedding K L jLower - (_root_.ideleClassNorm K K' c) := by - rw [hnorm, - ← globalNormResidueMonoidHomOfEmbedding_apply] -end EmbeddedNumberFieldRestriction +attribute [local instance] + naturalityIdeleClassCommGroup + ideleClassGroupIsMulCommutative + ideleClassSubgroupNormal variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityAbelianValues.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityAbelianValues.lean new file mode 100644 index 0000000..b6abdd5 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityAbelianValues.lean @@ -0,0 +1,429 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidueNaturalityExtensionValues + + +set_option autoImplicit false + + +open scoped IsMulCommutative + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +universe u + + +section AbstractFixedFieldInclusion + +variable + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + +attribute [local instance] + naturalityIdeleClassCommGroup + ideleClassGroupIsMulCommutative + ideleClassSubgroupNormal + naturalityAbstractFixedFieldBaseQuotientFinite + naturalityAbstractFixedFieldRelativeQuotientFinite + naturalityAbstractFixedFieldFiniteDimensional + naturalityAbstractRelativeFixedFieldFiniteDimensional + naturalityAbstractFixedFieldRelativeScalarTower + naturalityAbstractRelativeFixedFieldAbsoluteFiniteDimensional + naturalityAbstractFixedFieldNumberField + naturalityAbstractRelativeFixedFieldNumberField + naturalityAbstractRelativeFixedFieldIsGalois + naturalityAbstractRelativeFixedFieldIsAbelianGalois + + +/-- The additive equivalence from the abelianized extension quotient to the +Galois group of the relative fixed field, transported through its embedding. -/ +noncomputable def + abstractFixedFieldInclusionTransportedAbelianizedEquiv + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + Additive + (Abelianization + P.toFiniteGaloisExtension.extensionQuotient) ≃+ + Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + let PEmbedded : FiniteGaloisSubextension HEmbedded.field := + numberFieldEmbeddedFiniteGaloisSubextension F E j + have hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + have hPEmbedded : + Eq.mp + (congrArg + (fun X : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension X.field) + hHEmbedded) + PEmbedded = + P.toFiniteGaloisExtension := + numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P + exact + abelianizedExtensionQuotientAddEquiv_transportExtension hPEmbedded + (abelianizedExtensionQuotientAddEquiv_transportBase + hHEmbedded PEmbedded + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + F E j)) + +/-- Canonical abelianization comparison built from the already transported +opaque extension-quotient endpoint. -/ +private noncomputable def + abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + Additive + (Abelianization + P.toFiniteGaloisExtension.extensionQuotient) ≃+ + Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := by + let Q := + Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) + exact + MulEquiv.toAdditive + ((MulEquiv.abelianizationCongr + (abstractFixedFieldInclusionTransportedExtensionQuotientEquiv H P)).trans + (Abelianization.equivOfComm : Q ≃* Abelianization Q).symm) + +/-- Pointwise opaque value of the transported abelianized equivalence. -/ +private noncomputable def + abstractFixedFieldInclusionTransportedAbelianizedValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (z : Additive + (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : + Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := + abstractFixedFieldInclusionTransportedAbelianizedEquiv H P z + +/-- Pointwise opaque value of the canonical abelianization comparison built +from the transported quotient endpoint. -/ +private noncomputable def + abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (z : Additive + (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : + Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := + abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv H P z + +/-- Pointwise opaque value of the intrinsic abstract fixed-field +abelianization comparison. -/ +private noncomputable def + abstractFixedFieldInclusionCanonicalAbelianizedValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (z : Additive + (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : + Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := + abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P z + +/-- The transported abelianized endpoint agrees pointwise with the canonical +abelianization comparison built from the transported quotient endpoint. -/ +private theorem + abstractFixedFieldInclusionTransportedAbelianizedValue_eq_canonical + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (z : Additive + (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : + abstractFixedFieldInclusionTransportedAbelianizedValue H P z = + abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue + H P z := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + let PEmbedded : FiniteGaloisSubextension HEmbedded.field := + numberFieldEmbeddedFiniteGaloisSubextension F E j + have hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + have hPEmbedded : + Eq.mp + (congrArg + (fun X : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension X.field) + hHEmbedded) + PEmbedded = + P.toFiniteGaloisExtension := + numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P + let qEmbedded : PEmbedded.extensionQuotient ≃* Gal(E / F) := + numberFieldEmbeddedExtensionQuotientEquivGaloisGroup F E j + have hCanonical : + abstractFixedFieldInclusionTransportedAbelianizedEquiv H P = + abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv + H P := by + simpa only [ + abstractFixedFieldInclusionTransportedAbelianizedEquiv, + abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv, + abstractFixedFieldInclusionTransportedExtensionQuotientEquiv, + numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup, + qEmbedded] using + (abelianizedCanonicalEquiv_transportFiniteGalois + hHEmbedded PEmbedded hPEmbedded qEmbedded) + exact DFunLike.congr_fun hCanonical z + +/-- On an abelianization representative, the transported canonical endpoint +is the additive value of the transported quotient endpoint. -/ +private theorem + abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue_of + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (q : P.toFiniteGaloisExtension.extensionQuotient) : + abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue H P + (Additive.ofMul (Abelianization.of q)) = + Additive.ofMul + (abstractFixedFieldInclusionTransportedExtensionQuotientValue + H P q) := by + simpa only [ + abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue, + abstractFixedFieldInclusionTransportedCanonicalAbelianizedEquiv, + abstractFixedFieldInclusionTransportedExtensionQuotientValue] using + (abelianizationCongrToComm_apply + (abstractFixedFieldInclusionTransportedExtensionQuotientEquiv H P) q) + +/-- On the same representative, the intrinsic fixed-field endpoint is the +additive value of the canonical quotient endpoint. -/ +private theorem + abstractFixedFieldInclusionCanonicalAbelianizedValue_of + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (q : P.toFiniteGaloisExtension.extensionQuotient) : + abstractFixedFieldInclusionCanonicalAbelianizedValue H P + (Additive.ofMul (Abelianization.of q)) = + Additive.ofMul + (abstractFixedFieldInclusionCanonicalExtensionQuotientValue + H P q) := by + let hRawQuotientCommGroup : + CommGroup P.toFiniteGaloisExtension.extensionQuotient := + { (inferInstance : + Group P.toFiniteGaloisExtension.extensionQuotient) with + mul_comm := P.commutative.is_comm.comm } + let qAbstractRaw := + abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv H P + change + MulEquiv.toAdditive + ((Abelianization.equivOfComm : + P.toFiniteGaloisExtension.extensionQuotient ≃* + Abelianization + P.toFiniteGaloisExtension.extensionQuotient).symm.trans + qAbstractRaw) + (Additive.ofMul (Abelianization.of q)) = + Additive.ofMul (qAbstractRaw q) + exact commutativeAbelianizationEquiv_apply qAbstractRaw q + +/-- The canonical abelianization comparison built after transport agrees +pointwise with the intrinsic abstract fixed-field comparison. -/ +private theorem + abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue_eq + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (z : Additive + (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : + abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue H P z = + abstractFixedFieldInclusionCanonicalAbelianizedValue H P z := by + let q : P.toFiniteGaloisExtension.extensionQuotient := + Quotient.out z.toMul + have hz : Additive.ofMul (Abelianization.of q) = z := by + apply Additive.ext + exact Quotient.out_eq' z.toMul + rw [← hz] + calc + _ = Additive.ofMul + (abstractFixedFieldInclusionTransportedExtensionQuotientValue + H P q) := + abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue_of + H P q + _ = Additive.ofMul + (abstractFixedFieldInclusionEmbeddedExtensionQuotientValue + H P q) := + congrArg Additive.ofMul + (abstractFixedFieldInclusionTransportedExtensionQuotientEquiv_apply + H P q) + _ = Additive.ofMul + (abstractFixedFieldInclusionCanonicalExtensionQuotientValue + H P q) := + congrArg Additive.ofMul + (abstractFixedFieldInclusionExtensionQuotientEquiv_apply H P q) + _ = _ := + (abstractFixedFieldInclusionCanonicalAbelianizedValue_of H P q).symm + +/-- The transported abelianized equivalence agrees pointwise with the +intrinsic abstract fixed-field Galois comparison. -/ +theorem + abstractFixedFieldInclusionTransportedAbelianizedValue_eq + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (z : Additive + (Abelianization P.toFiniteGaloisExtension.extensionQuotient)) : + abstractFixedFieldInclusionTransportedAbelianizedValue H P z = + abstractFixedFieldInclusionCanonicalAbelianizedValue H P z := + (abstractFixedFieldInclusionTransportedAbelianizedValue_eq_canonical + H P z).trans + (abstractFixedFieldInclusionTransportedCanonicalAbelianizedValue_eq + H P z) + + +/-- The norm-residue value of an idele class in the Galois group of the +relative fixed field, computed through the embedded number-field realization. -/ +noncomputable def + abstractFixedFieldInclusionEmbeddedNormResidueValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (c : Additive + (IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : + Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + let PEmbedded : FiniteGaloisSubextension HEmbedded.field := + numberFieldEmbeddedFiniteGaloisSubextension F E j + exact + rationalFiniteNormResidueValue HEmbedded PEmbedded + (numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j) + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + F E j) + c + +/-- Opaque packaged value after transporting both dependent structures to +the canonical `H` and `P` endpoints. -/ +noncomputable def + abstractFixedFieldInclusionTransportedNormResidueValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (c : Additive + (IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : + Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + have hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + let eIdeleEmbedded := + numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j + let eIdeleOverH : + Additive (IdeleClassGroup F) ≃+ + ambientFixedAddSubgroup rationalIdeleClassRepresentation H.field := + Eq.mp + (congrArg + (fun X : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + Additive (IdeleClassGroup F) ≃+ + ambientFixedAddSubgroup + rationalIdeleClassRepresentation X.field) + hHEmbedded) + eIdeleEmbedded + exact + rationalFiniteNormResidueValue H P.toFiniteGaloisExtension + eIdeleOverH + (abstractFixedFieldInclusionTransportedAbelianizedEquiv H P) + c + +/-- Opaque intrinsic packaged norm-residue value at the canonical endpoints. -/ +noncomputable def + abstractFixedFieldInclusionCanonicalNormResidueValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (c : Additive + (IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : + Additive + (Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) := + rationalFiniteNormResidueValue H P.toFiniteGaloisExtension + (rationalAbstractFixedFieldIdeleClassEquivFixed H.field) + (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P) + c + + +end AbstractFixedFieldInclusion + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityEmbeddedValues.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityEmbeddedValues.lean new file mode 100644 index 0000000..2f5a677 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityEmbeddedValues.lean @@ -0,0 +1,396 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidueNaturalityFixedBase + + +set_option autoImplicit false + + +open scoped IsMulCommutative + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +universe u + + +section AbstractFixedFieldInclusion + +variable + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + +attribute [local instance] + naturalityIdeleClassCommGroup + ideleClassGroupIsMulCommutative + ideleClassSubgroupNormal + naturalityAbstractFixedFieldBaseQuotientFinite + naturalityAbstractFixedFieldRelativeQuotientFinite + naturalityAbstractFixedFieldFiniteDimensional + naturalityAbstractRelativeFixedFieldFiniteDimensional + naturalityAbstractFixedFieldRelativeScalarTower + naturalityAbstractRelativeFixedFieldAbsoluteFiniteDimensional + naturalityAbstractFixedFieldNumberField + naturalityAbstractRelativeFixedFieldNumberField + naturalityAbstractRelativeFixedFieldIsGalois + naturalityAbstractRelativeFixedFieldIsAbelianGalois + +/-- The finite abstract field reconstructed from the literal fixed-field +inclusion is the original packaged abstract field. Keeping this structure +equality separate avoids repeatedly rebuilding all of its proof fields. -/ +theorem + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + numberFieldEmbeddedFiniteAbstractField F E j = H := by + dsimp only + exact FiniteAbstractField.eq_of_field_eq _ _ + (numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P) + + +theorem + numberFieldEmbeddedIdeleClassEquivAmbientFixed_transport_apply + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (c : Additive + (IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + let hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + Eq.mp + (congrArg + (fun X : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + Additive (IdeleClassGroup F) ≃+ + ambientFixedAddSubgroup + rationalIdeleClassRepresentation X.field) + hHEmbedded) + (numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j) c = + rationalAbstractFixedFieldIdeleClassEquivFixed H.field c := by + dsimp only + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + have hBase : + numberFieldEmbeddedBaseSubgroup F E j = H.field := + numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P + have hHEmbedded : + numberFieldEmbeddedFiniteAbstractField F E j = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + have hFixedBase : + abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup F E j) = F := + congrArg + (abstractFixedField ℚ (SeparableClosure ℚ)) hBase + let eBase : F ≃ₐ[ℚ] F := + (numberFieldEmbeddedAbstractBaseFieldEquiv F E j).trans + (IntermediateField.equivOfEq hFixedBase) + have heBase : + eBase = (AlgEquiv.refl : F ≃ₐ[ℚ] F) := by + apply AlgEquiv.ext + intro x + apply Subtype.ext + change x.1 = x.1 + rfl + let hEmbeddedQuotientFinite := + numberFieldEmbeddedAbsoluteQuotientFinite F E j + let hEmbeddedFixedFiniteDimensional := + numberFieldEmbeddedAbstractFixedFieldFiniteDimensional F E j + apply Subtype.ext + rw [rationalAmbientFixedAddEquiv_transport_apply_val + hHEmbedded + (numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j) c] + dsimp only [numberFieldEmbeddedIdeleClassEquivAmbientFixed] + simp only [AddEquiv.trans_apply] + change + ((rationalIdeleClassEquivFixed + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup F E j))) + (MulEquiv.toAdditive + (ideleClassCongr + (numberFieldEmbeddedAbstractBaseFieldEquiv F E j)) c)).1 = + ((rationalIdeleClassEquivFixed F) c).1 + exact rationalIdeleClassEquivFixed_congr_apply_val + hFixedBase + (numberFieldEmbeddedAbstractBaseFieldEquiv F E j) + heBase c + +/-- Transporting the finite Galois subextension reconstructed from the literal +fixed-field inclusion recovers the canonical subextension packaged by `P`. +This is the sole dependent structure equality used by the later quotient +comparisons. -/ +theorem + numberFieldEmbeddedFiniteGaloisSubextension_transport_eq + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + let PEmbedded : FiniteGaloisSubextension HEmbedded.field := + numberFieldEmbeddedFiniteGaloisSubextension F E j + let hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + Eq.mp + (congrArg + (fun X : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension X.field) + hHEmbedded) + PEmbedded = + P.toFiniteGaloisExtension := by + dsimp only + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + let PEmbedded : FiniteGaloisSubextension HEmbedded.field := + numberFieldEmbeddedFiniteGaloisSubextension F E j + have hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + exact finiteGaloisSubextension_transport_eq_of_field_eq + hHEmbedded PEmbedded P.toFiniteGaloisExtension + (numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion H P) + +/-- Opaque endpoint for the extension-quotient comparison supplied by the +literal embedding. Its domain is already the canonical quotient of `P`, so +no client has to reconstruct the two subgroup transports. -/ +noncomputable def + abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + P.toFiniteGaloisExtension.extensionQuotient ≃* + Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + have hBase : + numberFieldEmbeddedBaseSubgroup F E j = H.field := + numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P + have hTop : + numberFieldEmbeddedTopSubgroup F E j = P.field := + numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion H P + letI hAlgebra : Algebra F (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra F E j + let eSep := + numberFieldEmbeddedSeparableClosureEquiv F E j + letI hEmbeddedExtensionNormal : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup F E j) + (numberFieldEmbeddedTopSubgroup F E j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := + numberFieldEmbeddedExtensionSubgroup_normal F E j + exact + P.toFiniteGaloisExtension.extensionQuotientMulEquiv.trans + ((extensionQuotientMulEquivOfEq + hBase.symm hTop.symm P.below + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).trans + (ambientEmbeddedExtensionQuotientEquivGaloisGroup + ℚ F E j eSep)) + +/-- Opaque canonical endpoint for the same quotient, obtained directly from +the abstract fixed-field realization. -/ +noncomputable def + abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + P.toFiniteGaloisExtension.extensionQuotient ≃* + Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := by + exact + P.toFiniteGaloisExtension.extensionQuotientMulEquiv.trans + (abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) + H.field P.field P.below P.normal) + +/-- Pointwise opaque endpoint of the embedded quotient equivalence. -/ +noncomputable def + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (q : P.toFiniteGaloisExtension.extensionQuotient) : + Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := + abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv H P q + +/-- Pointwise opaque endpoint of the canonical quotient equivalence. -/ +noncomputable def + abstractFixedFieldInclusionCanonicalExtensionQuotientValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (q : P.toFiniteGaloisExtension.extensionQuotient) : + Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := + abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv H P q + +/-- Fully applied ambient value of the embedded quotient endpoint. -/ +noncomputable def + abstractFixedFieldInclusionEmbeddedExtensionQuotientApplyVal + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (q : P.toFiniteGaloisExtension.extensionQuotient) + (x : abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) : SeparableClosure ℚ := + (abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q x : + SeparableClosure ℚ) + +/-- Fully applied ambient value of the canonical quotient endpoint. -/ +noncomputable def + abstractFixedFieldInclusionCanonicalExtensionQuotientApplyVal + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (q : P.toFiniteGaloisExtension.extensionQuotient) + (x : abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) : SeparableClosure ℚ := + (abstractFixedFieldInclusionCanonicalExtensionQuotientValue H P q x : + SeparableClosure ℚ) + +/-- The ambient Galois value attached to a representative of the canonical +quotient, packaged behind a literal result type. -/ +noncomputable def + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) : + Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + have hBase : + numberFieldEmbeddedBaseSubgroup F E j = H.field := + numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P + letI hAlgebra : Algebra F (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra F E j + let eSep := + numberFieldEmbeddedSeparableClosureEquiv F E j + letI hEmbeddedExtensionNormal : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup F E j) + (numberFieldEmbeddedTopSubgroup F E j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := + numberFieldEmbeddedExtensionSubgroup_normal F E j + let σEmbedded : + (numberFieldEmbeddedBaseSubgroup F E j).toSubgroup := + (MulEquiv.subgroupCongr + (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ + exact + ambientEmbeddedExtensionQuotientEquivGaloisGroup + ℚ F E j eSep (QuotientGroup.mk σEmbedded) + +/-- Fully applied ambient value of the packaged representative endpoint. -/ +noncomputable def + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) + (x : abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) : SeparableClosure ℚ := + (abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue H P σ x : + SeparableClosure ℚ) + +/-- Ambient action of the representative after rebundling it in the embedded +base subgroup. -/ +noncomputable def + abstractFixedFieldInclusionRebasedAutomorphismApplyVal + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) + (x : abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) : SeparableClosure ℚ := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + have hBase : + numberFieldEmbeddedBaseSubgroup F E j = H.field := + numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P + let σEmbedded : + (numberFieldEmbeddedBaseSubgroup F E j).toSubgroup := + (MulEquiv.subgroupCongr + (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ + exact σEmbedded.1.1 (x : SeparableClosure ℚ) + + +end AbstractFixedFieldInclusion + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityExtensionValues.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityExtensionValues.lean new file mode 100644 index 0000000..def7569 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityExtensionValues.lean @@ -0,0 +1,419 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidueNaturalityEmbeddedValues + + +set_option autoImplicit false + + +open scoped IsMulCommutative + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +universe u + + +section AbstractFixedFieldInclusion + +variable + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + +attribute [local instance] + naturalityIdeleClassCommGroup + ideleClassGroupIsMulCommutative + ideleClassSubgroupNormal + naturalityAbstractFixedFieldBaseQuotientFinite + naturalityAbstractFixedFieldRelativeQuotientFinite + naturalityAbstractFixedFieldFiniteDimensional + naturalityAbstractRelativeFixedFieldFiniteDimensional + naturalityAbstractFixedFieldRelativeScalarTower + naturalityAbstractRelativeFixedFieldAbsoluteFiniteDimensional + naturalityAbstractFixedFieldNumberField + naturalityAbstractRelativeFixedFieldNumberField + naturalityAbstractRelativeFixedFieldIsGalois + naturalityAbstractRelativeFixedFieldIsAbelianGalois + +/-- The embedded quotient endpoint sends a canonical representative to the +packaged ambient value above. -/ +private theorem + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue_mk + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) : + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P + (P.toFiniteGaloisExtension.extensionQuotientMk σ) = + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue H P σ := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + have hBase : + numberFieldEmbeddedBaseSubgroup F E j = H.field := + numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P + have hTop : + numberFieldEmbeddedTopSubgroup F E j = P.field := + numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion H P + let hAlgebra : Algebra F (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra F E j + let eSep := + numberFieldEmbeddedSeparableClosureEquiv F E j + let hEmbeddedExtensionNormal : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup F E j) + (numberFieldEmbeddedTopSubgroup F E j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := + numberFieldEmbeddedExtensionSubgroup_normal F E j + simp only [ + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue, + abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv, + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue, + MulEquiv.trans_apply, + FiniteGaloisSubextension.extensionQuotientMk_apply] + exact congrArg + (ambientEmbeddedExtensionQuotientEquivGaloisGroup ℚ F E j eSep) + (extensionQuotientMulEquivOfEq_mk + hBase.symm hTop.symm P.below + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j) σ) + +/-- The packaged ambient endpoint evaluates to the action of the rebundled +representative. -/ +private theorem + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal_eq_rebased + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) + (x : abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) : + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal H P σ x = + abstractFixedFieldInclusionRebasedAutomorphismApplyVal H P σ x := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + have hBase : + numberFieldEmbeddedBaseSubgroup F E j = H.field := + numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P + let hAlgebra : Algebra F (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra F E j + let eSep := + numberFieldEmbeddedSeparableClosureEquiv F E j + let hEmbeddedExtensionNormal : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup F E j) + (numberFieldEmbeddedTopSubgroup F E j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := + numberFieldEmbeddedExtensionSubgroup_normal F E j + let σEmbedded : + (numberFieldEmbeddedBaseSubgroup F E j).toSubgroup := + (MulEquiv.subgroupCongr + (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ + have hmk := + ambientEmbeddedExtensionQuotientEquivGaloisGroup_mk_apply + ℚ F E j eSep σEmbedded x + change + (ambientEmbeddedExtensionQuotientEquivGaloisGroup + ℚ F E j eSep (QuotientGroup.mk σEmbedded) x : + SeparableClosure ℚ) = + σEmbedded.1.1 (x : SeparableClosure ℚ) at hmk + simpa only [ + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal, + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue, + abstractFixedFieldInclusionRebasedAutomorphismApplyVal] using hmk + +/-- Rebundling the representative does not change its action in the ambient +separable closure. -/ +private theorem + abstractFixedFieldInclusionRebasedAutomorphismApplyVal_eq + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) + (x : abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) : + abstractFixedFieldInclusionRebasedAutomorphismApplyVal H P σ x = + σ.1.1 (x : SeparableClosure ℚ) := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + have hBase : + numberFieldEmbeddedBaseSubgroup F E j = H.field := + numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P + let σEmbedded : + (numberFieldEmbeddedBaseSubgroup F E j).toSubgroup := + (MulEquiv.subgroupCongr + (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ + have hσEmbedded : + (σEmbedded.1 : SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) = σ.1 := + closedSubgroupCongr_apply_val hBase.symm σ + change σEmbedded.1.1 (x : SeparableClosure ℚ) = _ + rw [hσEmbedded] + +/-- The packaged ambient representative acts by the original automorphism on +the underlying separable-closure value. -/ +private theorem + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue_apply + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) + (x : abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) : + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal H P σ x = + σ.1.1 (x : SeparableClosure ℚ) := by + exact + (abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal_eq_rebased + H P σ x).trans + (abstractFixedFieldInclusionRebasedAutomorphismApplyVal_eq H P σ x) + +/-- Evaluation of the embedded quotient endpoint on a canonical quotient +representative, stated only in the ambient separable closure. -/ +private theorem + abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv_mk_val + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) + (x : abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) : + abstractFixedFieldInclusionEmbeddedExtensionQuotientApplyVal H P + (P.toFiniteGaloisExtension.extensionQuotientMk σ) x = + σ.1.1 (x : SeparableClosure ℚ) := by + calc + _ = abstractFixedFieldInclusionAmbientEmbeddedQuotientMkApplyVal + H P σ x := by + exact congrArg + (fun g => (g x : SeparableClosure ℚ)) + (abstractFixedFieldInclusionEmbeddedExtensionQuotientValue_mk + H P σ) + _ = _ := + abstractFixedFieldInclusionAmbientEmbeddedQuotientMkValue_apply + H P σ x + +/-- Evaluation of the canonical abstract quotient endpoint on a quotient +representative, again exposed only through its ambient value. -/ +private theorem + abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv_mk_val + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) + (x : abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) : + abstractFixedFieldInclusionCanonicalExtensionQuotientApplyVal H P + (P.toFiniteGaloisExtension.extensionQuotientMk σ) x = + σ.1.1 (x : SeparableClosure ℚ) := by + simp only [ + abstractFixedFieldInclusionCanonicalExtensionQuotientApplyVal, + abstractFixedFieldInclusionCanonicalExtensionQuotientValue, + abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv, + MulEquiv.trans_apply, + FiniteGaloisSubextension.extensionQuotientMk_apply] + exact + (abstractExtensionQuotientEquivGaloisGroup_mk_apply_val + ℚ (SeparableClosure ℚ) + H.field P.field P.below P.normal σ x).symm + + +theorem + abstractFixedFieldInclusionExtensionQuotientEquiv_apply + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (q : P.toFiniteGaloisExtension.extensionQuotient) : + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q = + abstractFixedFieldInclusionCanonicalExtensionQuotientValue H P q := by + refine P.toFiniteGaloisExtension.extensionQuotient_inductionOn + (motive := fun q => + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q = + abstractFixedFieldInclusionCanonicalExtensionQuotientValue H P q) + q ?_ + intro σ + apply AlgEquiv.ext + intro x + apply Subtype.ext + exact + (abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv_mk_val + H P σ x).trans + (abstractFixedFieldInclusionCanonicalExtensionQuotientEquiv_mk_val + H P σ x).symm + + +/-- The extension quotient identified with the Galois group of the corresponding +relative fixed field, after transporting the embedded field structures. -/ +noncomputable def + abstractFixedFieldInclusionTransportedExtensionQuotientEquiv + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + P.toFiniteGaloisExtension.extensionQuotient ≃* + Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + let PEmbedded : FiniteGaloisSubextension HEmbedded.field := + numberFieldEmbeddedFiniteGaloisSubextension F E j + have hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + have hPEmbedded : + Eq.mp + (congrArg + (fun X : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension X.field) + hHEmbedded) + PEmbedded = + P.toFiniteGaloisExtension := + numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P + exact + (extensionQuotientMulEquiv_transportFiniteGalois + hHEmbedded PEmbedded hPEmbedded).trans + (numberFieldEmbeddedExtensionQuotientEquivGaloisGroup F E j) + +/-- Pointwise opaque endpoint of the transported quotient equivalence. -/ +noncomputable def + abstractFixedFieldInclusionTransportedExtensionQuotientValue + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (q : P.toFiniteGaloisExtension.extensionQuotient) : + Gal( + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) / + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) := + abstractFixedFieldInclusionTransportedExtensionQuotientEquiv H P q + + +private theorem + abstractFixedFieldInclusionTransportedExtensionQuotientValue_mk + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (σ : H.field.toSubgroup) : + abstractFixedFieldInclusionTransportedExtensionQuotientValue H P + (P.toFiniteGaloisExtension.extensionQuotientMk σ) = + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P + (P.toFiniteGaloisExtension.extensionQuotientMk σ) := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + have hBase : + numberFieldEmbeddedBaseSubgroup F E j = H.field := + numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion H P + have hTop : + numberFieldEmbeddedTopSubgroup F E j = P.field := + numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion H P + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + let PEmbedded : FiniteGaloisSubextension HEmbedded.field := + numberFieldEmbeddedFiniteGaloisSubextension F E j + have hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + have hPEmbedded : + Eq.mp + (congrArg + (fun X : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension X.field) + hHEmbedded) + PEmbedded = + P.toFiniteGaloisExtension := + numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P + let hAlgebra : Algebra F (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra F E j + let eSep := + numberFieldEmbeddedSeparableClosureEquiv F E j + let hEmbeddedExtensionNormal : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup F E j) + (numberFieldEmbeddedTopSubgroup F E j) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j)).Normal := + numberFieldEmbeddedExtensionSubgroup_normal F E j + have hFieldEq : + (congrArg FiniteAbstractField.field hHEmbedded).symm = hBase.symm := + Subsingleton.elim _ _ + simp only [ + abstractFixedFieldInclusionTransportedExtensionQuotientValue, + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue, + abstractFixedFieldInclusionTransportedExtensionQuotientEquiv, + abstractFixedFieldInclusionEmbeddedExtensionQuotientEquiv, + MulEquiv.trans_apply, + extensionQuotientMulEquiv_transportFiniteGalois_mk, + FiniteGaloisSubextension.extensionQuotientMk_apply, + numberFieldEmbeddedExtensionQuotientEquivGaloisGroup] + rw [hFieldEq] + change + ambientEmbeddedExtensionQuotientEquivGaloisGroup ℚ F E j eSep + (QuotientGroup.mk + ((MulEquiv.subgroupCongr + (congrArg ClosedSubgroup.toSubgroup hBase.symm)) σ)) = _ + exact + (congrArg + (ambientEmbeddedExtensionQuotientEquivGaloisGroup ℚ F E j eSep) + (extensionQuotientMulEquivOfEq_mk + hBase.symm hTop.symm P.below + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup F E j) σ)).symm + + +theorem + abstractFixedFieldInclusionTransportedExtensionQuotientEquiv_apply + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (q : P.toFiniteGaloisExtension.extensionQuotient) : + abstractFixedFieldInclusionTransportedExtensionQuotientValue H P q = + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q := by + refine P.toFiniteGaloisExtension.extensionQuotient_inductionOn + (motive := fun q => + abstractFixedFieldInclusionTransportedExtensionQuotientValue H P q = + abstractFixedFieldInclusionEmbeddedExtensionQuotientValue H P q) + q ?_ + intro σ + exact abstractFixedFieldInclusionTransportedExtensionQuotientValue_mk + H P σ + + +end AbstractFixedFieldInclusion + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityFixedBase.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityFixedBase.lean new file mode 100644 index 0000000..d3a9bb0 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityFixedBase.lean @@ -0,0 +1,376 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidueNaturalityTransports + + +set_option autoImplicit false + + +open scoped IsMulCommutative + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +universe u + + +attribute [local instance] + naturalityIdeleClassCommGroup + ideleClassGroupIsMulCommutative + ideleClassSubgroupNormal + +section AbstractFixedFieldInclusion + +variable + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + +local instance naturalityAbstractFixedFieldBaseQuotientFinite : + Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + H.field (le_baseField H.field)) := + H.finite + +local instance naturalityAbstractFixedFieldRelativeQuotientFinite : + Finite + (H.field.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H.field P.field P.below) := + P.finite + +noncomputable local instance + naturalityAbstractFixedFieldFiniteDimensional : + FiniteDimensional ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) := + abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) H.field H.finite + +noncomputable local instance + naturalityAbstractRelativeFixedFieldFiniteDimensional : + FiniteDimensional + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) := + abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) + H.field P.field P.below H.finite P.finite + +local instance naturalityAbstractFixedFieldRelativeScalarTower : + IsScalarTower ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) := + IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) + +noncomputable local instance + naturalityAbstractRelativeFixedFieldAbsoluteFiniteDimensional : + FiniteDimensional ℚ + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) := + FiniteDimensional.trans ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) + +noncomputable local instance naturalityAbstractFixedFieldNumberField : + NumberField + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) := + NumberField.of_module_finite ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) + +noncomputable local instance + naturalityAbstractRelativeFixedFieldNumberField : + NumberField + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) := + NumberField.of_module_finite ℚ + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) + +/-- Use the same direct fixed-field Galois witness as the intrinsic +norm-residue construction. This prevents the dependent Galois-group type +from being synthesized through a second `IsAbelianGalois` instance path. -/ +noncomputable local instance + naturalityAbstractRelativeFixedFieldIsGalois : + IsGalois + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) := + abstractRelativeFixedField_isGalois + ℚ (SeparableClosure ℚ) + H.field P.field P.below P.normal + +noncomputable local instance + naturalityAbstractRelativeFixedFieldIsAbelianGalois : + IsAbelianGalois + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) := + finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois P + +/-- The lower subgroup obtained from the canonical inclusion of an abstract +fixed-field tower is the original lower closed subgroup. -/ +theorem + numberFieldEmbeddedBaseSubgroup_abstractFixedFieldInclusion + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + numberFieldEmbeddedBaseSubgroup F E j = H.field := by + dsimp only + have hi : + numberFieldEmbeddedLowerEmbedding + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) + ((abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ) = + (abstractFixedField + ℚ (SeparableClosure ℚ) H.field).val := by + ext x + rfl + have hRange : + (numberFieldEmbeddedLowerEmbedding + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) + ((abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ)).fieldRange = + abstractFixedField ℚ (SeparableClosure ℚ) H.field := by + ext x + constructor + · rintro ⟨y, rfl⟩ + change + numberFieldEmbeddedLowerEmbedding + (abstractFixedField ℚ (SeparableClosure ℚ) H.field) + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below) + ((abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ) y ∈ + abstractFixedField ℚ (SeparableClosure ℚ) H.field + rw [hi] + exact y.property + · intro hx + refine ⟨⟨x, hx⟩, ?_⟩ + rw [hi] + rfl + rw [numberFieldEmbeddedBaseSubgroup, hRange] + exact + closedFixingSubgroup_abstractFixedField_eq + ℚ (SeparableClosure ℚ) H.field + +/-- The upper subgroup obtained from the canonical inclusion of an abstract +fixed-field tower is the original upper closed subgroup. -/ +theorem + numberFieldEmbeddedTopSubgroup_abstractFixedFieldInclusion + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + numberFieldEmbeddedTopSubgroup F E j = P.field := by + dsimp only + rw [numberFieldEmbeddedTopSubgroup] + have hjRangeSelf : + ((abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ).fieldRange = + (abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below).restrictScalars ℚ := by + ext x + constructor + · rintro ⟨y, rfl⟩ + exact y.property + · intro hx + exact ⟨⟨x, hx⟩, rfl⟩ + have hjRange : + ((abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below).val.restrictScalars ℚ).fieldRange = + abstractFixedField ℚ (SeparableClosure ℚ) P.field := by + exact hjRangeSelf.trans + (IntermediateField.extendScalars_restrictScalars + (abstractFixedField_le + ℚ (SeparableClosure ℚ) P.below)) + rw [hjRange] + exact + closedFixingSubgroup_abstractFixedField_eq + ℚ (SeparableClosure ℚ) P.field + +/-- Transport a packaged rational norm-residue value directly from an equal +abstract base to the finite Galois extension underlying `P`. Keeping the two +dependent transports in their own declaration prevents their elaboration cost +from accumulating in the main fixed-field comparison theorem. -/ +theorem rationalFiniteNormResidueValue_transportToAbstractExtension + {A : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)} + (hAH : A = H) + (L : FiniteGaloisSubextension A.field) + (hLP : + Eq.mp + (congrArg + (fun Y : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension Y.field) + hAH) + L = + P.toFiniteGaloisExtension) + {C X : Type} [AddGroup C] [AddGroup X] + (eIdele : C ≃+ + ambientFixedAddSubgroup rationalIdeleClassRepresentation A.field) + (eGalois : Additive (Abelianization L.extensionQuotient) ≃+ X) + (c : C) : + rationalFiniteNormResidueValue A L eIdele eGalois c = + rationalFiniteNormResidueValue H P.toFiniteGaloisExtension + (Eq.mp + (congrArg + (fun Y : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + C ≃+ ambientFixedAddSubgroup + rationalIdeleClassRepresentation Y.field) + hAH) + eIdele) + (abelianizedExtensionQuotientAddEquiv_transportExtension hLP + (abelianizedExtensionQuotientAddEquiv_transportBase + hAH L eGalois)) + c := by + calc + _ = rationalFiniteNormResidueValue H + (Eq.mp + (congrArg + (fun Y : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension Y.field) + hAH) + L) + (Eq.mp + (congrArg + (fun Y : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + C ≃+ ambientFixedAddSubgroup + rationalIdeleClassRepresentation Y.field) + hAH) + eIdele) + (abelianizedExtensionQuotientAddEquiv_transportBase hAH L eGalois) + c := + rationalFiniteNormResidueValue_transportBase + (A := A) (B := H) (C := C) (X := X) + hAH L eIdele eGalois c + _ = _ := + rationalFiniteNormResidueValue_transportExtension + (K := H) + (P := Eq.mp + (congrArg + (fun Y : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension Y.field) + hAH) + L) + (Q := P.toFiniteGaloisExtension) (C := C) (X := X) + hLP + (Eq.mp + (congrArg + (fun Y : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + C ≃+ ambientFixedAddSubgroup + rationalIdeleClassRepresentation Y.field) + hAH) + eIdele) + (abelianizedExtensionQuotientAddEquiv_transportBase hAH L eGalois) + c + +/-- The packaged value at the literal fixed-field realization is the ambient +fixed-part norm-residue homomorphism evaluated at the same idele class. -/ +private theorem rationalFiniteNormResidueValue_abstractFixedField_eq_ambient + (c : IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) : + rationalFiniteNormResidueValue H P.toFiniteGaloisExtension + (rationalAbstractFixedFieldIdeleClassEquivFixed H.field) + (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P) + (Additive.ofMul c) = + ambientFixedGlobalNormResidueAddMonoidHom H P + (rationalAbstractFixedFieldIdeleClassEquivFixed + H.field (Additive.ofMul c)) := by + let eRec := + rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + H P.toFiniteGaloisExtension + let eGal := + abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P + change + eGal + (eRec + (finiteNormClass rationalIdeleClassRepresentation + H.field P.field P.below + (rationalAbstractFixedFieldIdeleClassEquivFixed + H.field (Additive.ofMul c)))) = + eGal + (eRec + (finiteNormClass rationalIdeleClassRepresentation + H.field P.field P.below + (rationalAbstractFixedFieldIdeleClassEquivFixed + H.field (Additive.ofMul c)))) + rfl + +/-- The packaged norm-residue value for the literal fixed-field realization +is the intrinsic abstract fixed-field norm-residue value. -/ +theorem rationalFiniteNormResidueValue_abstractFixedField_apply + (c : IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) H.field)) : + Additive.toMul + (rationalFiniteNormResidueValue H P.toFiniteGaloisExtension + (rationalAbstractFixedFieldIdeleClassEquivFixed H.field) + (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup + H P) + (Additive.ofMul c)) = + abstractFixedFieldGlobalNormResidueMonoidHom H P c := by + let a := + rationalAbstractFixedFieldIdeleClassEquivFixed + H.field (Additive.ofMul c) + have hAbstract := + abstractFixedFieldGlobalNormResidueMonoidHom_fixed_apply H P a + calc + _ = Additive.toMul + (ambientFixedGlobalNormResidueAddMonoidHom H P + (rationalAbstractFixedFieldIdeleClassEquivFixed + H.field (Additive.ofMul c))) := by + exact congrArg Additive.toMul + (rationalFiniteNormResidueValue_abstractFixedField_eq_ambient + (H := H) (P := P) c) + _ = _ := by + simpa only [a, AddEquiv.symm_apply_apply, toMul_ofMul] using + hAbstract.symm + + +end AbstractFixedFieldInclusion + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityFixedComparison.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityFixedComparison.lean new file mode 100644 index 0000000..ce523c2 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityFixedComparison.lean @@ -0,0 +1,237 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidueNaturalityAbelianValues + + +set_option autoImplicit false + + +open scoped IsMulCommutative + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +universe u + + +section AbstractFixedFieldInclusion + +variable + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + +attribute [local instance] + naturalityIdeleClassCommGroup + ideleClassGroupIsMulCommutative + ideleClassSubgroupNormal + naturalityAbstractFixedFieldBaseQuotientFinite + naturalityAbstractFixedFieldRelativeQuotientFinite + naturalityAbstractFixedFieldFiniteDimensional + naturalityAbstractRelativeFixedFieldFiniteDimensional + naturalityAbstractFixedFieldRelativeScalarTower + naturalityAbstractRelativeFixedFieldAbsoluteFiniteDimensional + naturalityAbstractFixedFieldNumberField + naturalityAbstractRelativeFixedFieldNumberField + naturalityAbstractRelativeFixedFieldIsGalois + naturalityAbstractRelativeFixedFieldIsAbelianGalois + + +private theorem + abstractFixedFieldInclusionEmbeddedNormResidueValue_eq_transported + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (c : Additive + (IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : + abstractFixedFieldInclusionEmbeddedNormResidueValue H P c = + abstractFixedFieldInclusionTransportedNormResidueValue H P c := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + let PEmbedded : FiniteGaloisSubextension HEmbedded.field := + numberFieldEmbeddedFiniteGaloisSubextension F E j + have hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + have hPEmbedded : + Eq.mp + (congrArg + (fun X : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension X.field) + hHEmbedded) + PEmbedded = + P.toFiniteGaloisExtension := + numberFieldEmbeddedFiniteGaloisSubextension_transport_eq H P + let eIdeleEmbedded := + numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j + let eGaloisEmbedded := + numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup F E j + simpa only [ + abstractFixedFieldInclusionEmbeddedNormResidueValue, + abstractFixedFieldInclusionTransportedNormResidueValue, + abstractFixedFieldInclusionTransportedAbelianizedEquiv, + eIdeleEmbedded, + eGaloisEmbedded] using + (rationalFiniteNormResidueValue_transportToAbstractExtension + (H := H) (P := P) + (A := HEmbedded) + (C := Additive (IdeleClassGroup F)) + (X := Additive Gal(E / F)) + hHEmbedded PEmbedded hPEmbedded + eIdeleEmbedded eGaloisEmbedded c) + +/-- A packaged finite norm-residue value depends only on the value of its +idele comparison at the chosen input and the value of its Galois comparison +at the resulting norm class. -/ +private theorem rationalFiniteNormResidueValue_congr_apply + (K : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (L : FiniteGaloisSubextension K.field) + {C X : Type} [AddGroup C] [AddGroup X] + (eIdele eIdele' : C ≃+ + ambientFixedAddSubgroup rationalIdeleClassRepresentation K.field) + (eGalois eGalois' : + Additive (Abelianization L.extensionQuotient) ≃+ X) + (c : C) + (heIdele : eIdele c = eIdele' c) + (heGalois : ∀ z, eGalois z = eGalois' z) : + rationalFiniteNormResidueValue K L eIdele eGalois c = + rationalFiniteNormResidueValue K L eIdele' eGalois' c := by + unfold rationalFiniteNormResidueValue + rw [heIdele] + exact heGalois _ + +/-- The transported packaged value is the intrinsic canonical packaged value; +only the idele input and the eventual abelianized value are compared. -/ +private theorem + abstractFixedFieldInclusionTransportedNormResidueValue_eq_canonical + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (c : Additive + (IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : + abstractFixedFieldInclusionTransportedNormResidueValue H P c = + abstractFixedFieldInclusionCanonicalNormResidueValue H P c := by + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + let HEmbedded := + numberFieldEmbeddedFiniteAbstractField F E j + have hHEmbedded : HEmbedded = H := + numberFieldEmbeddedFiniteAbstractField_abstractFixedFieldInclusion H P + let eIdeleEmbedded := + numberFieldEmbeddedIdeleClassEquivAmbientFixed F E j + let eIdeleOverH : + Additive (IdeleClassGroup F) ≃+ + ambientFixedAddSubgroup rationalIdeleClassRepresentation H.field := + Eq.mp + (congrArg + (fun X : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + Additive (IdeleClassGroup F) ≃+ + ambientFixedAddSubgroup + rationalIdeleClassRepresentation X.field) + hHEmbedded) + eIdeleEmbedded + simpa only [ + abstractFixedFieldInclusionTransportedNormResidueValue, + abstractFixedFieldInclusionCanonicalNormResidueValue, + eIdeleEmbedded, + eIdeleOverH] using + (rationalFiniteNormResidueValue_congr_apply + H P.toFiniteGaloisExtension + eIdeleOverH + (rationalAbstractFixedFieldIdeleClassEquivFixed H.field) + (abstractFixedFieldInclusionTransportedAbelianizedEquiv H P) + (abstractFixedFieldAbelianizedExtensionQuotientEquivGaloisGroup H P) + c + (numberFieldEmbeddedIdeleClassEquivAmbientFixed_transport_apply H P c) + (fun z => abstractFixedFieldInclusionTransportedAbelianizedValue_eq + H P z)) + +/-- The explicitly embedded and intrinsic packaged norm-residue values agree. -/ +private theorem + abstractFixedFieldInclusionEmbeddedNormResidueValue_eq + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) + (c : Additive + (IdeleClassGroup + (abstractFixedField ℚ (SeparableClosure ℚ) H.field))) : + abstractFixedFieldInclusionEmbeddedNormResidueValue H P c = + abstractFixedFieldInclusionCanonicalNormResidueValue H P c := + (abstractFixedFieldInclusionEmbeddedNormResidueValue_eq_transported + H P c).trans + (abstractFixedFieldInclusionTransportedNormResidueValue_eq_canonical + H P c) + +/-- For the literal fixed fields attached to an abstract finite abelian +extension, the norm-residue map obtained from their canonical inclusion in +the rational separable closure is the intrinsic fixed-field norm-residue +map. -/ +theorem + globalNormResidueMonoidHomOfEmbedding_abstractFixedFieldInclusion + (H : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (P : FiniteAbelianSubextension H.field) : + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H.field + let E := + abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + globalNormResidueMonoidHomOfEmbedding F E j = + abstractFixedFieldGlobalNormResidueMonoidHom H P := by + dsimp only + apply MonoidHom.ext + intro c + rw [globalNormResidueMonoidHomOfEmbedding_apply] + change + Additive.toMul + (abstractFixedFieldInclusionEmbeddedNormResidueValue + H P (Additive.ofMul c)) = + abstractFixedFieldGlobalNormResidueMonoidHom H P c + calc + _ = Additive.toMul + (abstractFixedFieldInclusionCanonicalNormResidueValue + H P (Additive.ofMul c)) := + congrArg Additive.toMul + (abstractFixedFieldInclusionEmbeddedNormResidueValue_eq + H P (Additive.ofMul c)) + _ = _ := by + simpa only [abstractFixedFieldInclusionCanonicalNormResidueValue] using + (rationalFiniteNormResidueValue_abstractFixedField_apply + (H := H) (P := P) c) + +end AbstractFixedFieldInclusion + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTowerBase.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTowerBase.lean new file mode 100644 index 0000000..dcad422 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTowerBase.lean @@ -0,0 +1,339 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidueNaturalityFixedComparison + + +set_option autoImplicit false + + +open scoped IsMulCommutative + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +universe u + + +attribute [local instance] + naturalityIdeleClassCommGroup + ideleClassGroupIsMulCommutative + ideleClassSubgroupNormal + +section EmbeddedNumberFieldRestriction + +variable + (K K' L L' : Type) + [Field K] [NumberField K] + [Field K'] [NumberField K'] + [Field L] [NumberField L] + [Field L'] [NumberField L'] + [Algebra K K'] [Algebra K L] [Algebra K L'] + [Algebra K' L'] [Algebra L L'] + [IsScalarTower K K' L'] [IsScalarTower K L L'] + + +/-- Rebracketing the compatible tower does not change its embedded lower +fixing subgroup. -/ +private theorem numberFieldEmbeddedBaseSubgroup_baseChange_eq + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + numberFieldEmbeddedBaseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j) = + numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L')) := by + have hi : + numberFieldEmbeddedLowerEmbedding K K' + (numberFieldEmbeddedLowerEmbedding K' L' j) = + numberFieldEmbeddedLowerEmbedding K L + (j.comp (IsScalarTower.toAlgHom ℚ L L')) := by + ext x + simp only [numberFieldEmbeddedLowerEmbedding, AlgHom.comp_apply, + IsScalarTower.coe_toAlgHom'] + rw [← IsScalarTower.algebraMap_apply K K' L', + ← IsScalarTower.algebraMap_apply K L L'] + simp only [numberFieldEmbeddedBaseSubgroup, hi] + +omit [Field K] [NumberField K] + [Algebra K K'] [Algebra K L'] [IsScalarTower K K' L'] in +/-- The top subgroup of the rebracketed base-change tower is the embedded +fixing subgroup of the intermediate field. -/ +private theorem numberFieldEmbeddedTopSubgroup_baseChange_eq + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + numberFieldEmbeddedTopSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j) = + numberFieldEmbeddedBaseSubgroup K' L' j := by + rfl + +/-- Reidentify the two presentations of the embedded lower fixing subgroup +without transporting dependent subgroup data through an equality. -/ +private noncomputable def numberFieldEmbeddedBaseChangeBaseEquiv + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + (numberFieldEmbeddedBaseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup ≃* + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup := + MulEquiv.subgroupCongr + (congrArg ClosedSubgroup.toSubgroup + (numberFieldEmbeddedBaseSubgroup_baseChange_eq K K' L L' j)) + +/-- Under the identity equivalence of the two lower fixing subgroups, the +relative subgroup for the base change is exactly the target presentation. -/ +private theorem numberFieldEmbeddedBaseChangeExtensionSubgroup_map_eq + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)) + (numberFieldEmbeddedTopSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j))).map + (numberFieldEmbeddedBaseChangeBaseEquiv K K' L L' j).toMonoidHom = + CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))) + (numberFieldEmbeddedBaseSubgroup K' L' j) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j) := by + let e := numberFieldEmbeddedBaseChangeBaseEquiv K K' L L' j + have hTop : + (numberFieldEmbeddedTopSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup = + (numberFieldEmbeddedBaseSubgroup K' L' j).toSubgroup := + congrArg ClosedSubgroup.toSubgroup + (numberFieldEmbeddedTopSubgroup_baseChange_eq + (K := K) (K' := K') (L' := L') j) + ext x + constructor + · rintro ⟨y, hy, rfl⟩ + change + ((e y : + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup) : + SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) ∈ + (numberFieldEmbeddedBaseSubgroup K' L' j).toSubgroup + dsimp only [e, numberFieldEmbeddedBaseChangeBaseEquiv] + rw [MulEquiv.subgroupCongr_apply, ← hTop] + exact hy + · intro hx + refine ⟨e.symm x, ?_, e.apply_symm_apply x⟩ + change + (((e.symm x : + (numberFieldEmbeddedBaseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup) : + SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) ∈ + (numberFieldEmbeddedTopSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup) + dsimp only [e, numberFieldEmbeddedBaseChangeBaseEquiv] + rw [MulEquiv.subgroupCongr_symm_apply, hTop] + exact hx + +/-- Normality of the relative subgroup between the two embedded base fields +in a finite Galois base change. -/ +private theorem numberFieldEmbeddedBaseChangeExtensionSubgroup_normal + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))) + (numberFieldEmbeddedBaseSubgroup K' L' j) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)).Normal := by + let e := numberFieldEmbeddedBaseChangeBaseEquiv K K' L L' j + have hNormal := + (numberFieldEmbeddedExtensionSubgroup_normal K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)).map + e.toMonoidHom e.surjective + rw [numberFieldEmbeddedBaseChangeExtensionSubgroup_map_eq + K K' L L' j] at hNormal + exact hNormal + +noncomputable local instance + numberFieldEmbeddedBaseChangeExtensionSubgroupNormal + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + (CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))) + (numberFieldEmbeddedBaseSubgroup K' L' j) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)).Normal := + numberFieldEmbeddedBaseChangeExtensionSubgroup_normal K K' L L' j + +/-- Finiteness of the relative quotient between the two embedded base fields +in a finite Galois base change. -/ +private theorem numberFieldEmbeddedBaseChangeExtensionQuotient_finite + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + Finite + ((numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))) + (numberFieldEmbeddedBaseSubgroup K' L' j) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := by + let e := numberFieldEmbeddedBaseChangeBaseEquiv K K' L L' j + let N := + CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)) + (numberFieldEmbeddedTopSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)) + (numberFieldEmbeddedTopSubgroup_le_baseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)) + let M := + CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))) + (numberFieldEmbeddedBaseSubgroup K' L' j) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j) + let hNNormal : N.Normal := + numberFieldEmbeddedExtensionSubgroup_normal K K' + (numberFieldEmbeddedLowerEmbedding K' L' j) + let hMNormal : M.Normal := + numberFieldEmbeddedBaseChangeExtensionSubgroup_normal K K' L L' j + let hNFinite : + Finite + ((numberFieldEmbeddedBaseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup ⧸ N) := + numberFieldEmbeddedExtensionQuotient_finite K K' + (numberFieldEmbeddedLowerEmbedding K' L' j) + have hmap : N.map e.toMonoidHom = M := + numberFieldEmbeddedBaseChangeExtensionSubgroup_map_eq K K' L L' j + have hle : N ≤ M.comap e.toMonoidHom := by + rw [← hmap] + exact Subgroup.le_comap_map e.toMonoidHom N + let f : + ((numberFieldEmbeddedBaseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup ⧸ N) →* + ((numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup ⧸ M) := + QuotientGroup.map N M e.toMonoidHom hle + have hmk : Function.Surjective + (QuotientGroup.mk ∘ e : + (numberFieldEmbeddedBaseSubgroup K K' + (numberFieldEmbeddedLowerEmbedding K' L' j)).toSubgroup → + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup ⧸ M) := + QuotientGroup.mk_surjective.comp e.surjective + have hsurj : Function.Surjective f := + QuotientGroup.map_surjective_of_surjective + (N := N) M e.toMonoidHom hmk hle + exact Finite.of_surjective f hsurj + +noncomputable local instance + numberFieldEmbeddedBaseChangeExtensionQuotientFinite + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + Finite + ((numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))).toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))) + (numberFieldEmbeddedBaseSubgroup K' L' j) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := + numberFieldEmbeddedBaseChangeExtensionQuotient_finite K K' L L' j + +/-- Reuse the canonical absolute fixed-field witness for the lower embedded +tower. The base-change relative witness below needs this exact instance path +when forming the absolute finite-dimensional tower. -/ +noncomputable local instance + numberFieldEmbeddedBaseChangeBaseFixedFieldFiniteDimensional + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + FiniteDimensional ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L')))) := + numberFieldEmbeddedAbstractFixedFieldFiniteDimensional K L + (j.comp (IsScalarTower.toAlgHom ℚ L L')) + +noncomputable local instance + numberFieldEmbeddedBaseChangeRelativeFixedFieldFiniteDimensional + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + FiniteDimensional + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L')))) + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := + abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))) + (numberFieldEmbeddedBaseSubgroup K' L' j) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j) + (numberFieldEmbeddedAbsoluteQuotientFinite K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))) + (numberFieldEmbeddedBaseChangeExtensionQuotientFinite K K' L L' j) + +local instance + numberFieldEmbeddedBaseChangeRelativeFixedFieldScalarTower + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + IsScalarTower ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L')))) + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := + IsScalarTower.of_algebraMap_eq' (RingHom.ext_rat _ _) + +noncomputable local instance + numberFieldEmbeddedBaseChangeRelativeFixedFieldAbsoluteFiniteDimensional + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + FiniteDimensional ℚ + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := + FiniteDimensional.trans ℚ + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L')))) + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) + +noncomputable local instance + numberFieldEmbeddedBaseChangeRelativeFixedFieldNumberField + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + NumberField + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := + NumberField.of_module_finite ℚ + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) + +noncomputable local instance + numberFieldEmbeddedBaseChangeRelativeFixedFieldIsGalois + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + IsGalois + (abstractFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L')))) + (abstractRelativeFixedField ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j)) := + abstractRelativeFixedField_isGalois + ℚ (SeparableClosure ℚ) + (numberFieldEmbeddedBaseSubgroup K L + (j.comp (IsScalarTower.toAlgHom ℚ L L'))) + (numberFieldEmbeddedBaseSubgroup K' L' j) + (numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j) + (numberFieldEmbeddedBaseChangeExtensionSubgroupNormal K K' L L' j) + + +end EmbeddedNumberFieldRestriction + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTowerNorm.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTowerNorm.lean new file mode 100644 index 0000000..a0d887a --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTowerNorm.lean @@ -0,0 +1,261 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidueNaturalityTowerRestriction + + +set_option autoImplicit false + + +open scoped IsMulCommutative + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +universe u + + +section EmbeddedNumberFieldRestriction + +variable + (K K' L L' : Type) + [Field K] [NumberField K] + [Field K'] [NumberField K'] + [Field L] [NumberField L] + [Field L'] [NumberField L'] + [Algebra K K'] [Algebra K L] [Algebra K L'] + [Algebra K' L'] [Algebra L L'] + [IsScalarTower K K' L'] [IsScalarTower K L L'] + +attribute [local instance] + naturalityIdeleClassCommGroup + ideleClassGroupIsMulCommutative + ideleClassSubgroupNormal + numberFieldEmbeddedBaseChangeExtensionSubgroupNormal + numberFieldEmbeddedBaseChangeExtensionQuotientFinite + numberFieldEmbeddedBaseChangeBaseFixedFieldFiniteDimensional + numberFieldEmbeddedBaseChangeRelativeFixedFieldFiniteDimensional + numberFieldEmbeddedBaseChangeRelativeFixedFieldScalarTower + numberFieldEmbeddedBaseChangeRelativeFixedFieldAbsoluteFiniteDimensional + numberFieldEmbeddedBaseChangeRelativeFixedFieldNumberField + numberFieldEmbeddedBaseChangeRelativeFixedFieldIsGalois + +/-- For one common compatible embedding of a Galois base-change +diamond, the genuine global norm-residue maps commute with ordinary +idele-class norm and actual restriction of automorphisms. -/ +theorem globalNormResidueMonoidHomOfEmbedding_norm_restriction + [FiniteDimensional K L] [IsAbelianGalois K L] + [FiniteDimensional K' L'] [IsAbelianGalois K' L'] + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) : + let jLower : L →ₐ[ℚ] SeparableClosure ℚ := + j.comp (IsScalarTower.toAlgHom ℚ L L') + ((AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K)).comp + (globalNormResidueMonoidHomOfEmbedding K' L' j) = + (globalNormResidueMonoidHomOfEmbedding K L jLower).comp + (_root_.ideleClassNorm K K') := by + dsimp only + let jLower : L →ₐ[ℚ] SeparableClosure ℚ := + j.comp (IsScalarTower.toAlgHom ℚ L L') + let H := + numberFieldEmbeddedBaseSubgroup K L jLower + let H' := + numberFieldEmbeddedBaseSubgroup K' L' j + let J := + numberFieldEmbeddedTopSubgroup K L jLower + let J' := + numberFieldEmbeddedTopSubgroup K' L' j + let hJH := + numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L jLower + let hJ'H' := + numberFieldEmbeddedTopSubgroup_le_baseSubgroup K' L' j + let hH'H := + numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j + let hJ'J := + numberFieldEmbeddedTopSubgroup_le_of_tower K K' L L' j + let _ : + (CyclicCohomology.extensionSubgroup H J hJH).Normal := + numberFieldEmbeddedExtensionSubgroup_normal K L jLower + let _ : + Finite + (H.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H J hJH) := + numberFieldEmbeddedExtensionQuotient_finite K L jLower + let _ : + (CyclicCohomology.extensionSubgroup H' J' hJ'H').Normal := + numberFieldEmbeddedExtensionSubgroup_normal K' L' j + let _ : + Finite + (H'.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H' J' hJ'H') := + numberFieldEmbeddedExtensionQuotient_finite K' L' j + let hHH'finite := + numberFieldEmbeddedBaseChangeExtensionQuotientFinite K K' L L' j + let T : + FiniteAbstractFieldExtension + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) := + { field := numberFieldEmbeddedFiniteAbstractField K' L' j + base := numberFieldEmbeddedFiniteAbstractField K L jLower + below := hH'H + finiteQuotient := hHH'finite } + let hTBaseNormal : + (CyclicCohomology.extensionSubgroup + T.base.field J hJH).Normal := by + change + (CyclicCohomology.extensionSubgroup H J hJH).Normal + exact numberFieldEmbeddedExtensionSubgroup_normal K L jLower + let hTBaseFinite : + Finite + (T.base.field.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + T.base.field J hJH) := by + change + Finite + (H.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H J hJH) + exact numberFieldEmbeddedExtensionQuotient_finite K L jLower + let hTFieldNormal : + (CyclicCohomology.extensionSubgroup + T.field.field J' hJ'H').Normal := by + change + (CyclicCohomology.extensionSubgroup H' J' hJ'H').Normal + exact numberFieldEmbeddedExtensionSubgroup_normal K' L' j + let hTFieldFinite : + Finite + (T.field.field.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + T.field.field J' hJ'H') := by + change + Finite + (H'.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H' J' hJ'H') + exact numberFieldEmbeddedExtensionQuotient_finite K' L' j + let restrictActual : + Gal(L' / K') →* Gal(L / K) := + (AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K) + apply MonoidHom.ext + intro c + let a := + numberFieldEmbeddedIdeleClassEquivAmbientFixed + K' L' j (Additive.ofMul c) + have hnat := + DegreeData.normResidueNaturality_norm_restriction + (D := rationalCyclotomicDegreeData) + (A := rationalIdeleClassRepresentation) + (v := rationalCyclotomicIdeleClassValuationData) + (hcf := rationalIdeleClassRepresentation_satisfiesClassFieldAxiom) + (T := T) (L := J) (L' := J') + (hLnormal := hTBaseNormal) + (hL'normal := hTFieldNormal) + (hLKfinite := hTBaseFinite) + (hL'K'finite := hTFieldFinite) + hJH hJ'H' hJ'J + have hnatc := + DFunLike.congr_fun hnat + (finiteNormClass rationalIdeleClassRepresentation + H' J' hJ'H' a) + change _ = + rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + T.base + { field := J + below := hJH + normal := hTBaseNormal + finite := hTBaseFinite } + (finiteReciprocityNaturalityNormMap + rationalIdeleClassRepresentation + T.base.field T.field.field J J' + hJH hJ'H' T.below hJ'J + (finiteNormClass rationalIdeleClassRepresentation + T.field.field J' hJ'H' a)) at hnatc + rw [finiteReciprocityNaturalityNormMap_finiteNormClass] + at hnatc + have hnorm : + relativeNorm rationalIdeleClassRepresentation + H H' hH'H a = + numberFieldEmbeddedIdeleClassEquivAmbientFixed + K L jLower + (Additive.ofMul (_root_.ideleClassNorm K K' c)) := + numberFieldEmbeddedIdeleClassEquivAmbientFixed_relativeNorm + K K' L L' j c + calc + restrictActual + (globalNormResidueMonoidHomOfEmbedding K' L' j c) = + restrictActual + (Additive.toMul + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K' L' j + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (numberFieldEmbeddedFiniteAbstractField K' L' j) + (numberFieldEmbeddedFiniteGaloisSubextension K' L' j) + (finiteNormClass rationalIdeleClassRepresentation + H' J' hJ'H' a)))) := by + rw [globalNormResidueMonoidHomOfEmbedding_apply] + _ = + Additive.toMul + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K L jLower + (MonoidHom.toAdditive + (normResidueNaturalityAbelianizedRestriction + H H' J J' hJH hJ'H' hH'H hJ'J) + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (numberFieldEmbeddedFiniteAbstractField K' L' j) + (numberFieldEmbeddedFiniteGaloisSubextension K' L' j) + (finiteNormClass rationalIdeleClassRepresentation + H' J' hJ'H' a)))) := by + exact + numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup_restriction + K K' L L' j _ + _ = + Additive.toMul + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K L jLower + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + (numberFieldEmbeddedFiniteAbstractField K L jLower) + (numberFieldEmbeddedFiniteGaloisSubextension K L jLower) + (finiteNormClass rationalIdeleClassRepresentation + H J hJH + (relativeNorm rationalIdeleClassRepresentation + H H' hH'H a)))) := by + exact congrArg + (fun z => + Additive.toMul + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K L jLower z)) + hnatc + _ = + globalNormResidueMonoidHomOfEmbedding K L jLower + (_root_.ideleClassNorm K K' c) := by + rw [hnorm, + ← globalNormResidueMonoidHomOfEmbedding_apply] + +end EmbeddedNumberFieldRestriction + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTowerRestriction.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTowerRestriction.lean new file mode 100644 index 0000000..16ee169 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTowerRestriction.lean @@ -0,0 +1,372 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalNormResidueNaturalityTowerBase + + +set_option autoImplicit false + + +open scoped IsMulCommutative + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +universe u + + +section EmbeddedNumberFieldRestriction + +variable + (K K' L L' : Type) + [Field K] [NumberField K] + [Field K'] [NumberField K'] + [Field L] [NumberField L] + [Field L'] [NumberField L'] + [Algebra K K'] [Algebra K L] [Algebra K L'] + [Algebra K' L'] [Algebra L L'] + [IsScalarTower K K' L'] [IsScalarTower K L L'] + +attribute [local instance] + naturalityIdeleClassCommGroup + ideleClassGroupIsMulCommutative + ideleClassSubgroupNormal + numberFieldEmbeddedBaseChangeExtensionSubgroupNormal + numberFieldEmbeddedBaseChangeExtensionQuotientFinite + numberFieldEmbeddedBaseChangeBaseFixedFieldFiniteDimensional + numberFieldEmbeddedBaseChangeRelativeFixedFieldFiniteDimensional + numberFieldEmbeddedBaseChangeRelativeFixedFieldScalarTower + numberFieldEmbeddedBaseChangeRelativeFixedFieldAbsoluteFiniteDimensional + numberFieldEmbeddedBaseChangeRelativeFixedFieldNumberField + numberFieldEmbeddedBaseChangeRelativeFixedFieldIsGalois + +/-- In one common rational-separable-closure realization, the canonical +quotient-to-Galois comparisons intertwine abstract restriction with +ordinary restriction of the actual number-field automorphisms. -/ +theorem + numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup_restriction + [FiniteDimensional K L] [IsAbelianGalois K L] + [FiniteDimensional K' L'] [IsAbelianGalois K' L'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) + (z : + Abelianization + (numberFieldEmbeddedFiniteGaloisSubextension + K' L' j).extensionQuotient) : + let jLower : L →ₐ[ℚ] SeparableClosure ℚ := + j.comp (IsScalarTower.toAlgHom ℚ L L') + let H := + numberFieldEmbeddedBaseSubgroup K L jLower + let H' := + numberFieldEmbeddedBaseSubgroup K' L' j + let J := + numberFieldEmbeddedTopSubgroup K L jLower + let J' := + numberFieldEmbeddedTopSubgroup K' L' j + let hH'H := + numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j + let hJ'J := + numberFieldEmbeddedTopSubgroup_le_of_tower K K' L L' j + let hJH := + numberFieldEmbeddedTopSubgroup_le_baseSubgroup K L jLower + let hJ'H' := + numberFieldEmbeddedTopSubgroup_le_baseSubgroup K' L' j + letI _ : + (CyclicCohomology.extensionSubgroup H J hJH).Normal := + numberFieldEmbeddedExtensionSubgroup_normal K L jLower + letI _ : + (CyclicCohomology.extensionSubgroup H' J' hJ'H').Normal := + numberFieldEmbeddedExtensionSubgroup_normal K' L' j + ((AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K)) + (Additive.toMul + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K' L' j (Additive.ofMul z))) = + Additive.toMul + (numberFieldEmbeddedAbelianizedExtensionQuotientEquivGaloisGroup + K L jLower + (MonoidHom.toAdditive + (normResidueNaturalityAbelianizedRestriction + H H' J J' + hJH hJ'H' + hH'H hJ'J) + (Additive.ofMul z))) := by + dsimp only + let jLower : L →ₐ[ℚ] SeparableClosure ℚ := + j.comp (IsScalarTower.toAlgHom ℚ L L') + let H := + numberFieldEmbeddedBaseSubgroup K L jLower + let H' := + numberFieldEmbeddedBaseSubgroup K' L' j + let J := + numberFieldEmbeddedTopSubgroup K L jLower + let J' := + numberFieldEmbeddedTopSubgroup K' L' j + let hH'H := + numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j + let hJ'J := + numberFieldEmbeddedTopSubgroup_le_of_tower K K' L L' j + let hJH := + numberFieldEmbeddedTopSubgroup_le_baseSubgroup + K L jLower + let hJ'H' := + numberFieldEmbeddedTopSubgroup_le_baseSubgroup + K' L' j + let hLowerNormal : + (CyclicCohomology.extensionSubgroup H J hJH).Normal := + numberFieldEmbeddedExtensionSubgroup_normal K L jLower + let hUpperNormal : + (CyclicCohomology.extensionSubgroup H' J' hJ'H').Normal := + numberFieldEmbeddedExtensionSubgroup_normal K' L' j + let qLower := + numberFieldEmbeddedExtensionQuotientEquivGaloisGroup + K L jLower + let qUpper := + numberFieldEmbeddedExtensionQuotientEquivGaloisGroup + K' L' j + let qLowerRaw : + (H.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H J hJH) ≃* + Gal(L / K) := by + exact + { qLower.toEquiv with + map_mul' := fun x y => qLower.map_mul x y } + let qUpperRaw : + (H'.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H' J' hJ'H') ≃* + Gal(L' / K') := by + exact + { qUpper.toEquiv with + map_mul' := fun x y => qUpper.map_mul x y } + let restrictActual : + Gal(L' / K') →* Gal(L / K) := + (AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K) + obtain ⟨q, rfl⟩ := + QuotientGroup.mk_surjective z + obtain ⟨σ, rfl⟩ := + (numberFieldEmbeddedFiniteGaloisSubextension + K' L' j).extensionQuotientMk_surjective q + change + restrictActual + ((Abelianization.equivOfComm (H := Gal(L' / K'))).symm + (qUpperRaw.abelianizationCongr + (Abelianization.of (QuotientGroup.mk σ)))) = + (Abelianization.equivOfComm (H := Gal(L / K))).symm + (qLowerRaw.abelianizationCongr + (normResidueNaturalityAbelianizedRestriction + H H' J J' hJH hJ'H' hH'H hJ'J + (Abelianization.of (QuotientGroup.mk σ)))) + rw [normResidueNaturalityAbelianizedRestriction_of_mk, + abelianizationCongr_of, abelianizationCongr_of] + change + restrictActual (qUpperRaw (QuotientGroup.mk σ)) = + qLowerRaw + (QuotientGroup.mk (Subgroup.inclusion hH'H σ)) + apply AlgEquiv.ext + intro x + apply jLower.injective + let hUpperAlgebra : Algebra K' (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra K' L' j + let eUpper := + numberFieldEmbeddedSeparableClosureEquiv K' L' j + let hLowerAlgebra : Algebra K (SeparableClosure ℚ) := + numberFieldEmbeddedSeparableClosureAlgebra K L jLower + let eLower := + numberFieldEmbeddedSeparableClosureEquiv K L jLower + calc + jLower + (restrictActual + (qUpperRaw (QuotientGroup.mk σ)) x) = + j + ((qUpperRaw (QuotientGroup.mk σ)) + (algebraMap L L' x)) := by + exact congrArg j + (AlgEquiv.restrictNormal_commutes + ((AlgEquiv.restrictScalarsHom K) + (qUpperRaw (QuotientGroup.mk σ))) + L x) + _ = σ.1.1 + (j (algebraMap L L' x)) := by + exact + ambientEmbeddedExtensionQuotientEquivGaloisGroup_mk_apply + ℚ K' L' j eUpper σ (algebraMap L L' x) + _ = (Subgroup.inclusion hH'H σ).1.1 + (jLower x) := rfl + _ = jLower + (qLowerRaw + (QuotientGroup.mk + (Subgroup.inclusion hH'H σ)) x) := by + exact + (ambientEmbeddedExtensionQuotientEquivGaloisGroup_mk_apply + ℚ K L jLower eLower + (Subgroup.inclusion hH'H σ) x).symm + +/-- In a compatible common embedding, the fixed-part relative norm +between two (Galois-related) base fields is the genuine ordinary +idele-class norm. -/ +theorem numberFieldEmbeddedIdeleClassEquivAmbientFixed_relativeNorm + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) + (c : IdeleClassGroup K') : + let jLower : L →ₐ[ℚ] SeparableClosure ℚ := + j.comp (IsScalarTower.toAlgHom ℚ L L') + let H := + numberFieldEmbeddedBaseSubgroup K L jLower + let H' := + numberFieldEmbeddedBaseSubgroup K' L' j + let hH'H := + numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j + letI _ : Finite + (H.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H H' hH'H) := + numberFieldEmbeddedBaseChangeExtensionQuotientFinite + K K' L L' j + relativeNorm rationalIdeleClassRepresentation H H' hH'H + (numberFieldEmbeddedIdeleClassEquivAmbientFixed + K' L' j (Additive.ofMul c)) = + numberFieldEmbeddedIdeleClassEquivAmbientFixed + K L jLower + (Additive.ofMul (_root_.ideleClassNorm K K' c)) := by + intro jLower H H' + let hH'H := + numberFieldEmbeddedBaseSubgroup_le_of_tower K K' L L' j + let hnormal := + numberFieldEmbeddedBaseChangeExtensionSubgroupNormal K K' L L' j + let F := + abstractFixedField ℚ (SeparableClosure ℚ) H + let E := + abstractRelativeFixedField ℚ (SeparableClosure ℚ) hH'H + let _ : + (CyclicCohomology.extensionSubgroup H H' hH'H).Normal := + hnormal + let _ : + Finite + (H.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H H' hH'H) := + numberFieldEmbeddedBaseChangeExtensionQuotientFinite + K K' L L' j + let _ : + Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + H (le_baseField H)) := + numberFieldEmbeddedAbsoluteQuotientFinite K L jLower + let _ : NumberField F := + numberFieldEmbeddedAbstractFixedFieldNumberField K L jLower + let _ : NumberField E := + numberFieldEmbeddedBaseChangeRelativeFixedFieldNumberField + K K' L L' j + let _ : FiniteDimensional ℚ (E.restrictScalars ℚ) := by + change FiniteDimensional ℚ E + exact + numberFieldEmbeddedBaseChangeRelativeFixedFieldAbsoluteFiniteDimensional + K K' L L' j + let _ : NumberField + (abstractFixedField ℚ (SeparableClosure ℚ) H') := + numberFieldEmbeddedAbstractFixedFieldNumberField K' L' j + have hE : + E.restrictScalars ℚ = + abstractFixedField ℚ (SeparableClosure ℚ) H' := + IntermediateField.extendScalars_restrictScalars + (abstractFixedField_le + ℚ (SeparableClosure ℚ) hH'H) + let eRel : + E ≃ₐ[ℚ] + abstractFixedField ℚ (SeparableClosure ℚ) H' := + IntermediateField.equivOfEq hE + let eK : + K ≃ₐ[ℚ] F := + numberFieldEmbeddedAbstractBaseFieldEquiv K L jLower + let eK'Base : + K' ≃ₐ[ℚ] + abstractFixedField ℚ (SeparableClosure ℚ) H' := + numberFieldEmbeddedAbstractBaseFieldEquiv K' L' j + let eK' : K' ≃ₐ[ℚ] E := + eK'Base.trans eRel.symm + have hcompat (x : K) : + eK' (algebraMap K K' x) = + algebraMap F E (eK x) := by + apply eRel.injective + apply Subtype.ext + change + j (algebraMap K' L' (algebraMap K K' x)) = + j (algebraMap L L' (algebraMap K L x)) + rw [← IsScalarTower.algebraMap_apply K K' L', + ← IsScalarTower.algebraMap_apply K L L'] + have hupper : + rationalAbstractRelativeFixedFieldIdeleClassEquivFixed + H H' hH'H + (Additive.ofMul (ideleClassCongr eK' c)) = + numberFieldEmbeddedIdeleClassEquivAmbientFixed + K' L' j (Additive.ofMul c) := by + apply Subtype.ext + change + ((rationalIdeleClassEquivFixed (E.restrictScalars ℚ)) + (Additive.ofMul (ideleClassCongr eK' c))).1 = + ((rationalIdeleClassEquivFixed + (abstractFixedField ℚ (SeparableClosure ℚ) H')) + (Additive.ofMul (ideleClassCongr eK'Base c))).1 + exact rationalIdeleClassEquivFixed_transport_baseEquiv_val + (T := K') (A := E.restrictScalars ℚ) + (B := abstractFixedField ℚ (SeparableClosure ℚ) H') hE eK'Base c + have hrelative := + rationalAbstractRelativeFixedFieldIdeleClassEquivFixed_relativeNorm + H H' hH'H hnormal + (Additive.ofMul (ideleClassCongr eK' c)) + change + relativeNorm rationalIdeleClassRepresentation H H' hH'H + (rationalAbstractRelativeFixedFieldIdeleClassEquivFixed + H H' hH'H + (Additive.ofMul (ideleClassCongr eK' c))) = + rationalAbstractFixedFieldIdeleClassEquivFixed H + (Additive.ofMul + (_root_.ideleClassNorm F E + (ideleClassCongr eK' c))) + at hrelative + calc + relativeNorm rationalIdeleClassRepresentation H H' hH'H + (numberFieldEmbeddedIdeleClassEquivAmbientFixed + K' L' j (Additive.ofMul c)) = + relativeNorm rationalIdeleClassRepresentation H H' hH'H + (rationalAbstractRelativeFixedFieldIdeleClassEquivFixed + H H' hH'H (Additive.ofMul (ideleClassCongr eK' c))) := + congrArg (relativeNorm rationalIdeleClassRepresentation H H' hH'H) + hupper.symm + _ = rationalAbstractFixedFieldIdeleClassEquivFixed H + (Additive.ofMul + (_root_.ideleClassNorm F E (ideleClassCongr eK' c))) := hrelative + _ = numberFieldEmbeddedIdeleClassEquivAmbientFixed + K L jLower (Additive.ofMul (_root_.ideleClassNorm K K' c)) := by + change + rationalAbstractFixedFieldIdeleClassEquivFixed H + (Additive.ofMul + (_root_.ideleClassNorm F E (ideleClassCongr eK' c))) = + rationalAbstractFixedFieldIdeleClassEquivFixed H + (Additive.ofMul + (ideleClassCongr eK (_root_.ideleClassNorm K K' c))) + apply congrArg (rationalAbstractFixedFieldIdeleClassEquivFixed H) + apply congrArg Additive.ofMul + exact + (ideleClassCongr_ideleClassNorm + (K := K) (K' := F) (L := K') (L' := E) eK eK' hcompat c).symm + + +end EmbeddedNumberFieldRestriction + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTransports.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTransports.lean new file mode 100644 index 0000000..5a39a62 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/GlobalNormResidueNaturalityTransports.lean @@ -0,0 +1,445 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.AbstractFixedFieldGlobalNormResidue +import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.TowerAlgEquivNaturality + + +set_option autoImplicit false + + +open scoped IsMulCommutative + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open ClassFormation +open GlobalClassFields +open KummerTheory +open AlgebraicNumberTheory +open LocalClassFieldTheory +open RamificationTheory + +universe u + +/-- The commutative group structure on the quotient of ideles by principal ideles. -/ +@[instance_reducible] +noncomputable def naturalityIdeleClassCommGroup + (F : Type) [Field F] [NumberField F] : CommGroup (IdeleClassGroup F) := + QuotientGroup.Quotient.commGroup (IdeleGroup.principalSubgroup F) + +attribute [local instance] naturalityIdeleClassCommGroup + +local instance ideleClassGroupIsMulCommutative + {F : Type} [Field F] [NumberField F] + : IsMulCommutative (IdeleClassGroup F) := + ⟨⟨fun a b => mul_comm a b⟩⟩ + +local instance ideleClassSubgroupNormal + {F : Type} [Field F] [NumberField F] + (N : Subgroup (IdeleClassGroup F)) : N.Normal := + N.normal_of_isMulCommutative + + +/-- Two finite Galois subextensions with the same underlying closed subgroup +are equal; the remaining structure fields are proof-irrelevant. -/ +private theorem finiteGaloisSubextension_eq_of_field_eq + {G : Type u} [Group G] [TopologicalSpace G] + {K : ClosedSubgroup G} + (A B : FiniteGaloisSubextension K) + (h : A.field = B.field) : + A = B := by + cases A with + | mk A hA nA fA => + cases B with + | mk B hB nB fB => + dsimp only at h + cases h + rfl + +/-- Rebase a finite Galois subextension along equality of its bundled base. +The field equality is the only data component; the remaining fields are +proof-irrelevant. -/ +theorem finiteGaloisSubextension_transport_eq_of_field_eq + {G : Type u} [Group G] [TopologicalSpace G] + {A B : FiniteAbstractField G} + (hAB : A = B) + (P : FiniteGaloisSubextension A.field) + (Q : FiniteGaloisSubextension B.field) + (hfield : P.field = Q.field) : + Eq.mp + (congrArg + (fun X : FiniteAbstractField G => + FiniteGaloisSubextension X.field) + hAB) + P = Q := by + cases hAB + exact finiteGaloisSubextension_eq_of_field_eq P Q hfield + +/-- Transporting an additive equivalence between rational ambient fixed +subgroups does not change the underlying direct-limit class. -/ +theorem rationalAmbientFixedAddEquiv_transport_apply_val + {A B : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)} + (hAB : A = B) + {X : Type} [AddGroup X] + (e : X ≃+ + ambientFixedAddSubgroup rationalIdeleClassRepresentation A.field) + (x : X) : + ((Eq.mp + (congrArg + (fun Y : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + X ≃+ ambientFixedAddSubgroup + rationalIdeleClassRepresentation Y.field) + hAB) + e x).1) = + (e x).1 := by + cases hAB + rfl + +/-- Changing only the bundled subgroup of an additive subgroup element +does not change its value in the ambient group. -/ +private theorem addSubgroupCongr_apply_val + {A : Type} [AddGroup A] + {H K : AddSubgroup A} + (h : H = K) (x : H) : + ((AddEquiv.addSubgroupCongr h x).1 : A) = x.1 := by + cases h + rfl + +/-- Transporting an idele class along a field equality and the corresponding +algebra equivalence leaves its rational direct-limit representative fixed. -/ +theorem rationalIdeleClassEquivFixed_congr_apply_val + {A B : IntermediateField ℚ (SeparableClosure ℚ)} + [FiniteDimensional ℚ A] [FiniteDimensional ℚ B] + (h : A = B) + (e : B ≃ₐ[ℚ] A) + (he : e.trans (IntermediateField.equivOfEq h) = + (AlgEquiv.refl : B ≃ₐ[ℚ] B)) + (c : Additive (IdeleClassGroup B)) : + ((rationalIdeleClassEquivFixed A) + (MulEquiv.toAdditive (ideleClassCongr e) c)).1 = + ((rationalIdeleClassEquivFixed B) c).1 := by + cases h + have he' : e = AlgEquiv.refl := by + apply AlgEquiv.ext + intro x + have hx := DFunLike.congr_fun he x + change e x = x at hx + exact hx + rw [he'] + have hc : + MulEquiv.toAdditive + (ideleClassCongr (AlgEquiv.refl : A ≃ₐ[ℚ] A)) c = c := by + cases c with + | ofMul c => + exact congrArg Additive.ofMul (ideleClassCongr_refl c) + rw [hc] + +/-- Transporting the target intermediate field of a base-field equivalence +preserves its rational fixed-part representative. -/ +theorem rationalIdeleClassEquivFixed_transport_baseEquiv_val + {T : Type} [Field T] [NumberField T] + {A B : IntermediateField ℚ (SeparableClosure ℚ)} + [FiniteDimensional ℚ A] [FiniteDimensional ℚ B] + (h : A = B) (e : T ≃ₐ[ℚ] B) + (c : IdeleClassGroup T) : + ((rationalIdeleClassEquivFixed A) + (Additive.ofMul + (ideleClassCongr (K := T) (M := A) + (e.trans (IntermediateField.equivOfEq h).symm) c))).1 = + ((rationalIdeleClassEquivFixed B) + (Additive.ofMul (ideleClassCongr (K := T) (M := B) e c))).1 := by + cases h + have he : + e.trans (IntermediateField.equivOfEq (rfl : A = A)).symm = e := by + ext x + rfl + rw [he] + +/-- Equality of the lower and upper closed subgroups transports the raw +extension quotient without exposing dependent rewrites to clients. -/ +def extensionQuotientMulEquivOfEq + {G : Type u} [Group G] [TopologicalSpace G] + {H H' J J' : ClosedSubgroup G} + (hH : H = H') (hJ : J = J') + (hJH : J.toSubgroup ≤ H.toSubgroup) + (hJH' : J'.toSubgroup ≤ H'.toSubgroup) + [(CyclicCohomology.extensionSubgroup H J hJH).Normal] + [(CyclicCohomology.extensionSubgroup H' J' hJH').Normal] : + (H.toSubgroup ⧸ CyclicCohomology.extensionSubgroup H J hJH) ≃* + (H'.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup H' J' hJH') := by + cases hH + cases hJ + exact MulEquiv.refl _ + +/-- The quotient transport sends a quotient representative to the same +ambient group element, rebundled in the equal lower subgroup. -/ +@[simp] +theorem extensionQuotientMulEquivOfEq_mk + {G : Type u} [Group G] [TopologicalSpace G] + {H H' J J' : ClosedSubgroup G} + (hH : H = H') (hJ : J = J') + (hJH : J.toSubgroup ≤ H.toSubgroup) + (hJH' : J'.toSubgroup ≤ H'.toSubgroup) + [(CyclicCohomology.extensionSubgroup H J hJH).Normal] + [(CyclicCohomology.extensionSubgroup H' J' hJH').Normal] + (σ : H.toSubgroup) : + extensionQuotientMulEquivOfEq hH hJ hJH hJH' + (QuotientGroup.mk σ) = + QuotientGroup.mk + ((MulEquiv.subgroupCongr + (congrArg ClosedSubgroup.toSubgroup hH)) σ) := by + cases hH + cases hJ + rfl + +/-- Rebundling an element along equality of closed subgroups preserves its +underlying ambient group element. -/ +theorem closedSubgroupCongr_apply_val + {G : Type u} [Group G] [TopologicalSpace G] + {H H' : ClosedSubgroup G} + (hH : H = H') (σ : H.toSubgroup) : + (((MulEquiv.subgroupCongr + (congrArg ClosedSubgroup.toSubgroup hH)) σ).1 : G) = σ.1 := by + cases hH + rfl + +/-- Rebase an abelianized extension-quotient equivalence together with its +finite abstract base. -/ +def abelianizedExtensionQuotientAddEquiv_transportBase + {G : Type u} [Group G] [TopologicalSpace G] + {A B : FiniteAbstractField G} + (hAB : A = B) + (P : FiniteGaloisSubextension A.field) + {X : Type} [AddGroup X] + (e : Additive (Abelianization P.extensionQuotient) ≃+ X) : + Additive + (Abelianization + (Eq.mp + (congrArg + (fun Y : FiniteAbstractField G => + FiniteGaloisSubextension Y.field) + hAB) + P).extensionQuotient) ≃+ X := by + cases hAB + exact e + +/-- Rebase an abelianized equivalence along equality of finite Galois +subextensions over a fixed abstract base. -/ +def abelianizedExtensionQuotientAddEquiv_transportExtension + {G : Type u} [Group G] [TopologicalSpace G] + {K : ClosedSubgroup G} + {P Q : FiniteGaloisSubextension K} + (hPQ : P = Q) + {X : Type} [AddGroup X] + (e : Additive (Abelianization P.extensionQuotient) ≃+ X) : + Additive (Abelianization Q.extensionQuotient) ≃+ X := by + cases hPQ + exact e + +/-- The explicit quotient equivalence induced by rebasing a finite Galois +subextension. -/ +def extensionQuotientMulEquiv_transportFiniteGalois + {G : Type u} [Group G] [TopologicalSpace G] + {A B : FiniteAbstractField G} + (hAB : A = B) + (P : FiniteGaloisSubextension A.field) + {Q : FiniteGaloisSubextension B.field} + (hPQ : + Eq.mp + (congrArg + (fun Y : FiniteAbstractField G => + FiniteGaloisSubextension Y.field) + hAB) + P = Q) : + Q.extensionQuotient ≃* P.extensionQuotient := by + cases hAB + cases hPQ + exact MulEquiv.refl _ + +/-- Quotient rebasing sends a canonical representative to the same ambient +group element rebundled in the old base subgroup. -/ +@[simp] +theorem extensionQuotientMulEquiv_transportFiniteGalois_mk + {G : Type u} [Group G] [TopologicalSpace G] + {A B : FiniteAbstractField G} + (hAB : A = B) + (P : FiniteGaloisSubextension A.field) + {Q : FiniteGaloisSubextension B.field} + (hPQ : + Eq.mp + (congrArg + (fun Y : FiniteAbstractField G => + FiniteGaloisSubextension Y.field) + hAB) + P = Q) + (σ : B.field.toSubgroup) : + extensionQuotientMulEquiv_transportFiniteGalois hAB P hPQ + (Q.extensionQuotientMk σ) = + P.extensionQuotientMk + ((MulEquiv.subgroupCongr + (congrArg ClosedSubgroup.toSubgroup + (congrArg FiniteAbstractField.field hAB).symm)) σ) := by + cases hAB + cases hPQ + rfl + +/-- Abelianization commutes with simultaneous transport of the abstract base +and its finite Galois subextension. -/ +theorem abelianizedCanonicalEquiv_transportFiniteGalois + {G : Type u} [Group G] [TopologicalSpace G] + {A B : FiniteAbstractField G} + (hAB : A = B) + (P : FiniteGaloisSubextension A.field) + {Q : FiniteGaloisSubextension B.field} + (hPQ : + Eq.mp + (congrArg + (fun Y : FiniteAbstractField G => + FiniteGaloisSubextension Y.field) + hAB) + P = Q) + {X : Type} [CommGroup X] + (e : P.extensionQuotient ≃* X) : + abelianizedExtensionQuotientAddEquiv_transportExtension hPQ + (abelianizedExtensionQuotientAddEquiv_transportBase + hAB P + (MulEquiv.toAdditive + (e.abelianizationCongr.trans + (Abelianization.equivOfComm : X ≃* Abelianization X).symm))) = + MulEquiv.toAdditive + (((extensionQuotientMulEquiv_transportFiniteGalois + hAB P hPQ).trans e).abelianizationCongr.trans + (Abelianization.equivOfComm : X ≃* Abelianization X).symm) := by + cases hAB + cases hPQ + rfl + + +/-- The finite norm-residue value, transported from the rational idele-class +representation and the abelianized extension quotient to the groups `C` and `X`. -/ +def rationalFiniteNormResidueValue + (K : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + (L : FiniteGaloisSubextension K.field) + {C X : Type} [AddGroup C] [AddGroup X] + (eIdele : C ≃+ + ambientFixedAddSubgroup rationalIdeleClassRepresentation K.field) + (eGalois : Additive (Abelianization L.extensionQuotient) ≃+ X) + (c : C) : X := by + letI : + Finite + (K.field.toSubgroup ⧸ + CyclicCohomology.extensionSubgroup + K.field L.field L.below) := + L.finite + exact + eGalois + (rationalCyclotomicDegreeData.normResidueSymbol + rationalIdeleClassRepresentation + rationalCyclotomicIdeleClassValuationData + rationalIdeleClassRepresentation_satisfiesClassFieldAxiom + K L + (finiteNormClass rationalIdeleClassRepresentation + K.field L.field L.below (eIdele c))) + +/-- The packaged norm-residue value is invariant under rebasing the finite +abstract field together with all dependent data. -/ +theorem rationalFiniteNormResidueValue_transportBase + {A B : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)} + (hAB : A = B) + (P : FiniteGaloisSubextension A.field) + {C X : Type} [AddGroup C] [AddGroup X] + (eIdele : C ≃+ + ambientFixedAddSubgroup rationalIdeleClassRepresentation A.field) + (eGalois : Additive (Abelianization P.extensionQuotient) ≃+ X) + (c : C) : + rationalFiniteNormResidueValue A P eIdele eGalois c = + rationalFiniteNormResidueValue B + (Eq.mp + (congrArg + (fun Y : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + FiniteGaloisSubextension Y.field) + hAB) + P) + (Eq.mp + (congrArg + (fun Y : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) => + C ≃+ ambientFixedAddSubgroup + rationalIdeleClassRepresentation Y.field) + hAB) + eIdele) + (abelianizedExtensionQuotientAddEquiv_transportBase + hAB P eGalois) + c := by + cases hAB + rfl + +/-- The packaged norm-residue value is invariant under equality of the finite +Galois subextension. -/ +theorem rationalFiniteNormResidueValue_transportExtension + (K : FiniteAbstractField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + {P Q : FiniteGaloisSubextension K.field} + (hPQ : P = Q) + {C X : Type} [AddGroup C] [AddGroup X] + (eIdele : C ≃+ + ambientFixedAddSubgroup rationalIdeleClassRepresentation K.field) + (eGalois : Additive (Abelianization P.extensionQuotient) ≃+ X) + (c : C) : + rationalFiniteNormResidueValue K P eIdele eGalois c = + rationalFiniteNormResidueValue K Q eIdele + (abelianizedExtensionQuotientAddEquiv_transportExtension + hPQ eGalois) + c := by + cases hPQ + rfl + +/-- Evaluation of the canonical abelianization comparison induced by a +multiplicative equivalence into a commutative group. -/ +theorem abelianizationCongrToComm_apply + {Q R : Type*} [Group Q] [CommGroup R] + (e : Q ≃* R) (q : Q) : + MulEquiv.toAdditive + (e.abelianizationCongr.trans + (Abelianization.equivOfComm : R ≃* Abelianization R).symm) + (Additive.ofMul (Abelianization.of q)) = + Additive.ofMul (e q) := by + apply Additive.toMul.injective + change + (Abelianization.equivOfComm : R ≃* Abelianization R).symm + (e.abelianizationCongr (Abelianization.of q)) = e q + rw [abelianizationCongr_of] + exact + (Abelianization.equivOfComm : R ≃* Abelianization R).symm_apply_apply _ + +/-- Evaluation of the canonical quotient from the abelianization of a +commutative group. -/ +theorem commutativeAbelianizationEquiv_apply + {Q R : Type*} [CommGroup Q] [Group R] + (e : Q ≃* R) (q : Q) : + MulEquiv.toAdditive + ((Abelianization.equivOfComm : Q ≃* Abelianization Q).symm.trans e) + (Additive.ofMul (Abelianization.of q)) = + Additive.ofMul (e q) := by + apply Additive.toMul.injective + change + e ((Abelianization.equivOfComm : Q ≃* Abelianization Q).symm + (Abelianization.of q)) = e q + exact congrArg e + ((Abelianization.equivOfComm : Q ≃* Abelianization Q).symm_apply_apply q) + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/IdeleClassDirectLimitAbstractFixedField.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/IdeleClassDirectLimitAbstractFixedField.lean index 08f2620..a101f78 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/IdeleClassDirectLimitAbstractFixedField.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/IdeleClassDirectLimitAbstractFixedField.lean @@ -7,6 +7,7 @@ Authors: Naganori Yamaguchi (assisted by OpenAI Codex) import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.IdeleClassDirectLimitFixedPoints import ClassFieldTheory.LocalClassFieldTheory.Finite.LocalReciprocity.AbstractFixedFieldNorm + set_option autoImplicit false /-! @@ -202,7 +203,7 @@ theorem rationalIdeleClassEquivBaseFixed_coe E (RelativeIdeleGroup.classInclusion ℚ E c)) exact Eq.trans h0 (Eq.trans h1 (Eq.trans h2 (Eq.trans h3 h4))) -private noncomputable instance +private noncomputable instance abstractFixedFieldNumberField (K : ClosedSubgroup (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) [hfinite : Finite diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/IdeleClassDirectLimitCore.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/IdeleClassDirectLimitCore.lean index 870927a..7f759bc 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/IdeleClassDirectLimitCore.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/IdeleClassDirectLimitCore.lean @@ -9,6 +9,7 @@ import GaloisCohomology.Cyclic.NormKernelVanishing import Mathlib.Algebra.Colimit.DirectLimit import Mathlib.FieldTheory.Galois.Profinite + set_option autoImplicit false /-! @@ -107,19 +108,19 @@ noncomputable instance rationalFiniteGaloisIdeleClassMulDistribMulAction (RelativeIdeleGroup.ClassGroup ℚ E) := rationalAbsoluteGaloisIdeleClassAction E -private instance +private instance classGroupMonoid (E : FiniteGaloisIntermediateField ℚ (SeparableClosure ℚ)) : Monoid (RelativeIdeleGroup.ClassGroup ℚ E) := inferInstance -private noncomputable instance : +private noncomputable instance actionFamily : ∀ E : FiniteGaloisIntermediateField ℚ (SeparableClosure ℚ), MulDistribMulAction (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) (RelativeIdeleGroup.ClassGroup ℚ E) := fun E => rationalAbsoluteGaloisIdeleClassAction E -private noncomputable instance : +private noncomputable instance smulFamily : ∀ E : FiniteGaloisIntermediateField ℚ (SeparableClosure ℚ), SMul (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ) @@ -366,7 +367,7 @@ theorem rationalRelativeIdeleClassEmbedding_comp (rationalRelativeAdeleEmbedding_comp hEF hFH (a : RelativeAdeleRing ℚ E))) -private noncomputable instance : +private noncomputable instance transitionDirectedSystem : DirectedSystem (fun E : FiniteGaloisIntermediateField ℚ (SeparableClosure ℚ) => RelativeIdeleGroup.ClassGroup ℚ E) diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryField.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryField.lean index c1e5ac0..1a80072 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryField.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryField.lean @@ -1,1901 +1,2 @@ -/- -Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. -Released under Apache 2.0 license as described in the file LICENSE. -Authors: Naganori Yamaguchi (assisted by OpenAI Codex) --/ - -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicCyclicData -import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ClassFieldRealization -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicUnramifiedLocalGlobalCompatibility -import ClassFieldTheory.AlgebraicNumberTheory.Idele.Extension.OnePlaceBaseNorm - -set_option autoImplicit false - -/-! -# The finite p-adic auxiliary field - -This module realizes the simultaneous finite/cyclotomic lift as an actual -number field and proves the subgroup and intermediate-field identities -needed by the auxiliary-field argument. --/ - -open scoped IsMulCommutative NumberField -open AlgebraicNumberTheory IsDedekindDomain NumberField -open IdeleGroup RelativeIdeleGroup -open AlgebraicNumberTheory.Valuations -open HilbertRamification -open CyclicCohomology -open KummerTheory ClassFormation - -noncomputable section - -namespace GlobalClassFieldTheory -namespace Reciprocity - -open GlobalClassFields - -variable - {K L : Type} - [Field K] [NumberField K] - [Field L] [NumberField L] [Algebra K L] - [FiniteDimensional K L] [IsAbelianGalois K L] - -local instance (p : Nat.Primes) : Fact p.1.Prime := - ⟨p.2⟩ - -attribute [local instance] - rationalSeparableClosureAlgebra - -local instance finitePadicAuxiliaryExtensionNormal : - (extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L)).Normal := - numberFieldTowerExtensionSubgroup_normal K L - -local instance finitePadicAuxiliaryExtensionQuotientFinite : - Finite - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) := - numberFieldTowerExtensionQuotient_finite K L - -noncomputable local instance finitePadicAuxiliaryExtensionQuotientIsMulCommutative : - IsMulCommutative - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) := by - let e : - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) ≃* - Gal(L / K) := - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - exact - { is_comm := - ⟨fun x y => by - apply e.injective - rw [map_mul, map_mul] - exact - (inferInstance : - IsMulCommutative (Gal(L / K))).is_comm.comm - (e x) (e y)⟩ } - -/-- The concrete auxiliary fixed field attached to a simultaneous -finite/cyclotomic lift. -/ -noncomputable def numberFieldTowerFinitePadicCyclicFixedField - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - IntermediateField ℚ (SeparableClosure ℚ) := by - exact - IntermediateField.fixedField - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ).toSubgroup - -/-- A nonzero-degree lift produces a genuine number field: its -concrete fixed field is finite over `ℚ`. -/ -theorem numberFieldTowerFinitePadicCyclicFixedField_finiteDimensional - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (hτ : - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ ≠ - 1) : - FiniteDimensional ℚ - (numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ) := by - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let F := - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ - apply - (InfiniteGalois.isOpen_iff_finite - (K := SeparableClosure ℚ) F).1 - change IsOpen - (IntermediateField.fixedField S.toSubgroup).fixingSubgroup.carrier - rw [InfiniteGalois.fixingSubgroup_fixedField S] - exact - numberFieldTowerFinitePadicCyclicFixedSubgroup_isOpen - (K := K) (L := L) p τ hτ - -/-- The compatible embedded copy of `K` lies in every auxiliary -cyclic fixed field. -/ -theorem numberFieldTowerBaseField_le_finitePadicCyclicFixedField - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - numberFieldTowerBaseField K L ≤ - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ := by - intro x hx - change x ∈ IntermediateField.fixedField - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ).toSubgroup - rw [IntermediateField.mem_fixedField_iff] - intro σ hσ - change - σ ∈ - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ).toSubgroup at hσ - obtain ⟨u, hu, rfl⟩ := hσ - exact - (IntermediateField.mem_fixingSubgroup_iff - (numberFieldTowerBaseField K L) u.1).1 u.2 x hx - -/-- The compatible embedding of the original base field into the -genuine auxiliary fixed field. -/ -noncomputable def numberFieldTowerFinitePadicAuxiliaryBaseEmbedding - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - K →ₐ[ℚ] - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ) := by - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ) - exact - (numberFieldTowerLowerEmbedding K L).codRestrict F.toSubalgebra - (fun x => - numberFieldTowerBaseField_le_finitePadicCyclicFixedField - (K := K) (L := L) p τ ⟨x, rfl⟩) - -/-- Coercing the auxiliary base embedding recovers the fixed lower embedding -into the rational separable closure. -/ -@[simp] -theorem numberFieldTowerFinitePadicAuxiliaryBaseEmbedding_coe - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (x : K) : - ((numberFieldTowerFinitePadicAuxiliaryBaseEmbedding - (K := K) (L := L) p τ x : - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ)) : - SeparableClosure ℚ) = - numberFieldTowerLowerEmbedding K L x := by - rfl - -/-- The compatible copy of the original top field lies in the -auxiliary compositum fixed field. -/ -theorem numberFieldTowerTopField_mem_finitePadicAuxiliaryTopField - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - {x : SeparableClosure ℚ} - (hx : x ∈ numberFieldInRationalSeparableClosure L) : - x ∈ - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below := by - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let T := - numberFieldTowerTopSubgroup L - change x ∈ IntermediateField.fixedField - (S.toSubgroup ⊓ T.toSubgroup) - rw [IntermediateField.mem_fixedField_iff] - intro σ hσ - have hσT : σ ∈ T.toSubgroup := - hσ.2 - change - σ ∈ - (numberFieldInRationalSeparableClosure L).fixingSubgroup - at hσT - exact - (IntermediateField.mem_fixingSubgroup_iff - (numberFieldInRationalSeparableClosure L) σ).1 - hσT x hx - -/-- The compatible embedding of the original top field into the -auxiliary compositum fixed field. -/ -noncomputable def numberFieldTowerFinitePadicAuxiliaryTopEmbedding - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - L →ₐ[ℚ] - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below := by - let E := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below - exact - (numberFieldSeparableClosureEmbedding L).codRestrict - (E.restrictScalars ℚ).toSubalgebra - (fun x => - numberFieldTowerTopField_mem_finitePadicAuxiliaryTopField - (K := K) (L := L) p τ ⟨x, rfl⟩) - -/-- Coercing the auxiliary top embedding recovers the chosen top-field -embedding into the rational separable closure. -/ -@[simp] -theorem numberFieldTowerFinitePadicAuxiliaryTopEmbedding_coe - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (x : L) : - ((numberFieldTowerFinitePadicAuxiliaryTopEmbedding - (K := K) (L := L) p τ x : - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) : - SeparableClosure ℚ) = - numberFieldSeparableClosureEmbedding L x := by - rfl - -/-- The compatible base and top embeddings form the actual -base-change square inside the rational separable closure. -/ -theorem numberFieldTowerFinitePadicAuxiliaryEmbedding_algebraMap - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (x : K) : - ((numberFieldTowerFinitePadicAuxiliaryTopEmbedding - (K := K) (L := L) p τ (algebraMap K L x) : - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) : - SeparableClosure ℚ) = - ((numberFieldTowerFinitePadicAuxiliaryBaseEmbedding - (K := K) (L := L) p τ x : - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ)) : - SeparableClosure ℚ) := by - rfl - -noncomputable instance - numberFieldTowerFinitePadicAuxiliary_baseAlgebra - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - Algebra K - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ)) := by - exact - (numberFieldTowerFinitePadicAuxiliaryBaseEmbedding - (K := K) (L := L) p τ).toRingHom.toAlgebra - -instance - numberFieldTowerFinitePadicAuxiliary_baseRatScalarTower - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - IsScalarTower ℚ K - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ)) := by - exact - IsScalarTower.of_algebraMap_eq' - (numberFieldTowerFinitePadicAuxiliaryBaseEmbedding - (K := K) (L := L) p τ).comp_algebraMap.symm - -noncomputable instance - numberFieldTowerFinitePadicAuxiliary_topAlgebra - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - Algebra L - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) := by - exact - (numberFieldTowerFinitePadicAuxiliaryTopEmbedding - (K := K) (L := L) p τ).toRingHom.toAlgebra - -instance - numberFieldTowerFinitePadicAuxiliary_topRatScalarTower - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - IsScalarTower ℚ L - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) := by - exact - IsScalarTower.of_algebraMap_eq' - (numberFieldTowerFinitePadicAuxiliaryTopEmbedding - (K := K) (L := L) p τ).comp_algebraMap.symm - -noncomputable instance - numberFieldTowerFinitePadicAuxiliary_originalBaseTopAlgebra - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - Algebra K - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) := by - exact - ((numberFieldTowerFinitePadicAuxiliaryTopEmbedding - (K := K) (L := L) p τ).comp - (IsScalarTower.toAlgHom ℚ K L)).toRingHom.toAlgebra - -instance - numberFieldTowerFinitePadicAuxiliary_originalTopScalarTower - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - IsScalarTower K L - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) := by - exact IsScalarTower.of_algebraMap_eq' rfl - -instance - numberFieldTowerFinitePadicAuxiliary_baseTopScalarTower - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - IsScalarTower K - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ)) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) := by - apply IsScalarTower.of_algebraMap_eq' - apply RingHom.ext - intro x - apply Subtype.ext - exact - numberFieldTowerFinitePadicAuxiliaryEmbedding_algebraMap - (K := K) (L := L) p τ x - -/-- The genuine auxiliary fixed field is Galois over the original -base field through the compatible embedding above. -/ -theorem numberFieldTowerFinitePadicAuxiliaryBase_isGalois - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - IsGalois K - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ)) := by - let H := - numberFieldTowerBaseSubgroup K L - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let hSH := - numberFieldTowerFinitePadicCyclicFixedSubgroup_le_baseSubgroup - (K := K) (L := L) p τ - let B := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) H - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) S - let FB := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hSH - let auxiliaryBaseAlgebra : Algebra B FB := - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) hSH).algebra - let auxiliaryBaseGalois : IsGalois B FB := - LocalClassFieldTheory.abstractRelativeFixedField_isGalois - ℚ (SeparableClosure ℚ) H S hSH - (numberFieldTowerFinitePadicCyclicFixedSubgroup_extension_normal - (K := K) (L := L) p τ) - let eK := - numberFieldTowerAbstractBaseFieldEquiv K L - refine - @IsGalois.of_equiv_equiv - B FB _ _ auxiliaryBaseAlgebra - K F _ _ - (numberFieldTowerFinitePadicAuxiliary_baseAlgebra - (K := K) (L := L) p τ) - auxiliaryBaseGalois - eK.symm.toRingEquiv (RingEquiv.refl F) ?_ - apply RingHom.ext - intro x - apply Subtype.ext - change - ((eK (eK.symm x) : B) : SeparableClosure ℚ) = - (x : SeparableClosure ℚ) - exact - congrArg Subtype.val (eK.apply_symm_apply x) - -/-- The distinguished absolute lift, regarded as an element of the -auxiliary base subgroup. -/ -noncomputable def numberFieldTowerFinitePadicAuxiliarySubgroupLift - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ).toSubgroup := - ⟨τ.1, - numberFieldTowerFinitePadicCyclicFixedSubgroup_generator_mem - (K := K) (L := L) p τ⟩ - -/-- The actual automorphism of the auxiliary compositum induced by -the distinguished simultaneous finite/cyclotomic lift. -/ -noncomputable def numberFieldTowerFinitePadicAuxiliaryAutomorphism - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - let P := - numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - Gal( - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below / - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) S) := by - dsimp only - let P := - numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let σS := - numberFieldTowerFinitePadicAuxiliarySubgroupLift - (K := K) (L := L) p τ - exact - LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup - ℚ (SeparableClosure ℚ) - S P.field P.below - P.toFiniteGaloisExtension.normal - (QuotientGroup.mk' - (extensionSubgroup - S P.field P.below) - σS) - -/-- On the common separable closure, the auxiliary automorphism acts -by the original distinguished ambient lift. -/ -theorem numberFieldTowerFinitePadicAuxiliaryAutomorphism_apply_val - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (x : - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) : - ((numberFieldTowerFinitePadicAuxiliaryAutomorphism - (K := K) (L := L) p τ x : - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) : - SeparableClosure ℚ) = - τ.1 (x : SeparableClosure ℚ) := by - let P := - numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let σS := - numberFieldTowerFinitePadicAuxiliarySubgroupLift - (K := K) (L := L) p τ - exact - (LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup_mk_apply_val - ℚ (SeparableClosure ℚ) - S P.field P.below - P.toFiniteGaloisExtension.normal σS x).symm - -/-- Restricting the auxiliary automorphism through the actual -base-change square recovers the finite quotient coordinate of the -distinguished lift. -/ -theorem numberFieldTowerFinitePadicAuxiliaryAutomorphism_restriction - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - ((AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K)) - (numberFieldTowerFinitePadicAuxiliaryAutomorphism - (K := K) (L := L) p τ) = - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ) := by - let E := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below - let σE := - numberFieldTowerFinitePadicAuxiliaryAutomorphism - (K := K) (L := L) p τ - apply AlgEquiv.ext - intro x - apply (numberFieldSeparableClosureEmbedding L).injective - calc - numberFieldSeparableClosureEmbedding L - (((AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K)) σE x) = - ((σE (algebraMap L E x) : E) : - SeparableClosure ℚ) := by - exact congrArg Subtype.val - (AlgEquiv.restrictNormal_commutes - ((AlgEquiv.restrictScalarsHom K) σE) L x) - _ = τ.1 (numberFieldSeparableClosureEmbedding L x) := by - rw [ - numberFieldTowerFinitePadicAuxiliaryAutomorphism_apply_val - (K := K) (L := L) p τ] - rfl - _ = - numberFieldSeparableClosureEmbedding L - (numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ) x) := by - exact - (numberFieldTowerExtensionQuotientEquivGaloisGroup_mk_apply - (K := K) (L := L) τ x).symm - -/-- Restriction of the chosen separable-closure place to the genuine -auxiliary base field. This is an exact extension of the original -finite place of `K`, not merely an equivalent valuation. -/ -noncomputable def - numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - AbsoluteValueExtension - (NumberField.HeightOneSpectrum.adicAbv K v) - (LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ)) := by - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ) - let wΩ := - numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v (chosenFinitePlaceExtension (L := L) v) - refine - ⟨wΩ.1.comp (f := F.val.toRingHom) F.val.injective, ?_⟩ - intro x - change - wΩ.1 (numberFieldTowerLowerEmbedding K L x) = - NumberField.HeightOneSpectrum.adicAbv K v x - exact wΩ.2 x - -/-- Restriction of the same separable-closure place to the genuine -auxiliary compositum. Its restriction to `K` agrees exactly with the -original normalized finite absolute value. -/ -noncomputable def - numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - AbsoluteValueExtension - (NumberField.HeightOneSpectrum.adicAbv K v) - (LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) := by - let E := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below - let wΩ := - numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v (chosenFinitePlaceExtension (L := L) v) - refine - ⟨wΩ.1.comp (f := E.val.toRingHom) E.val.injective, ?_⟩ - intro x - change - wΩ.1 (numberFieldTowerLowerEmbedding K L x) = - NumberField.HeightOneSpectrum.adicAbv K v x - exact wΩ.2 x - -/-- The centre of the restricted place on the auxiliary compositum -lies above the centre of the same place on the auxiliary base field. -/ -theorem - numberFieldTowerFinitePadicAuxiliaryTopPlace_below - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (hτ : - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ ≠ - 1) : - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let P := - numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) S - let E := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - letI hHfinite : Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - S (le_baseField S)) := - (numberFieldTowerFinitePadicAuxiliaryAbstractField - (K := K) (L := L) p τ hτ).finite - letI hPfinite : Finite - (S.toSubgroup ⧸ - extensionSubgroup S P.field P.below) := - P.finite - letI _ : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) S hHfinite - letI _ : FiniteDimensional F E := - LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) - S P.field P.below hHfinite hPfinite - letI _ : IsScalarTower ℚ F E := - IsScalarTower.of_algebraMap_eq' rfl - letI _ : FiniteDimensional ℚ E := - FiniteDimensional.trans ℚ F E - letI _ : NumberField F := - NumberField.of_module_finite ℚ F - letI _ : NumberField E := - NumberField.of_module_finite ℚ E - letI _ : Algebra K F := - numberFieldTowerFinitePadicAuxiliary_baseAlgebra - (K := K) (L := L) p τ - finitePlaceBelow (K := F) - (finitePlaceExtensionCentre - (K := K) (L := E) v - (numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension - (K := K) (L := L) v p τ)) = - finitePlaceExtensionCentre - (K := K) (L := F) v - (numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension - (K := K) (L := L) v p τ) := by - dsimp only - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let P := - numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) S - let E := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let hHfinite : Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - S (le_baseField S)) := - (numberFieldTowerFinitePadicAuxiliaryAbstractField - (K := K) (L := L) p τ hτ).finite - let hPfinite : Finite - (S.toSubgroup ⧸ - extensionSubgroup S P.field P.below) := - P.finite - let auxiliaryBaseFiniteDimensional : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) S hHfinite - let auxiliaryTopFiniteDimensional : FiniteDimensional F E := - LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) - S P.field P.below hHfinite hPfinite - let auxiliaryScalarTower : IsScalarTower ℚ F E := - IsScalarTower.of_algebraMap_eq' rfl - let auxiliaryAbsoluteFiniteDimensional : FiniteDimensional ℚ E := - FiniteDimensional.trans ℚ F E - let auxiliaryBaseNumberField : NumberField F := - NumberField.of_module_finite ℚ F - let auxiliaryTopNumberField : NumberField E := - NumberField.of_module_finite ℚ E - let auxiliaryOriginalBaseAlgebra : Algebra K F := - numberFieldTowerFinitePadicAuxiliary_baseAlgebra - (K := K) (L := L) p τ - let wF := - numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension - (K := K) (L := L) v p τ - let wE := - numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension - (K := K) (L := L) v p τ - apply HeightOneSpectrum.ext - ext x - change - algebraMap (𝓞 F) (𝓞 E) x ∈ - finitePlaceExtensionCentreIdeal - (K := K) (L := E) v wE ↔ - x ∈ - finitePlaceExtensionCentreIdeal - (K := K) (L := F) v wF - rw [ - mem_finitePlaceExtensionCentreIdeal_iff, - mem_finitePlaceExtensionCentreIdeal_iff] - rfl - -/-- Evaluation of the distinguished auxiliary automorphism through the -restricted top-field place. Isolating this coercion calculation prevents the -whole decomposition-group proof from normalizing the fixed-field tower. -/ -private opaque - numberFieldTowerFinitePadicAuxiliaryTopPlace_automorphism_apply - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : - let P := numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ - let E := LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let wE := numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension - (K := K) (L := L) v p τ - let σE := numberFieldTowerFinitePadicAuxiliaryAutomorphism - (K := K) (L := L) p τ - ∀ x : E, - wE.1 (σE x) = - (numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v (chosenFinitePlaceExtension (L := L) v)).1 - (τ.1 (x : SeparableClosure ℚ)) := by - let : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - dsimp only - intro x - change - (numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v (chosenFinitePlaceExtension (L := L) v)).1 - ((numberFieldTowerFinitePadicAuxiliaryAutomorphism - (K := K) (L := L) p τ x : - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) - (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ).below) : SeparableClosure ℚ) = _ - rw [ - numberFieldTowerFinitePadicAuxiliaryAutomorphism_apply_val - (K := K) (L := L) p τ] - -/-- The distinguished auxiliary automorphism preserves the top-field place -obtained by restricting the original separable-closure place. -/ -private opaque numberFieldTowerFinitePadicAuxiliaryAutomorphism_mem_topPlaceDecomposition - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (hdecomposition : - letI : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ - absoluteValueDecompositionGroup K - (numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v (chosenFinitePlaceExtension (L := L) v)).1) : - let S := numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let F := LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) S - let wE := numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension - (K := K) (L := L) v p τ - let σE := numberFieldTowerFinitePadicAuxiliaryAutomorphism - (K := K) (L := L) p τ - σE ∈ absoluteValueDecompositionGroup F wE.1 := by - let : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - dsimp only at hdecomposition ⊢ - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) S - let wE := - numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension - (K := K) (L := L) v p τ - let σE := - numberFieldTowerFinitePadicAuxiliaryAutomorphism - (K := K) (L := L) p τ - intro x - change - wE.1 (σE x) < 1 ↔ - wE.1 x < 1 - rw [ - numberFieldTowerFinitePadicAuxiliaryTopPlace_automorphism_apply - (K := K) (L := L) v p τ x, - show - wE.1 x = - (numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v - (chosenFinitePlaceExtension (L := L) v)).1 - (x : SeparableClosure ℚ) from rfl] - exact hdecomposition (x : SeparableClosure ℚ) - -/-- The restricted top-field place and the chosen extension above its centre -have the same decomposition group. -/ -private opaque numberFieldTowerFinitePadicAuxiliaryTopDecompositionGroup_eq_chosen - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (hτ : - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ ≠ 1) : - let S := numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let P := numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ - let F := LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) S - let E := LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - letI hHfinite : Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - S (le_baseField S)) := - (numberFieldTowerFinitePadicAuxiliaryAbstractField - (K := K) (L := L) p τ hτ).finite - letI hPfinite : Finite - (S.toSubgroup ⧸ extensionSubgroup S P.field P.below) := P.finite - letI : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) S hHfinite - letI : FiniteDimensional F E := - LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) S P.field P.below hHfinite hPfinite - letI : IsScalarTower ℚ F E := IsScalarTower.of_algebraMap_eq' rfl - letI : FiniteDimensional ℚ E := FiniteDimensional.trans ℚ F E - letI : NumberField F := NumberField.of_module_finite ℚ F - letI : NumberField E := NumberField.of_module_finite ℚ E - letI : IsAbelianGalois F E := - GlobalClassFields.finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois P - letI : Algebra K F := - numberFieldTowerFinitePadicAuxiliary_baseAlgebra - (K := K) (L := L) p τ - let wF := numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension - (K := K) (L := L) v p τ - let wE := numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension - (K := K) (L := L) v p τ - let V := finitePlaceExtensionCentre (K := K) (L := F) v wF - absoluteValueDecompositionGroup F wE.1 = - absoluteValueDecompositionGroup F - (chosenFinitePlaceExtension (L := E) V).1 := by - dsimp only - let H := - numberFieldTowerFinitePadicAuxiliaryAbstractField - (K := K) (L := L) p τ hτ - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let P := - numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) S - let E := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - let hHfinite : Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - S (le_baseField S)) := - H.finite - let hPfinite : Finite - (S.toSubgroup ⧸ extensionSubgroup S P.field P.below) := - P.finite - let : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) S hHfinite - let : FiniteDimensional F E := - LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) S P.field P.below hHfinite hPfinite - let : IsScalarTower ℚ F E := IsScalarTower.of_algebraMap_eq' rfl - let : FiniteDimensional ℚ E := FiniteDimensional.trans ℚ F E - let : NumberField F := NumberField.of_module_finite ℚ F - let : NumberField E := NumberField.of_module_finite ℚ E - let : IsAbelianGalois F E := - GlobalClassFields.finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois P - let : Algebra K F := - numberFieldTowerFinitePadicAuxiliary_baseAlgebra - (K := K) (L := L) p τ - let wF := - numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension - (K := K) (L := L) v p τ - let wE := - numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension - (K := K) (L := L) v p τ - let V := finitePlaceExtensionCentre (K := K) (L := F) v wF - let W := finitePlaceExtensionCentre (K := K) (L := E) v wE - let Wover : - {W' : HeightOneSpectrum (𝓞 E) // - finitePlaceBelow (K := F) W' = V} := - ⟨W, - numberFieldTowerFinitePadicAuxiliaryTopPlace_below - (K := K) (L := L) v p τ hτ⟩ - let wFE : - AbsoluteValueExtension - (NumberField.HeightOneSpectrum.adicAbv F V) E := - (finitePlaceExtensionEquivAbove - (K := F) (L := E) V).symm Wover - have hwFEcentre : - finitePlaceExtensionCentre - (K := F) (L := E) V wFE = - W := by - exact - congrArg Subtype.val - ((finitePlaceExtensionEquivAbove - (K := F) (L := E) V).apply_symm_apply Wover) - have hwEquiv : wE.1.IsEquiv wFE.1 := by - apply - finitePlaceExtensions_isEquiv_of_centres_eq - (F := K) (M := F) v V wE wFE - exact hwFEcentre.symm - calc - absoluteValueDecompositionGroup F wE.1 = - absoluteValueDecompositionGroup F wFE.1 := - absoluteValueDecompositionGroup_eq_of_absoluteValue_isEquiv - (F := F) wE.1 wFE.1 hwEquiv - _ = - absoluteValueDecompositionGroup F - (chosenFinitePlaceExtension (L := E) V).1 := - absoluteValueDecompositionGroup_eq_of_exactExtensions_of_isMulCommutative - (F := F) - (NumberField.HeightOneSpectrum.adicAbv F V) - (RayClass.adicAbv_isNontrivial V) - wFE - (chosenFinitePlaceExtension (L := E) V) - -/-- Pointwise form of norm/restriction naturality. Keeping the function -equality and its coercion normalization in this small declaration prevents -the auxiliary-field witness construction below from repeatedly elaborating -the full pair of composite homomorphisms. -/ -private theorem globalNormResidueMonoidHomOfEmbedding_norm_restriction_apply - (K K' L L' : Type) - [Field K] [NumberField K] - [Field K'] [NumberField K'] - [Field L] [NumberField L] - [Field L'] [NumberField L'] - [Algebra K K'] [Algebra K L] [Algebra K L'] - [Algebra K' L'] [Algebra L L'] - [IsScalarTower K K' L'] [IsScalarTower K L L'] - [FiniteDimensional K L] [IsAbelianGalois K L] - [FiniteDimensional K' L'] [IsAbelianGalois K' L'] - [FiniteDimensional K K'] [IsGalois K K'] - (j : L' →ₐ[ℚ] SeparableClosure ℚ) - (c : IdeleClassGroup K') : - ((AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K)) - (globalNormResidueMonoidHomOfEmbedding K' L' j c) = - globalNormResidueMonoidHomOfEmbedding K L - (j.comp (IsScalarTower.toAlgHom ℚ L L')) - (_root_.ideleClassNorm K K' c) := by - exact - DFunLike.congr_fun - (globalNormResidueMonoidHomOfEmbedding_norm_restriction - (K := K) (L := L) (K' := K') (L' := L') j) c - - - -/-- The auxiliary-field construction produces a lower local unit -whose chosen local Artin value and global norm-residue value are both -the finite quotient coordinate of the distinguished lift. -/ -opaque numberFieldTowerFinitePadicAuxiliaryLocalGlobalRepresentative - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (hτ : - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ ≠ 1) - (hdecomposition : - letI : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ - absoluteValueDecompositionGroup K - (numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v (chosenFinitePlaceExtension (L := L) v)).1) - (n : ℕ) (hn : 0 < n) - (hdegree : - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ = - (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n) - (hprimaryQuotient : - numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ ∈ - CommGroup.primaryComponent - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) - p.1) : - {z : (v.adicCompletion K)ˣ // - chosenFinitePlaceArtinMonoidHom (K := K) (L := L) v z = - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ) ∧ - globalNormResidueMonoidHom K L - (IdeleGroup.finitePlaceIdeleClass v z) = - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ)} := by - let H := - numberFieldTowerFinitePadicAuxiliaryAbstractField - (K := K) (L := L) p τ hτ - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let P := - numberFieldTowerFinitePadicAuxiliaryCompositumSubextension - (K := K) (L := L) p τ - let F := - LocalClassFieldTheory.abstractFixedField - ℚ (SeparableClosure ℚ) S - let E := - LocalClassFieldTheory.abstractRelativeFixedField - ℚ (SeparableClosure ℚ) P.below - letI hHfinite : Finite - ((baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ - extensionSubgroup - (baseField - (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) - S (le_baseField S)) := - H.finite - letI hPfinite : Finite - (S.toSubgroup ⧸ extensionSubgroup S P.field P.below) := - P.finite - letI auxiliaryBaseNumberField : NumberField F := by - let : FiniteDimensional ℚ F := - LocalClassFieldTheory.abstractFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) S hHfinite - exact NumberField.of_module_finite ℚ F - letI auxiliaryTopNumberField : NumberField E := by - let : FiniteDimensional F E := - LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional - ℚ (SeparableClosure ℚ) - S P.field P.below hHfinite hPfinite - exact NumberField.of_module_finite F E - letI auxiliaryAbelianGalois : IsAbelianGalois F E := - GlobalClassFields.finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois P - letI auxiliaryOriginalBaseAlgebra : Algebra K F := - numberFieldTowerFinitePadicAuxiliary_baseAlgebra - (K := K) (L := L) p τ - letI auxiliaryOriginalTopAlgebra : Algebra L E := - numberFieldTowerFinitePadicAuxiliary_topAlgebra - (K := K) (L := L) p τ - letI auxiliaryOriginalBaseTopAlgebra : Algebra K E := - numberFieldTowerFinitePadicAuxiliary_originalBaseTopAlgebra - (K := K) (L := L) p τ - letI auxiliaryOriginalTopScalarTower : IsScalarTower K L E := - numberFieldTowerFinitePadicAuxiliary_originalTopScalarTower - (K := K) (L := L) p τ - letI auxiliaryBaseTopScalarTower : IsScalarTower K F E := - numberFieldTowerFinitePadicAuxiliary_baseTopScalarTower - (K := K) (L := L) p τ - letI auxiliaryOriginalBaseGalois : IsGalois K F := - numberFieldTowerFinitePadicAuxiliaryBase_isGalois - (K := K) (L := L) p τ - let auxiliaryOriginalTopAlgHom : L →ₐ[ℚ] E := - numberFieldTowerFinitePadicAuxiliaryTopEmbedding - (K := K) (L := L) p τ - let wF := - numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension - (K := K) (L := L) v p τ - let wE := - numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension - (K := K) (L := L) v p τ - let V := - finitePlaceExtensionCentre - (K := K) (L := F) v wF - have hVbelow : finitePlaceBelow (K := K) V = v := - finitePlaceBelow_finitePlaceExtensionCentre - (K := K) (L := F) v wF - let Vover : - {V' : HeightOneSpectrum (𝓞 F) // - finitePlaceBelow (K := K) V' = v} := - ⟨V, hVbelow⟩ - letI auxiliaryCompletionAlgebra : - Algebra (v.adicCompletion K) (V.adicCompletion F) := - (finitePlaceAdicCompletionMap K F v Vover).toAlgebra - let σE : Gal(E / F) := - numberFieldTowerFinitePadicAuxiliaryAutomorphism - (K := K) (L := L) p τ - have hσtop : - σE ∈ absoluteValueDecompositionGroup F wE.1 := - numberFieldTowerFinitePadicAuxiliaryAutomorphism_mem_topPlaceDecomposition - (K := K) (L := L) v p τ hdecomposition - have hgroup := - numberFieldTowerFinitePadicAuxiliaryTopDecompositionGroup_eq_chosen - (K := K) (L := L) v p τ hτ - have hσchosen : - σE ∈ absoluteValueDecompositionGroup F - (chosenFinitePlaceExtension (L := E) V).1 := by - rw [← hgroup] - exact hσtop - have hRange : - σE ∈ (chosenFinitePlaceArtinMonoidHom - (K := F) (L := E) V).range := by - rw [chosenFinitePlaceArtinMonoidHom_range (K := F) (L := E) V] - exact hσchosen - let y : (V.adicCompletion F)ˣ := Classical.choose hRange - have hy : - chosenFinitePlaceArtinMonoidHom (K := F) (L := E) V y = - numberFieldTowerFinitePadicAuxiliaryAutomorphism - (K := K) (L := L) p τ := - Classical.choose_spec hRange - let z : (v.adicCompletion K)ˣ := - LocalFieldTheory.normUnits - (v.adicCompletion K) (V.adicCompletion F) y - have hz : - z = LocalFieldTheory.normUnits - (v.adicCompletion K) (V.adicCompletion F) y := by - rfl - let σK : Gal(L / K) := - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ) - let restriction : Gal(E / F) →* Gal(L / K) := - (AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K) - have hrestrict : restriction σE = σK := - numberFieldTowerFinitePadicAuxiliaryAutomorphism_restriction - (K := K) (L := L) p τ - have hlocal : - chosenFinitePlaceArtinMonoidHom (K := K) (L := L) v z = - σK := by - rw [hz] - have hnat := - DFunLike.congr_fun - (chosenFinitePlaceArtinMonoidHom_norm_restriction_of_below_eq - (K := K) (L := L) (K' := F) (L' := E) - v V hVbelow) y - calc - chosenFinitePlaceArtinMonoidHom (K := K) (L := L) v - (LocalFieldTheory.normUnits - (v.adicCompletion K) (V.adicCompletion F) y) = - restriction - (chosenFinitePlaceArtinMonoidHom (K := F) (L := E) V y) := by - simpa only [ - MonoidHom.coe_comp, Function.comp_apply, restriction] - using hnat.symm - _ = restriction σE := congrArg restriction hy - _ = σK := hrestrict - let j : E →ₐ[ℚ] SeparableClosure ℚ := - E.val.restrictScalars ℚ - have hjLower : - j.comp auxiliaryOriginalTopAlgHom = - AlgebraicNumberTheory.numberFieldSeparableClosureEmbedding L := by - apply AlgHom.ext - intro a - exact - numberFieldTowerFinitePadicAuxiliaryTopEmbedding_coe - (K := K) (L := L) p τ a - have hPUnramified : - P.toFiniteGaloisExtension.IsUnramified - rationalCyclotomicDegreeData := - numberFieldTowerFinitePadicAuxiliaryCompositumSubextension_isUnramified - (K := K) (L := L) p τ n hn hdegree hprimaryQuotient - have hcompat : - (globalNormResidueMonoidHomOfEmbedding F E j).comp - (IdeleGroup.finitePlaceIdeleClass V) = - chosenFinitePlaceArtinMonoidHom (K := F) (L := E) V := - globalNormResidueMonoidHomOfEmbedding_comp_finitePlaceIdeleClass_of_abstractFixedFieldUnramified - H P hPUnramified V - have hupper : - globalNormResidueMonoidHomOfEmbedding F E j - (IdeleGroup.finitePlaceIdeleClass V y) = - σE := - (congrArg - (fun φ : (V.adicCompletion F)ˣ →* Gal(E / F) => φ y) - hcompat).trans hy - have hnormClass : - _root_.ideleClassNorm K F - (IdeleGroup.finitePlaceIdeleClass V y) = - IdeleGroup.finitePlaceIdeleClass v z := by - rw [hz] - simpa only [Vover] using - (IdeleGroup.ideleClassNorm_finitePlaceIdeleClass_eq_normUnits - (K := K) (L := F) v Vover y) - have hglobal : - globalNormResidueMonoidHom K L - (IdeleGroup.finitePlaceIdeleClass v z) = - σK := by - calc - globalNormResidueMonoidHom K L - (IdeleGroup.finitePlaceIdeleClass v z) = - globalNormResidueMonoidHom K L - (_root_.ideleClassNorm K F - (IdeleGroup.finitePlaceIdeleClass V y)) := - congrArg (globalNormResidueMonoidHom K L) hnormClass.symm - _ = globalNormResidueMonoidHomOfEmbedding K L - (j.comp auxiliaryOriginalTopAlgHom) - (_root_.ideleClassNorm K F - (IdeleGroup.finitePlaceIdeleClass V y)) := by - rw [hjLower, - ← globalNormResidueMonoidHom_eq_ofEmbedding_standard] - _ = ((AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K)) - (globalNormResidueMonoidHomOfEmbedding F E j - (IdeleGroup.finitePlaceIdeleClass V y)) := by - apply Eq.symm - apply - globalNormResidueMonoidHomOfEmbedding_norm_restriction_apply - _ = ((AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K)) σE := - congrArg - ((AlgEquiv.restrictNormalHom L).comp - (AlgEquiv.restrictScalarsHom K)) hupper - _ = restriction σE := rfl - _ = σK := hrestrict - exact ⟨z, hlocal, hglobal⟩ - - -/-- Every genuine finite-place decomposition automorphism has a -compatible embedded absolute lift with the same finite quotient class -and positive integral cyclotomic `p`-adic degree. -/ -theorem exists_numberFieldTowerFinitePadicLift_of_finitePlace - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (σ : - absoluteValueDecompositionGroup K - (chosenFinitePlaceExtension (L := L) v).1) : - letI _ : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - letI _ : Algebra L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureTopAlgebra L - letI _ : IsScalarTower K L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureScalarTower K L - ∃ τ : (numberFieldTowerBaseSubgroup K L).toSubgroup, - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ) = - σ.1 ∧ - (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ - absoluteValueDecompositionGroup K - (numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v - (chosenFinitePlaceExtension (L := L) v)).1 ∧ - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ ≠ - 1 ∧ - ∃ n : ℕ, 0 < n ∧ - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ = - (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n := by - let : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - let : Algebra L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureTopAlgebra L - let : IsScalarTower K L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureScalarTower K L - obtain ⟨τΩ, hτΩrestrict, n, hn, hτΩdegree⟩ := - exists_finitePlaceSeparableClosureLift_with_positivePadicCyclotomicDegree - (K := K) (L := L) v p σ - let τ : - (numberFieldTowerBaseSubgroup K L).toSubgroup := - numberFieldTowerSeparableClosureEquivBaseSubgroup - K L τΩ.1 - have hfinite : - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ) = - σ.1 := by - change - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (QuotientGroup.mk - (numberFieldTowerSeparableClosureEquivBaseSubgroup - K L τΩ.1)) = - σ.1 - rw [ - numberFieldTowerExtensionQuotientEquivGaloisGroup_mk_baseSubgroupEquiv] - exact congrArg Subtype.val hτΩrestrict - have hdegree : - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ = - (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n := by - exact hτΩdegree - have hdecomposition : - (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ - absoluteValueDecompositionGroup K - (numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v - (chosenFinitePlaceExtension (L := L) v)).1 := by - simpa only [τ, MulEquiv.symm_apply_apply] using τΩ.2 - refine - ⟨τ, hfinite, hdecomposition, ?_, n, hn, hdegree⟩ - rw [hdegree] - exact - PadicInt.multiplicative_positiveNatDegree_ne_one - p.1 n hn - -/-- Generation of the actual finite Galois group transports back -through the compatible finite quotient coordinate. -/ -theorem - numberFieldTowerFiniteQuotientCoordinate_generates_of_galoisGenerator - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (σ : Gal(L / K)) - (hτσ : - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ) = - σ) - (hσ : Subgroup.closure ({σ} : Set (Gal(L / K))) = ⊤) : - Subgroup.closure - ({numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ} : - Set - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L))) = - ⊤ := by - let e := - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - let q : - (numberFieldTowerFiniteGaloisSubextension - K L).extensionQuotient := - numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ - have hq : e.toMonoidHom q = σ := by - exact hτσ - change - Subgroup.closure - ({q} : - Set - (numberFieldTowerFiniteGaloisSubextension - K L).extensionQuotient) = - ⊤ - apply Subgroup.map_injective (f := e.toMonoidHom) e.injective - rw [MonoidHom.map_closure, Set.image_singleton, - hq, hσ, - Subgroup.map_top_of_surjective e.toMonoidHom e.surjective] - -/-- If the finite quotient coordinate of a lift generates the whole -finite Galois quotient, then its cyclic preimage together with the -top-field subgroup generates the whole embedded absolute Galois -group. -/ -theorem - numberFieldTowerFinitePadicCyclicPreimage_sup_extensionSubgroup_eq_top - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (hgenerate : - Subgroup.closure - ({numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ} : - Set - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L))) = - ⊤) : - (numberFieldTowerFinitePadicCyclicPreimage - (K := K) (L := L) p τ).toSubgroup ⊔ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L) = - ⊤ := by - let H := - numberFieldTowerBaseSubgroup K L - let N := - extensionSubgroup - H - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L) - let Q := H.toSubgroup ⧸ N - let P := - numberFieldTowerFinitePadicImage - (K := K) (L := L) p - let coordinate := - numberFieldTowerFinitePadicCoordinate - (K := K) (L := L) p - let rangeRestriction := - numberFieldTowerFinitePadicRangeRestriction - (K := K) (L := L) p - let γ : P.toSubgroup := - rangeRestriction τ - let Γ := - ClassFormation.padicCyclicClosure γ - let finiteProjection : - P.toSubgroup →* - Q := - (MonoidHom.fst Q - (Multiplicative ℤ_[p.1])).comp - P.toSubgroup.subtype - have hprojection : - Γ.toSubgroup.map finiteProjection = ⊤ := by - apply top_unique - rw [← hgenerate] - apply (Subgroup.closure_le _).2 - intro q hq - rw [Set.mem_singleton_iff] at hq - subst q - refine - ⟨γ, - (ClassFormation.padicCyclicClosureGenerator γ).2, - ?_⟩ - rfl - have hquotientSurjective : - ∀ q : Q, - ∃ u : H.toSubgroup, - u ∈ - (numberFieldTowerFinitePadicCyclicPreimage - (K := K) (L := L) p τ).toSubgroup ∧ - numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) u = - q := by - intro q - have hq : - q ∈ Γ.toSubgroup.map finiteProjection := by - rw [hprojection] - trivial - obtain ⟨z, hzΓ, hzq⟩ := hq - obtain ⟨u, hu⟩ := - numberFieldTowerFinitePadicRangeRestriction_surjective - (K := K) (L := L) p z - refine ⟨u, ?_, ?_⟩ - · change rangeRestriction u ∈ Γ.toSubgroup - rw [hu] - exact hzΓ - · calc - numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) u = - finiteProjection (rangeRestriction u) := rfl - _ = finiteProjection z := congrArg finiteProjection hu - _ = q := hzq - apply top_unique - intro h _ - obtain ⟨u, huU, huq⟩ := - hquotientSurjective - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) h) - let k : H.toSubgroup := - h * u⁻¹ - have hkN : k ∈ N := by - apply (QuotientGroup.eq_one_iff (N := N) k).mp - change - numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) (h * u⁻¹) = - 1 - rw [map_mul, map_inv, huq, mul_inv_cancel] - have hkSup : - k ∈ - (numberFieldTowerFinitePadicCyclicPreimage - (K := K) (L := L) p τ).toSubgroup ⊔ - N := - (le_sup_right : - N ≤ - (numberFieldTowerFinitePadicCyclicPreimage - (K := K) (L := L) p τ).toSubgroup ⊔ N) hkN - have huSup : - u ∈ - (numberFieldTowerFinitePadicCyclicPreimage - (K := K) (L := L) p τ).toSubgroup ⊔ - N := - (le_sup_left : - (numberFieldTowerFinitePadicCyclicPreimage - (K := K) (L := L) p τ).toSubgroup ≤ - (numberFieldTowerFinitePadicCyclicPreimage - (K := K) (L := L) p τ).toSubgroup ⊔ N) huU - have hku : - k * u = h := by - simp only [k, inv_mul_cancel_right] - rw [← hku] - exact - ((numberFieldTowerFinitePadicCyclicPreimage - (K := K) (L := L) p τ).toSubgroup ⊔ N).mul_mem - hkSup huSup - -/-- Ambient form of the generation statement: the auxiliary cyclic -fixed subgroup together with the subgroup fixing `L` generates the -subgroup fixing `K`. -/ -theorem - numberFieldTowerFinitePadicCyclicFixedSubgroup_sup_topSubgroup - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (hgenerate : - Subgroup.closure - ({numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ} : - Set - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L))) = - ⊤) : - (numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ).toSubgroup ⊔ - (numberFieldTowerTopSubgroup L).toSubgroup = - (numberFieldTowerBaseSubgroup K L).toSubgroup := by - let H := - numberFieldTowerBaseSubgroup K L - let T := - numberFieldTowerTopSubgroup L - let N := - extensionSubgroup - H T - (numberFieldTowerTopSubgroup_le_baseSubgroup K L) - let U := - numberFieldTowerFinitePadicCyclicPreimage - (K := K) (L := L) p τ - have hrelative : - U.toSubgroup ⊔ N = ⊤ := - numberFieldTowerFinitePadicCyclicPreimage_sup_extensionSubgroup_eq_top - (K := K) (L := L) p τ hgenerate - have hNmap : - N.map H.toSubgroup.subtype = - T.toSubgroup := by - exact - Subgroup.map_subgroupOf_eq_of_le - (numberFieldTowerTopSubgroup_le_baseSubgroup K L) - change - U.toSubgroup.map H.toSubgroup.subtype ⊔ - T.toSubgroup = - H.toSubgroup - rw [← hNmap, ← Subgroup.map_sup, - hrelative, ← MonoidHom.range_eq_map, - H.toSubgroup.range_subtype] - -/-- The concrete auxiliary fixed field is linearly disjoint from `L` -over the compatible embedded copy of `K`. -/ -theorem - numberFieldTowerFinitePadicCyclicFixedField_inf_topField - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (hgenerate : - Subgroup.closure - ({numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ} : - Set - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L))) = - ⊤) : - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ ⊓ - numberFieldInRationalSeparableClosure L = - numberFieldTowerBaseField K L := by - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let T := - numberFieldTowerTopSubgroup L - let H := - numberFieldTowerBaseSubgroup K L - change - IntermediateField.fixedField S.toSubgroup ⊓ - numberFieldInRationalSeparableClosure L = - numberFieldTowerBaseField K L - rw [ - ← InfiniteGalois.fixedField_fixingSubgroup - (numberFieldInRationalSeparableClosure L), - ← InfiniteGalois.fixedField_fixingSubgroup - (numberFieldTowerBaseField K L)] - change - IntermediateField.fixedField S.toSubgroup ⊓ - IntermediateField.fixedField T.toSubgroup = - IntermediateField.fixedField H.toSubgroup - rw [ - ← IntermediateField.fixedField_sup_eq_inf, - numberFieldTowerFinitePadicCyclicFixedSubgroup_sup_topSubgroup - (K := K) (L := L) p τ hgenerate] - -/-- If the finite quotient coordinate is `p`-primary, adjoining the -actual rational `p`-primary cyclotomic field to the auxiliary fixed -field contains the compatible copy of `L`. - -This is the field-theoretic conclusion of the simultaneous -finite/cyclotomic lift: the intersection of the two fixing subgroups -already fixes `L`, hence their fixed-field compositum contains `L`. -/ -theorem - numberFieldTowerTopField_le_finitePadicCyclicFixedField_sup_padicCyclotomicField - (p : Nat.Primes) - (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) - (n : ℕ) (hn : 0 < n) - (hdegree : - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ = - (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n) - (hprimary : - numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ ∈ - CommGroup.primaryComponent - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) - p.1) : - numberFieldInRationalSeparableClosure L ≤ - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ ⊔ - rationalCyclotomicPadicField p := by - let S := - numberFieldTowerFinitePadicCyclicFixedSubgroup - (K := K) (L := L) p τ - let T := - numberFieldTowerTopSubgroup L - let F := - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ - let C : @IntermediateField ℚ (SeparableClosure ℚ) _ _ - rationalSeparableClosureAlgebra := - rationalCyclotomicPadicField p - have hfixing : - (F ⊔ C).fixingSubgroup ≤ - T.toSubgroup := by - change - (IntermediateField.fixedField S.toSubgroup ⊔ C).fixingSubgroup ≤ - T.toSubgroup - rw [ - IntermediateField.fixingSubgroup_sup, - InfiniteGalois.fixingSubgroup_fixedField S] - intro σ hσ - apply - numberFieldTowerFinitePadicCyclicFixedSubgroup_inf_absolutePadicKernel_le_topSubgroup - (K := K) (L := L) p τ n hn hdegree hprimary - refine ⟨hσ.1, ?_⟩ - let : Algebra ℚ rationalCyclotomicZHatField := - rationalCyclotomicZHatField.algebra' - let : @Normal ℚ rationalCyclotomicZHatField _ _ - rationalCyclotomicZHatField.algebra' := - rationalCyclotomicZHatField_normal - let E := - rationalCyclotomicPadicFieldWithinZHat p - change - rationalCyclotomicPadicCoordinate p - (rationalAbsoluteGaloisRestrictionToCyclotomicZHat σ) = - 1 - have hr : - rationalAbsoluteGaloisRestrictionToCyclotomicZHat σ ∈ - E.fixingSubgroup := by - rw [IntermediateField.mem_fixingSubgroup_iff] - intro x hx - apply Subtype.ext - have hfix : - σ x.1 = x.1 := - (IntermediateField.mem_fixingSubgroup_iff - (IntermediateField.lift E) σ).1 hσ.2 x.1 - ((IntermediateField.mem_lift x).2 hx) - exact - (AlgEquiv.restrictNormal_commutes - σ rationalCyclotomicZHatField x).trans hfix - rw [rationalCyclotomicPadicFieldWithinZHat_fixingSubgroup] - at hr - exact hr - rw [ - ← InfiniteGalois.fixedField_fixingSubgroup - (numberFieldInRationalSeparableClosure L)] - change - IntermediateField.fixedField T.toSubgroup ≤ - F ⊔ C - rw [ - ← InfiniteGalois.fixedField_fixingSubgroup - (F ⊔ C)] - exact - IntermediateField.fixedField_le hfixing - -/-- For a finite-place automorphism generating `Gal(L/K)`, construct -the genuine auxiliary number field used in the cyclotomic reduction. - -The field is finite over `ℚ`, contains the compatible copy of `K`, and -has intersection with the compatible copy of `L` exactly equal to that -copy of `K`. Its defining lift has the prescribed local restriction -and positive integral cyclotomic `p`-adic degree. -/ -theorem exists_finitePlaceCyclotomicAuxiliaryFixedField - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (σ : - absoluteValueDecompositionGroup K - (chosenFinitePlaceExtension (L := L) v).1) - (hσ : - Subgroup.closure - ({σ.1} : Set (Gal(L / K))) = - ⊤) : - letI _ : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - letI _ : Algebra L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureTopAlgebra L - letI _ : IsScalarTower K L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureScalarTower K L - ∃ τ : (numberFieldTowerBaseSubgroup K L).toSubgroup, - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ) = - σ.1 ∧ - (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ - absoluteValueDecompositionGroup K - (numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v - (chosenFinitePlaceExtension (L := L) v)).1 ∧ - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ ≠ - 1 ∧ - FiniteDimensional ℚ - (numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ) ∧ - numberFieldTowerBaseField K L ≤ - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ ∧ - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ ⊓ - numberFieldInRationalSeparableClosure L = - numberFieldTowerBaseField K L ∧ - ∃ n : ℕ, 0 < n ∧ - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ = - (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n := by - let : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - let : Algebra L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureTopAlgebra L - let : IsScalarTower K L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureScalarTower K L - obtain - ⟨τ, hτσ, hτdecomposition, hτdegree, - n, hn, hdegree⟩ := - exists_numberFieldTowerFinitePadicLift_of_finitePlace - (K := K) (L := L) v p σ - have hgenerate := - numberFieldTowerFiniteQuotientCoordinate_generates_of_galoisGenerator - (K := K) (L := L) τ σ.1 hτσ hσ - refine - ⟨τ, hτσ, hτdecomposition, hτdegree, - numberFieldTowerFinitePadicCyclicFixedField_finiteDimensional - (K := K) (L := L) p τ hτdegree, - numberFieldTowerBaseField_le_finitePadicCyclicFixedField - (K := K) (L := L) p τ, - numberFieldTowerFinitePadicCyclicFixedField_inf_topField - (K := K) (L := L) p τ hgenerate, - n, hn, hdegree⟩ - -/-- A `p`-primary local generator admits a genuine auxiliary number -field whose compositum with the rational `p`-primary cyclotomic field -contains `L`. - -Besides the field containment, the construction records the two -properties needed for descent: the auxiliary field meets `L` exactly -in `K`, and the chosen absolute lift has positive integral -cyclotomic degree. -/ -theorem exists_finitePlacePrimaryCyclotomicAuxiliaryFixedField - (v : HeightOneSpectrum (𝓞 K)) - (p : Nat.Primes) - (σ : - absoluteValueDecompositionGroup K - (chosenFinitePlaceExtension (L := L) v).1) - (hgenerate : - Subgroup.closure - ({σ.1} : Set (Gal(L / K))) = - ⊤) - (hprimary : - σ.1 ∈ - CommGroup.primaryComponent - (Gal(L / K)) p.1) : - letI _ : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - letI _ : Algebra L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureTopAlgebra L - letI _ : IsScalarTower K L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureScalarTower K L - ∃ τ : (numberFieldTowerBaseSubgroup K L).toSubgroup, - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - (numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ) = - σ.1 ∧ - (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ - absoluteValueDecompositionGroup K - (numberFieldTowerFinitePlaceExtensionToSeparableClosure - K L v - (chosenFinitePlaceExtension (L := L) v)).1 ∧ - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ ≠ - 1 ∧ - FiniteDimensional ℚ - (numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ) ∧ - numberFieldTowerBaseField K L ≤ - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ ∧ - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ ⊓ - numberFieldInRationalSeparableClosure L = - numberFieldTowerBaseField K L ∧ - numberFieldInRationalSeparableClosure L ≤ - numberFieldTowerFinitePadicCyclicFixedField - (K := K) (L := L) p τ ⊔ - rationalCyclotomicPadicField p ∧ - ∃ n : ℕ, 0 < n ∧ - numberFieldTowerBaseSubgroupPadicCyclotomicDegree - (K := K) (L := L) p τ = - (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n := by - let : Algebra K (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureBaseAlgebra K L - let : Algebra L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureTopAlgebra L - let : IsScalarTower K L (SeparableClosure ℚ) := - numberFieldTowerSeparableClosureScalarTower K L - obtain - ⟨τ, hτσ, hτdecomposition, hτdegree, - hfinite, hbase, hintersection, - n, hn, hdegree⟩ := - exists_finitePlaceCyclotomicAuxiliaryFixedField - (K := K) (L := L) v p σ hgenerate - have hprimaryQuotient : - numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ ∈ - CommGroup.primaryComponent - ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ - extensionSubgroup - (numberFieldTowerBaseSubgroup K L) - (numberFieldTowerTopSubgroup L) - (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) - p.1 := by - obtain ⟨m, hm⟩ := hprimary - refine ⟨m, ?_⟩ - let e := - numberFieldTowerExtensionQuotientEquivGaloisGroup K L - let q := - numberFieldTowerFiniteQuotientCoordinate - (K := K) (L := L) τ - let N : ℕ := p.1 ^ m - have hq : e q = σ.1 := by - exact hτσ - have hmN : σ.1 ^ N = 1 := by - exact hm - change q ^ N = 1 - apply e.injective - calc - e (q ^ N) = (e q) ^ N := by - exact map_pow e q N - _ = σ.1 ^ N := by rw [hq] - _ = 1 := hmN - _ = e 1 := (map_one e).symm - have hcontainment := - numberFieldTowerTopField_le_finitePadicCyclicFixedField_sup_padicCyclotomicField - (K := K) (L := L) p τ n hn hdegree - hprimaryQuotient - exact - ⟨τ, hτσ, hτdecomposition, hτdegree, - hfinite, hbase, hintersection, - hcontainment, n, hn, hdegree⟩ - -end Reciprocity -end GlobalClassFieldTheory +/- Declaration-preserving split of the original source. See the immutable source-split receipt. -/ +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicAuxiliaryFieldExistence diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldAutomorphisms.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldAutomorphisms.lean new file mode 100644 index 0000000..05e27fe --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldAutomorphisms.lean @@ -0,0 +1,593 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicAuxiliaryFieldBase +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicCyclicData +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ClassFieldRealization +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicUnramifiedLocalGlobalCompatibility +import ClassFieldTheory.AlgebraicNumberTheory.Idele.Extension.OnePlaceBaseNorm + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField +open AlgebraicNumberTheory IsDedekindDomain NumberField +open IdeleGroup RelativeIdeleGroup +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open CyclicCohomology +open KummerTheory ClassFormation + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open GlobalClassFields + +variable + {K L : Type} + [Field K] [NumberField K] + [Field L] [NumberField L] [Algebra K L] + [FiniteDimensional K L] [IsAbelianGalois K L] + + +local instance splitFactPrimeAutomorphisms (p : Nat.Primes) : Fact p.1.Prime := ⟨p.2⟩ + +attribute [local instance] + rationalSeparableClosureAlgebra + finitePadicAuxiliaryExtensionNormal + finitePadicAuxiliaryExtensionQuotientFinite + finitePadicAuxiliaryExtensionQuotientIsMulCommutative + +/-- The distinguished absolute lift, regarded as an element of the +auxiliary base subgroup. -/ +noncomputable def numberFieldTowerFinitePadicAuxiliarySubgroupLift + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ).toSubgroup := + ⟨τ.1, + numberFieldTowerFinitePadicCyclicFixedSubgroup_generator_mem + (K := K) (L := L) p τ⟩ + +/-- The actual automorphism of the auxiliary compositum induced by +the distinguished simultaneous finite/cyclotomic lift. -/ +noncomputable def numberFieldTowerFinitePadicAuxiliaryAutomorphism + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + let P := + numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + Gal( + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below / + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) S) := by + dsimp only + let P := + numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let σS := + numberFieldTowerFinitePadicAuxiliarySubgroupLift + (K := K) (L := L) p τ + exact + LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup + ℚ (SeparableClosure ℚ) + S P.field P.below + P.toFiniteGaloisExtension.normal + (QuotientGroup.mk' + (extensionSubgroup + S P.field P.below) + σS) + +/-- On the common separable closure, the auxiliary automorphism acts +by the original distinguished ambient lift. -/ +theorem numberFieldTowerFinitePadicAuxiliaryAutomorphism_apply_val + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (x : + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) : + ((numberFieldTowerFinitePadicAuxiliaryAutomorphism + (K := K) (L := L) p τ x : + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) : + SeparableClosure ℚ) = + τ.1 (x : SeparableClosure ℚ) := by + let P := + numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let σS := + numberFieldTowerFinitePadicAuxiliarySubgroupLift + (K := K) (L := L) p τ + exact + (LocalClassFieldTheory.abstractExtensionQuotientEquivGaloisGroup_mk_apply_val + ℚ (SeparableClosure ℚ) + S P.field P.below + P.toFiniteGaloisExtension.normal σS x).symm + +/-- Restricting the auxiliary automorphism through the actual +base-change square recovers the finite quotient coordinate of the +distinguished lift. -/ +theorem numberFieldTowerFinitePadicAuxiliaryAutomorphism_restriction + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + ((AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K)) + (numberFieldTowerFinitePadicAuxiliaryAutomorphism + (K := K) (L := L) p τ) = + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ) := by + let E := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below + let σE := + numberFieldTowerFinitePadicAuxiliaryAutomorphism + (K := K) (L := L) p τ + apply AlgEquiv.ext + intro x + apply (numberFieldSeparableClosureEmbedding L).injective + calc + numberFieldSeparableClosureEmbedding L + (((AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K)) σE x) = + ((σE (algebraMap L E x) : E) : + SeparableClosure ℚ) := by + exact congrArg Subtype.val + (AlgEquiv.restrictNormal_commutes + ((AlgEquiv.restrictScalarsHom K) σE) L x) + _ = τ.1 (numberFieldSeparableClosureEmbedding L x) := by + rw [ + numberFieldTowerFinitePadicAuxiliaryAutomorphism_apply_val + (K := K) (L := L) p τ] + rfl + _ = + numberFieldSeparableClosureEmbedding L + (numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ) x) := by + exact + (numberFieldTowerExtensionQuotientEquivGaloisGroup_mk_apply + (K := K) (L := L) τ x).symm + +/-- Restriction of the chosen separable-closure place to the genuine +auxiliary base field. This is an exact extension of the original +finite place of `K`, not merely an equivalent valuation. -/ +noncomputable def + numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + AbsoluteValueExtension + (NumberField.HeightOneSpectrum.adicAbv K v) + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ)) := by + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ) + let wΩ := + numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v (chosenFinitePlaceExtension (L := L) v) + refine + ⟨wΩ.1.comp (f := F.val.toRingHom) F.val.injective, ?_⟩ + intro x + change + wΩ.1 (numberFieldTowerLowerEmbedding K L x) = + NumberField.HeightOneSpectrum.adicAbv K v x + exact wΩ.2 x + +/-- Restriction of the same separable-closure place to the genuine +auxiliary compositum. Its restriction to `K` agrees exactly with the +original normalized finite absolute value. -/ +noncomputable def + numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + AbsoluteValueExtension + (NumberField.HeightOneSpectrum.adicAbv K v) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) := by + let E := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below + let wΩ := + numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v (chosenFinitePlaceExtension (L := L) v) + refine + ⟨wΩ.1.comp (f := E.val.toRingHom) E.val.injective, ?_⟩ + intro x + change + wΩ.1 (numberFieldTowerLowerEmbedding K L x) = + NumberField.HeightOneSpectrum.adicAbv K v x + exact wΩ.2 x + +/-- The centre of the restricted place on the auxiliary compositum +lies above the centre of the same place on the auxiliary base field. -/ +theorem + numberFieldTowerFinitePadicAuxiliaryTopPlace_below + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (hτ : + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ ≠ + 1) : + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let P := + numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) S + let E := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + letI hHfinite : Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + S (le_baseField S)) := + (numberFieldTowerFinitePadicAuxiliaryAbstractField + (K := K) (L := L) p τ hτ).finite + letI hPfinite : Finite + (S.toSubgroup ⧸ + extensionSubgroup S P.field P.below) := + P.finite + letI _ : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) S hHfinite + letI _ : FiniteDimensional F E := + LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) + S P.field P.below hHfinite hPfinite + letI _ : IsScalarTower ℚ F E := + IsScalarTower.of_algebraMap_eq' rfl + letI _ : FiniteDimensional ℚ E := + FiniteDimensional.trans ℚ F E + letI _ : NumberField F := + NumberField.of_module_finite ℚ F + letI _ : NumberField E := + NumberField.of_module_finite ℚ E + letI _ : Algebra K F := + numberFieldTowerFinitePadicAuxiliary_baseAlgebra + (K := K) (L := L) p τ + finitePlaceBelow (K := F) + (finitePlaceExtensionCentre + (K := K) (L := E) v + (numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension + (K := K) (L := L) v p τ)) = + finitePlaceExtensionCentre + (K := K) (L := F) v + (numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension + (K := K) (L := L) v p τ) := by + dsimp only + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let P := + numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) S + let E := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let hHfinite : Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + S (le_baseField S)) := + (numberFieldTowerFinitePadicAuxiliaryAbstractField + (K := K) (L := L) p τ hτ).finite + let hPfinite : Finite + (S.toSubgroup ⧸ + extensionSubgroup S P.field P.below) := + P.finite + let auxiliaryBaseFiniteDimensional : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) S hHfinite + let auxiliaryTopFiniteDimensional : FiniteDimensional F E := + LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) + S P.field P.below hHfinite hPfinite + let auxiliaryScalarTower : IsScalarTower ℚ F E := + IsScalarTower.of_algebraMap_eq' rfl + let auxiliaryAbsoluteFiniteDimensional : FiniteDimensional ℚ E := + FiniteDimensional.trans ℚ F E + let auxiliaryBaseNumberField : NumberField F := + NumberField.of_module_finite ℚ F + let auxiliaryTopNumberField : NumberField E := + NumberField.of_module_finite ℚ E + let auxiliaryOriginalBaseAlgebra : Algebra K F := + numberFieldTowerFinitePadicAuxiliary_baseAlgebra + (K := K) (L := L) p τ + let wF := + numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension + (K := K) (L := L) v p τ + let wE := + numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension + (K := K) (L := L) v p τ + apply HeightOneSpectrum.ext + ext x + change + algebraMap (𝓞 F) (𝓞 E) x ∈ + finitePlaceExtensionCentreIdeal + (K := K) (L := E) v wE ↔ + x ∈ + finitePlaceExtensionCentreIdeal + (K := K) (L := F) v wF + rw [ + mem_finitePlaceExtensionCentreIdeal_iff, + mem_finitePlaceExtensionCentreIdeal_iff] + rfl + +/-- Evaluation of the distinguished auxiliary automorphism through the +restricted top-field place. Isolating this coercion calculation prevents the +whole decomposition-group proof from normalizing the fixed-field tower. -/ +public opaque + numberFieldTowerFinitePadicAuxiliaryTopPlace_automorphism_apply + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + let P := numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ + let E := LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let wE := numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension + (K := K) (L := L) v p τ + let σE := numberFieldTowerFinitePadicAuxiliaryAutomorphism + (K := K) (L := L) p τ + ∀ x : E, + wE.1 (σE x) = + (numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v (chosenFinitePlaceExtension (L := L) v)).1 + (τ.1 (x : SeparableClosure ℚ)) := by + let : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + dsimp only + intro x + change + (numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v (chosenFinitePlaceExtension (L := L) v)).1 + ((numberFieldTowerFinitePadicAuxiliaryAutomorphism + (K := K) (L := L) p τ x : + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) : SeparableClosure ℚ) = _ + rw [ + numberFieldTowerFinitePadicAuxiliaryAutomorphism_apply_val + (K := K) (L := L) p τ] + +/-- The distinguished auxiliary automorphism preserves the top-field place +obtained by restricting the original separable-closure place. -/ +public opaque numberFieldTowerFinitePadicAuxiliaryAutomorphism_mem_topPlaceDecomposition + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (hdecomposition : + letI : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ + absoluteValueDecompositionGroup K + (numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v (chosenFinitePlaceExtension (L := L) v)).1) : + let S := numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let F := LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) S + let wE := numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension + (K := K) (L := L) v p τ + let σE := numberFieldTowerFinitePadicAuxiliaryAutomorphism + (K := K) (L := L) p τ + σE ∈ absoluteValueDecompositionGroup F wE.1 := by + let : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + dsimp only at hdecomposition ⊢ + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) S + let wE := + numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension + (K := K) (L := L) v p τ + let σE := + numberFieldTowerFinitePadicAuxiliaryAutomorphism + (K := K) (L := L) p τ + intro x + change + wE.1 (σE x) < 1 ↔ + wE.1 x < 1 + rw [ + numberFieldTowerFinitePadicAuxiliaryTopPlace_automorphism_apply + (K := K) (L := L) v p τ x, + show + wE.1 x = + (numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v + (chosenFinitePlaceExtension (L := L) v)).1 + (x : SeparableClosure ℚ) from rfl] + exact hdecomposition (x : SeparableClosure ℚ) + +/-- The restricted top-field place and the chosen extension above its centre +have the same decomposition group. -/ +public opaque numberFieldTowerFinitePadicAuxiliaryTopDecompositionGroup_eq_chosen + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (hτ : + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ ≠ 1) : + let S := numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let P := numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ + let F := LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) S + let E := LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + letI hHfinite : Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + S (le_baseField S)) := + (numberFieldTowerFinitePadicAuxiliaryAbstractField + (K := K) (L := L) p τ hτ).finite + letI hPfinite : Finite + (S.toSubgroup ⧸ extensionSubgroup S P.field P.below) := P.finite + letI : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) S hHfinite + letI : FiniteDimensional F E := + LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) S P.field P.below hHfinite hPfinite + letI : IsScalarTower ℚ F E := IsScalarTower.of_algebraMap_eq' rfl + letI : FiniteDimensional ℚ E := FiniteDimensional.trans ℚ F E + letI : NumberField F := NumberField.of_module_finite ℚ F + letI : NumberField E := NumberField.of_module_finite ℚ E + letI : IsAbelianGalois F E := + GlobalClassFields.finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois P + letI : Algebra K F := + numberFieldTowerFinitePadicAuxiliary_baseAlgebra + (K := K) (L := L) p τ + let wF := numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension + (K := K) (L := L) v p τ + let wE := numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension + (K := K) (L := L) v p τ + let V := finitePlaceExtensionCentre (K := K) (L := F) v wF + absoluteValueDecompositionGroup F wE.1 = + absoluteValueDecompositionGroup F + (chosenFinitePlaceExtension (L := E) V).1 := by + dsimp only + let H := + numberFieldTowerFinitePadicAuxiliaryAbstractField + (K := K) (L := L) p τ hτ + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let P := + numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) S + let E := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + let hHfinite : Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + S (le_baseField S)) := + H.finite + let hPfinite : Finite + (S.toSubgroup ⧸ extensionSubgroup S P.field P.below) := + P.finite + let : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) S hHfinite + let : FiniteDimensional F E := + LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) S P.field P.below hHfinite hPfinite + let : IsScalarTower ℚ F E := IsScalarTower.of_algebraMap_eq' rfl + let : FiniteDimensional ℚ E := FiniteDimensional.trans ℚ F E + let : NumberField F := NumberField.of_module_finite ℚ F + let : NumberField E := NumberField.of_module_finite ℚ E + let : IsAbelianGalois F E := + GlobalClassFields.finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois P + let : Algebra K F := + numberFieldTowerFinitePadicAuxiliary_baseAlgebra + (K := K) (L := L) p τ + let wF := + numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension + (K := K) (L := L) v p τ + let wE := + numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension + (K := K) (L := L) v p τ + let V := finitePlaceExtensionCentre (K := K) (L := F) v wF + let W := finitePlaceExtensionCentre (K := K) (L := E) v wE + let Wover : + {W' : HeightOneSpectrum (𝓞 E) // + finitePlaceBelow (K := F) W' = V} := + ⟨W, + numberFieldTowerFinitePadicAuxiliaryTopPlace_below + (K := K) (L := L) v p τ hτ⟩ + let wFE : + AbsoluteValueExtension + (NumberField.HeightOneSpectrum.adicAbv F V) E := + (finitePlaceExtensionEquivAbove + (K := F) (L := E) V).symm Wover + have hwFEcentre : + finitePlaceExtensionCentre + (K := F) (L := E) V wFE = + W := by + exact + congrArg Subtype.val + ((finitePlaceExtensionEquivAbove + (K := F) (L := E) V).apply_symm_apply Wover) + have hwEquiv : wE.1.IsEquiv wFE.1 := by + apply + finitePlaceExtensions_isEquiv_of_centres_eq + (F := K) (M := F) v V wE wFE + exact hwFEcentre.symm + calc + absoluteValueDecompositionGroup F wE.1 = + absoluteValueDecompositionGroup F wFE.1 := + absoluteValueDecompositionGroup_eq_of_absoluteValue_isEquiv + (F := F) wE.1 wFE.1 hwEquiv + _ = + absoluteValueDecompositionGroup F + (chosenFinitePlaceExtension (L := E) V).1 := + absoluteValueDecompositionGroup_eq_of_exactExtensions_of_isMulCommutative + (F := F) + (NumberField.HeightOneSpectrum.adicAbv F V) + (RayClass.adicAbv_isNontrivial V) + wFE + (chosenFinitePlaceExtension (L := E) V) + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldBase.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldBase.lean new file mode 100644 index 0000000..2c56707 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldBase.lean @@ -0,0 +1,433 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicCyclicData +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ClassFieldRealization +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicUnramifiedLocalGlobalCompatibility +import ClassFieldTheory.AlgebraicNumberTheory.Idele.Extension.OnePlaceBaseNorm + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField +open AlgebraicNumberTheory IsDedekindDomain NumberField +open IdeleGroup RelativeIdeleGroup +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open CyclicCohomology +open KummerTheory ClassFormation + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open GlobalClassFields + +variable + {K L : Type} + [Field K] [NumberField K] + [Field L] [NumberField L] [Algebra K L] + [FiniteDimensional K L] [IsAbelianGalois K L] + +local instance (p : Nat.Primes) : Fact p.1.Prime := + ⟨p.2⟩ + +attribute [local instance] + rationalSeparableClosureAlgebra + +local instance finitePadicAuxiliaryExtensionNormal : + (extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L)).Normal := + numberFieldTowerExtensionSubgroup_normal K L + +local instance finitePadicAuxiliaryExtensionQuotientFinite : + Finite + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) := + numberFieldTowerExtensionQuotient_finite K L + +noncomputable local instance finitePadicAuxiliaryExtensionQuotientIsMulCommutative : + IsMulCommutative + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) := by + let e : + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) ≃* + Gal(L / K) := + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + exact + { is_comm := + ⟨fun x y => by + apply e.injective + rw [map_mul, map_mul] + exact + (inferInstance : + IsMulCommutative (Gal(L / K))).is_comm.comm + (e x) (e y)⟩ } + +/-- The concrete auxiliary fixed field attached to a simultaneous +finite/cyclotomic lift. -/ +noncomputable def numberFieldTowerFinitePadicCyclicFixedField + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + IntermediateField ℚ (SeparableClosure ℚ) := by + exact + IntermediateField.fixedField + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ).toSubgroup + +/-- A nonzero-degree lift produces a genuine number field: its +concrete fixed field is finite over `ℚ`. -/ +theorem numberFieldTowerFinitePadicCyclicFixedField_finiteDimensional + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (hτ : + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ ≠ + 1) : + FiniteDimensional ℚ + (numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ) := by + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let F := + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ + apply + (InfiniteGalois.isOpen_iff_finite + (K := SeparableClosure ℚ) F).1 + change IsOpen + (IntermediateField.fixedField S.toSubgroup).fixingSubgroup.carrier + rw [InfiniteGalois.fixingSubgroup_fixedField S] + exact + numberFieldTowerFinitePadicCyclicFixedSubgroup_isOpen + (K := K) (L := L) p τ hτ + +/-- The compatible embedded copy of `K` lies in every auxiliary +cyclic fixed field. -/ +theorem numberFieldTowerBaseField_le_finitePadicCyclicFixedField + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + numberFieldTowerBaseField K L ≤ + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ := by + intro x hx + change x ∈ IntermediateField.fixedField + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ).toSubgroup + rw [IntermediateField.mem_fixedField_iff] + intro σ hσ + change + σ ∈ + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ).toSubgroup at hσ + obtain ⟨u, hu, rfl⟩ := hσ + exact + (IntermediateField.mem_fixingSubgroup_iff + (numberFieldTowerBaseField K L) u.1).1 u.2 x hx + +/-- The compatible embedding of the original base field into the +genuine auxiliary fixed field. -/ +noncomputable def numberFieldTowerFinitePadicAuxiliaryBaseEmbedding + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + K →ₐ[ℚ] + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ) := by + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ) + exact + (numberFieldTowerLowerEmbedding K L).codRestrict F.toSubalgebra + (fun x => + numberFieldTowerBaseField_le_finitePadicCyclicFixedField + (K := K) (L := L) p τ ⟨x, rfl⟩) + +/-- Coercing the auxiliary base embedding recovers the fixed lower embedding +into the rational separable closure. -/ +@[simp] +theorem numberFieldTowerFinitePadicAuxiliaryBaseEmbedding_coe + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (x : K) : + ((numberFieldTowerFinitePadicAuxiliaryBaseEmbedding + (K := K) (L := L) p τ x : + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ)) : + SeparableClosure ℚ) = + numberFieldTowerLowerEmbedding K L x := by + rfl + +/-- The compatible copy of the original top field lies in the +auxiliary compositum fixed field. -/ +theorem numberFieldTowerTopField_mem_finitePadicAuxiliaryTopField + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + {x : SeparableClosure ℚ} + (hx : x ∈ numberFieldInRationalSeparableClosure L) : + x ∈ + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below := by + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let T := + numberFieldTowerTopSubgroup L + change x ∈ IntermediateField.fixedField + (S.toSubgroup ⊓ T.toSubgroup) + rw [IntermediateField.mem_fixedField_iff] + intro σ hσ + have hσT : σ ∈ T.toSubgroup := + hσ.2 + change + σ ∈ + (numberFieldInRationalSeparableClosure L).fixingSubgroup + at hσT + exact + (IntermediateField.mem_fixingSubgroup_iff + (numberFieldInRationalSeparableClosure L) σ).1 + hσT x hx + +/-- The compatible embedding of the original top field into the +auxiliary compositum fixed field. -/ +noncomputable def numberFieldTowerFinitePadicAuxiliaryTopEmbedding + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + L →ₐ[ℚ] + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below := by + let E := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below + exact + (numberFieldSeparableClosureEmbedding L).codRestrict + (E.restrictScalars ℚ).toSubalgebra + (fun x => + numberFieldTowerTopField_mem_finitePadicAuxiliaryTopField + (K := K) (L := L) p τ ⟨x, rfl⟩) + +/-- Coercing the auxiliary top embedding recovers the chosen top-field +embedding into the rational separable closure. -/ +@[simp] +theorem numberFieldTowerFinitePadicAuxiliaryTopEmbedding_coe + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (x : L) : + ((numberFieldTowerFinitePadicAuxiliaryTopEmbedding + (K := K) (L := L) p τ x : + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) : + SeparableClosure ℚ) = + numberFieldSeparableClosureEmbedding L x := by + rfl + +/-- The compatible base and top embeddings form the actual +base-change square inside the rational separable closure. -/ +theorem numberFieldTowerFinitePadicAuxiliaryEmbedding_algebraMap + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (x : K) : + ((numberFieldTowerFinitePadicAuxiliaryTopEmbedding + (K := K) (L := L) p τ (algebraMap K L x) : + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) : + SeparableClosure ℚ) = + ((numberFieldTowerFinitePadicAuxiliaryBaseEmbedding + (K := K) (L := L) p τ x : + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ)) : + SeparableClosure ℚ) := by + rfl + +noncomputable instance + numberFieldTowerFinitePadicAuxiliary_baseAlgebra + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + Algebra K + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ)) := by + exact + (numberFieldTowerFinitePadicAuxiliaryBaseEmbedding + (K := K) (L := L) p τ).toRingHom.toAlgebra + +instance + numberFieldTowerFinitePadicAuxiliary_baseRatScalarTower + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + IsScalarTower ℚ K + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ)) := by + exact + IsScalarTower.of_algebraMap_eq' + (numberFieldTowerFinitePadicAuxiliaryBaseEmbedding + (K := K) (L := L) p τ).comp_algebraMap.symm + +noncomputable instance + numberFieldTowerFinitePadicAuxiliary_topAlgebra + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + Algebra L + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) := by + exact + (numberFieldTowerFinitePadicAuxiliaryTopEmbedding + (K := K) (L := L) p τ).toRingHom.toAlgebra + +instance + numberFieldTowerFinitePadicAuxiliary_topRatScalarTower + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + IsScalarTower ℚ L + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) := by + exact + IsScalarTower.of_algebraMap_eq' + (numberFieldTowerFinitePadicAuxiliaryTopEmbedding + (K := K) (L := L) p τ).comp_algebraMap.symm + +noncomputable instance + numberFieldTowerFinitePadicAuxiliary_originalBaseTopAlgebra + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + Algebra K + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) := by + exact + ((numberFieldTowerFinitePadicAuxiliaryTopEmbedding + (K := K) (L := L) p τ).comp + (IsScalarTower.toAlgHom ℚ K L)).toRingHom.toAlgebra + +instance + numberFieldTowerFinitePadicAuxiliary_originalTopScalarTower + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + IsScalarTower K L + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) := by + exact IsScalarTower.of_algebraMap_eq' rfl + +instance + numberFieldTowerFinitePadicAuxiliary_baseTopScalarTower + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + IsScalarTower K + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ)) + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ).below) := by + apply IsScalarTower.of_algebraMap_eq' + apply RingHom.ext + intro x + apply Subtype.ext + exact + numberFieldTowerFinitePadicAuxiliaryEmbedding_algebraMap + (K := K) (L := L) p τ x + +/-- The genuine auxiliary fixed field is Galois over the original +base field through the compatible embedding above. -/ +theorem numberFieldTowerFinitePadicAuxiliaryBase_isGalois + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) : + IsGalois K + (LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ)) := by + let H := + numberFieldTowerBaseSubgroup K L + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let hSH := + numberFieldTowerFinitePadicCyclicFixedSubgroup_le_baseSubgroup + (K := K) (L := L) p τ + let B := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) H + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) S + let FB := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hSH + let auxiliaryBaseAlgebra : Algebra B FB := + (LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) hSH).algebra + let auxiliaryBaseGalois : IsGalois B FB := + LocalClassFieldTheory.abstractRelativeFixedField_isGalois + ℚ (SeparableClosure ℚ) H S hSH + (numberFieldTowerFinitePadicCyclicFixedSubgroup_extension_normal + (K := K) (L := L) p τ) + let eK := + numberFieldTowerAbstractBaseFieldEquiv K L + refine + @IsGalois.of_equiv_equiv + B FB _ _ auxiliaryBaseAlgebra + K F _ _ + (numberFieldTowerFinitePadicAuxiliary_baseAlgebra + (K := K) (L := L) p τ) + auxiliaryBaseGalois + eK.symm.toRingEquiv (RingEquiv.refl F) ?_ + apply RingHom.ext + intro x + apply Subtype.ext + change + ((eK (eK.symm x) : B) : SeparableClosure ℚ) = + (x : SeparableClosure ℚ) + exact + congrArg Subtype.val (eK.apply_symm_apply x) + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldExistence.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldExistence.lean new file mode 100644 index 0000000..87681a2 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldExistence.lean @@ -0,0 +1,234 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicAuxiliaryFieldFixedFields +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicCyclicData +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ClassFieldRealization +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicUnramifiedLocalGlobalCompatibility +import ClassFieldTheory.AlgebraicNumberTheory.Idele.Extension.OnePlaceBaseNorm + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField +open AlgebraicNumberTheory IsDedekindDomain NumberField +open IdeleGroup RelativeIdeleGroup +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open CyclicCohomology +open KummerTheory ClassFormation + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open GlobalClassFields + +variable + {K L : Type} + [Field K] [NumberField K] + [Field L] [NumberField L] [Algebra K L] + [FiniteDimensional K L] [IsAbelianGalois K L] + + +local instance splitFactPrimeExistence (p : Nat.Primes) : Fact p.1.Prime := ⟨p.2⟩ + +attribute [local instance] + rationalSeparableClosureAlgebra + finitePadicAuxiliaryExtensionNormal + finitePadicAuxiliaryExtensionQuotientFinite + finitePadicAuxiliaryExtensionQuotientIsMulCommutative + + +/-- For a finite-place automorphism generating `Gal(L/K)`, construct +the genuine auxiliary number field used in the cyclotomic reduction. + +The field is finite over `ℚ`, contains the compatible copy of `K`, and +has intersection with the compatible copy of `L` exactly equal to that +copy of `K`. Its defining lift has the prescribed local restriction +and positive integral cyclotomic `p`-adic degree. -/ +theorem exists_finitePlaceCyclotomicAuxiliaryFixedField + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (σ : + absoluteValueDecompositionGroup K + (chosenFinitePlaceExtension (L := L) v).1) + (hσ : + Subgroup.closure + ({σ.1} : Set (Gal(L / K))) = + ⊤) : + letI _ : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + letI _ : Algebra L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureTopAlgebra L + letI _ : IsScalarTower K L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureScalarTower K L + ∃ τ : (numberFieldTowerBaseSubgroup K L).toSubgroup, + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ) = + σ.1 ∧ + (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ + absoluteValueDecompositionGroup K + (numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v + (chosenFinitePlaceExtension (L := L) v)).1 ∧ + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ ≠ + 1 ∧ + FiniteDimensional ℚ + (numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ) ∧ + numberFieldTowerBaseField K L ≤ + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ ∧ + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ ⊓ + numberFieldInRationalSeparableClosure L = + numberFieldTowerBaseField K L ∧ + ∃ n : ℕ, 0 < n ∧ + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ = + (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n := by + let : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + let : Algebra L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureTopAlgebra L + let : IsScalarTower K L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureScalarTower K L + obtain + ⟨τ, hτσ, hτdecomposition, hτdegree, + n, hn, hdegree⟩ := + exists_numberFieldTowerFinitePadicLift_of_finitePlace + (K := K) (L := L) v p σ + have hgenerate := + numberFieldTowerFiniteQuotientCoordinate_generates_of_galoisGenerator + (K := K) (L := L) τ σ.1 hτσ hσ + refine + ⟨τ, hτσ, hτdecomposition, hτdegree, + numberFieldTowerFinitePadicCyclicFixedField_finiteDimensional + (K := K) (L := L) p τ hτdegree, + numberFieldTowerBaseField_le_finitePadicCyclicFixedField + (K := K) (L := L) p τ, + numberFieldTowerFinitePadicCyclicFixedField_inf_topField + (K := K) (L := L) p τ hgenerate, + n, hn, hdegree⟩ + +/-- A `p`-primary local generator admits a genuine auxiliary number +field whose compositum with the rational `p`-primary cyclotomic field +contains `L`. + +Besides the field containment, the construction records the two +properties needed for descent: the auxiliary field meets `L` exactly +in `K`, and the chosen absolute lift has positive integral +cyclotomic degree. -/ +theorem exists_finitePlacePrimaryCyclotomicAuxiliaryFixedField + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (σ : + absoluteValueDecompositionGroup K + (chosenFinitePlaceExtension (L := L) v).1) + (hgenerate : + Subgroup.closure + ({σ.1} : Set (Gal(L / K))) = + ⊤) + (hprimary : + σ.1 ∈ + CommGroup.primaryComponent + (Gal(L / K)) p.1) : + letI _ : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + letI _ : Algebra L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureTopAlgebra L + letI _ : IsScalarTower K L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureScalarTower K L + ∃ τ : (numberFieldTowerBaseSubgroup K L).toSubgroup, + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ) = + σ.1 ∧ + (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ + absoluteValueDecompositionGroup K + (numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v + (chosenFinitePlaceExtension (L := L) v)).1 ∧ + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ ≠ + 1 ∧ + FiniteDimensional ℚ + (numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ) ∧ + numberFieldTowerBaseField K L ≤ + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ ∧ + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ ⊓ + numberFieldInRationalSeparableClosure L = + numberFieldTowerBaseField K L ∧ + numberFieldInRationalSeparableClosure L ≤ + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ ⊔ + rationalCyclotomicPadicField p ∧ + ∃ n : ℕ, 0 < n ∧ + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ = + (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n := by + let : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + let : Algebra L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureTopAlgebra L + let : IsScalarTower K L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureScalarTower K L + obtain + ⟨τ, hτσ, hτdecomposition, hτdegree, + hfinite, hbase, hintersection, + n, hn, hdegree⟩ := + exists_finitePlaceCyclotomicAuxiliaryFixedField + (K := K) (L := L) v p σ hgenerate + have hprimaryQuotient : + numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ ∈ + CommGroup.primaryComponent + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) + p.1 := by + obtain ⟨m, hm⟩ := hprimary + refine ⟨m, ?_⟩ + let e := + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + let q := + numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ + let N : ℕ := p.1 ^ m + have hq : e q = σ.1 := by + exact hτσ + have hmN : σ.1 ^ N = 1 := by + exact hm + change q ^ N = 1 + apply e.injective + calc + e (q ^ N) = (e q) ^ N := by + exact map_pow e q N + _ = σ.1 ^ N := by rw [hq] + _ = 1 := hmN + _ = e 1 := (map_one e).symm + have hcontainment := + numberFieldTowerTopField_le_finitePadicCyclicFixedField_sup_padicCyclotomicField + (K := K) (L := L) p τ n hn hdegree + hprimaryQuotient + exact + ⟨τ, hτσ, hτdecomposition, hτdegree, + hfinite, hbase, hintersection, + hcontainment, n, hn, hdegree⟩ + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldFixedFields.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldFixedFields.lean new file mode 100644 index 0000000..1ed247d --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldFixedFields.lean @@ -0,0 +1,420 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicAuxiliaryFieldNormRestriction +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicCyclicData +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ClassFieldRealization +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicUnramifiedLocalGlobalCompatibility +import ClassFieldTheory.AlgebraicNumberTheory.Idele.Extension.OnePlaceBaseNorm + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField +open AlgebraicNumberTheory IsDedekindDomain NumberField +open IdeleGroup RelativeIdeleGroup +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open CyclicCohomology +open KummerTheory ClassFormation + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open GlobalClassFields + +variable + {K L : Type} + [Field K] [NumberField K] + [Field L] [NumberField L] [Algebra K L] + [FiniteDimensional K L] [IsAbelianGalois K L] + + +local instance splitFactPrimeFixedFields (p : Nat.Primes) : Fact p.1.Prime := ⟨p.2⟩ + +attribute [local instance] + rationalSeparableClosureAlgebra + finitePadicAuxiliaryExtensionNormal + finitePadicAuxiliaryExtensionQuotientFinite + finitePadicAuxiliaryExtensionQuotientIsMulCommutative + +/-- Generation of the actual finite Galois group transports back +through the compatible finite quotient coordinate. -/ +theorem + numberFieldTowerFiniteQuotientCoordinate_generates_of_galoisGenerator + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (σ : Gal(L / K)) + (hτσ : + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ) = + σ) + (hσ : Subgroup.closure ({σ} : Set (Gal(L / K))) = ⊤) : + Subgroup.closure + ({numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ} : + Set + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L))) = + ⊤ := by + let e := + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + let q : + (numberFieldTowerFiniteGaloisSubextension + K L).extensionQuotient := + numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ + have hq : e.toMonoidHom q = σ := by + exact hτσ + change + Subgroup.closure + ({q} : + Set + (numberFieldTowerFiniteGaloisSubextension + K L).extensionQuotient) = + ⊤ + apply Subgroup.map_injective (f := e.toMonoidHom) e.injective + rw [MonoidHom.map_closure, Set.image_singleton, + hq, hσ, + Subgroup.map_top_of_surjective e.toMonoidHom e.surjective] + +/-- If the finite quotient coordinate of a lift generates the whole +finite Galois quotient, then its cyclic preimage together with the +top-field subgroup generates the whole embedded absolute Galois +group. -/ +theorem + numberFieldTowerFinitePadicCyclicPreimage_sup_extensionSubgroup_eq_top + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (hgenerate : + Subgroup.closure + ({numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ} : + Set + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L))) = + ⊤) : + (numberFieldTowerFinitePadicCyclicPreimage + (K := K) (L := L) p τ).toSubgroup ⊔ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L) = + ⊤ := by + let H := + numberFieldTowerBaseSubgroup K L + let N := + extensionSubgroup + H + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L) + let Q := H.toSubgroup ⧸ N + let P := + numberFieldTowerFinitePadicImage + (K := K) (L := L) p + let coordinate := + numberFieldTowerFinitePadicCoordinate + (K := K) (L := L) p + let rangeRestriction := + numberFieldTowerFinitePadicRangeRestriction + (K := K) (L := L) p + let γ : P.toSubgroup := + rangeRestriction τ + let Γ := + ClassFormation.padicCyclicClosure γ + let finiteProjection : + P.toSubgroup →* + Q := + (MonoidHom.fst Q + (Multiplicative ℤ_[p.1])).comp + P.toSubgroup.subtype + have hprojection : + Γ.toSubgroup.map finiteProjection = ⊤ := by + apply top_unique + rw [← hgenerate] + apply (Subgroup.closure_le _).2 + intro q hq + rw [Set.mem_singleton_iff] at hq + subst q + refine + ⟨γ, + (ClassFormation.padicCyclicClosureGenerator γ).2, + ?_⟩ + rfl + have hquotientSurjective : + ∀ q : Q, + ∃ u : H.toSubgroup, + u ∈ + (numberFieldTowerFinitePadicCyclicPreimage + (K := K) (L := L) p τ).toSubgroup ∧ + numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) u = + q := by + intro q + have hq : + q ∈ Γ.toSubgroup.map finiteProjection := by + rw [hprojection] + trivial + obtain ⟨z, hzΓ, hzq⟩ := hq + obtain ⟨u, hu⟩ := + numberFieldTowerFinitePadicRangeRestriction_surjective + (K := K) (L := L) p z + refine ⟨u, ?_, ?_⟩ + · change rangeRestriction u ∈ Γ.toSubgroup + rw [hu] + exact hzΓ + · calc + numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) u = + finiteProjection (rangeRestriction u) := rfl + _ = finiteProjection z := congrArg finiteProjection hu + _ = q := hzq + apply top_unique + intro h _ + obtain ⟨u, huU, huq⟩ := + hquotientSurjective + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) h) + let k : H.toSubgroup := + h * u⁻¹ + have hkN : k ∈ N := by + apply (QuotientGroup.eq_one_iff (N := N) k).mp + change + numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) (h * u⁻¹) = + 1 + rw [map_mul, map_inv, huq, mul_inv_cancel] + have hkSup : + k ∈ + (numberFieldTowerFinitePadicCyclicPreimage + (K := K) (L := L) p τ).toSubgroup ⊔ + N := + (le_sup_right : + N ≤ + (numberFieldTowerFinitePadicCyclicPreimage + (K := K) (L := L) p τ).toSubgroup ⊔ N) hkN + have huSup : + u ∈ + (numberFieldTowerFinitePadicCyclicPreimage + (K := K) (L := L) p τ).toSubgroup ⊔ + N := + (le_sup_left : + (numberFieldTowerFinitePadicCyclicPreimage + (K := K) (L := L) p τ).toSubgroup ≤ + (numberFieldTowerFinitePadicCyclicPreimage + (K := K) (L := L) p τ).toSubgroup ⊔ N) huU + have hku : + k * u = h := by + simp only [k, inv_mul_cancel_right] + rw [← hku] + exact + ((numberFieldTowerFinitePadicCyclicPreimage + (K := K) (L := L) p τ).toSubgroup ⊔ N).mul_mem + hkSup huSup + +/-- Ambient form of the generation statement: the auxiliary cyclic +fixed subgroup together with the subgroup fixing `L` generates the +subgroup fixing `K`. -/ +theorem + numberFieldTowerFinitePadicCyclicFixedSubgroup_sup_topSubgroup + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (hgenerate : + Subgroup.closure + ({numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ} : + Set + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L))) = + ⊤) : + (numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ).toSubgroup ⊔ + (numberFieldTowerTopSubgroup L).toSubgroup = + (numberFieldTowerBaseSubgroup K L).toSubgroup := by + let H := + numberFieldTowerBaseSubgroup K L + let T := + numberFieldTowerTopSubgroup L + let N := + extensionSubgroup + H T + (numberFieldTowerTopSubgroup_le_baseSubgroup K L) + let U := + numberFieldTowerFinitePadicCyclicPreimage + (K := K) (L := L) p τ + have hrelative : + U.toSubgroup ⊔ N = ⊤ := + numberFieldTowerFinitePadicCyclicPreimage_sup_extensionSubgroup_eq_top + (K := K) (L := L) p τ hgenerate + have hNmap : + N.map H.toSubgroup.subtype = + T.toSubgroup := by + exact + Subgroup.map_subgroupOf_eq_of_le + (numberFieldTowerTopSubgroup_le_baseSubgroup K L) + change + U.toSubgroup.map H.toSubgroup.subtype ⊔ + T.toSubgroup = + H.toSubgroup + rw [← hNmap, ← Subgroup.map_sup, + hrelative, ← MonoidHom.range_eq_map, + H.toSubgroup.range_subtype] + +/-- The concrete auxiliary fixed field is linearly disjoint from `L` +over the compatible embedded copy of `K`. -/ +theorem + numberFieldTowerFinitePadicCyclicFixedField_inf_topField + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (hgenerate : + Subgroup.closure + ({numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ} : + Set + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L))) = + ⊤) : + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ ⊓ + numberFieldInRationalSeparableClosure L = + numberFieldTowerBaseField K L := by + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let T := + numberFieldTowerTopSubgroup L + let H := + numberFieldTowerBaseSubgroup K L + change + IntermediateField.fixedField S.toSubgroup ⊓ + numberFieldInRationalSeparableClosure L = + numberFieldTowerBaseField K L + rw [ + ← InfiniteGalois.fixedField_fixingSubgroup + (numberFieldInRationalSeparableClosure L), + ← InfiniteGalois.fixedField_fixingSubgroup + (numberFieldTowerBaseField K L)] + change + IntermediateField.fixedField S.toSubgroup ⊓ + IntermediateField.fixedField T.toSubgroup = + IntermediateField.fixedField H.toSubgroup + rw [ + ← IntermediateField.fixedField_sup_eq_inf, + numberFieldTowerFinitePadicCyclicFixedSubgroup_sup_topSubgroup + (K := K) (L := L) p τ hgenerate] + +/-- If the finite quotient coordinate is `p`-primary, adjoining the +actual rational `p`-primary cyclotomic field to the auxiliary fixed +field contains the compatible copy of `L`. + +This is the field-theoretic conclusion of the simultaneous +finite/cyclotomic lift: the intersection of the two fixing subgroups +already fixes `L`, hence their fixed-field compositum contains `L`. -/ +theorem + numberFieldTowerTopField_le_finitePadicCyclicFixedField_sup_padicCyclotomicField + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (n : ℕ) (hn : 0 < n) + (hdegree : + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ = + (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n) + (hprimary : + numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ ∈ + CommGroup.primaryComponent + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) + p.1) : + numberFieldInRationalSeparableClosure L ≤ + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ ⊔ + rationalCyclotomicPadicField p := by + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let T := + numberFieldTowerTopSubgroup L + let F := + numberFieldTowerFinitePadicCyclicFixedField + (K := K) (L := L) p τ + let C : @IntermediateField ℚ (SeparableClosure ℚ) _ _ + rationalSeparableClosureAlgebra := + rationalCyclotomicPadicField p + have hfixing : + (F ⊔ C).fixingSubgroup ≤ + T.toSubgroup := by + change + (IntermediateField.fixedField S.toSubgroup ⊔ C).fixingSubgroup ≤ + T.toSubgroup + rw [ + IntermediateField.fixingSubgroup_sup, + InfiniteGalois.fixingSubgroup_fixedField S] + intro σ hσ + apply + numberFieldTowerFinitePadicCyclicFixedSubgroup_inf_absolutePadicKernel_le_topSubgroup + (K := K) (L := L) p τ n hn hdegree hprimary + refine ⟨hσ.1, ?_⟩ + let : Algebra ℚ rationalCyclotomicZHatField := + rationalCyclotomicZHatField.algebra' + let : @Normal ℚ rationalCyclotomicZHatField _ _ + rationalCyclotomicZHatField.algebra' := + rationalCyclotomicZHatField_normal + let E := + rationalCyclotomicPadicFieldWithinZHat p + change + rationalCyclotomicPadicCoordinate p + (rationalAbsoluteGaloisRestrictionToCyclotomicZHat σ) = + 1 + have hr : + rationalAbsoluteGaloisRestrictionToCyclotomicZHat σ ∈ + E.fixingSubgroup := by + rw [IntermediateField.mem_fixingSubgroup_iff] + intro x hx + apply Subtype.ext + have hfix : + σ x.1 = x.1 := + (IntermediateField.mem_fixingSubgroup_iff + (IntermediateField.lift E) σ).1 hσ.2 x.1 + ((IntermediateField.mem_lift x).2 hx) + exact + (AlgEquiv.restrictNormal_commutes + σ rationalCyclotomicZHatField x).trans hfix + rw [rationalCyclotomicPadicFieldWithinZHat_fixingSubgroup] + at hr + exact hr + rw [ + ← InfiniteGalois.fixedField_fixingSubgroup + (numberFieldInRationalSeparableClosure L)] + change + IntermediateField.fixedField T.toSubgroup ≤ + F ⊔ C + rw [ + ← InfiniteGalois.fixedField_fixingSubgroup + (F ⊔ C)] + exact + IntermediateField.fixedField_le hfixing + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldNormRestriction.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldNormRestriction.lean new file mode 100644 index 0000000..c7daa65 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/LocalGlobalArtinCompatibility/FinitePadicAuxiliaryFieldNormRestriction.lean @@ -0,0 +1,411 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicAuxiliaryFieldAutomorphisms +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.LocalGlobalArtinCompatibility.FinitePadicCyclicData +import ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.ClassFieldRealization +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.CyclotomicUnramifiedLocalGlobalCompatibility +import ClassFieldTheory.AlgebraicNumberTheory.Idele.Extension.OnePlaceBaseNorm + + +set_option autoImplicit false + + +open scoped IsMulCommutative NumberField +open AlgebraicNumberTheory IsDedekindDomain NumberField +open IdeleGroup RelativeIdeleGroup +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open CyclicCohomology +open KummerTheory ClassFormation + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open GlobalClassFields + +variable + {K L : Type} + [Field K] [NumberField K] + [Field L] [NumberField L] [Algebra K L] + [FiniteDimensional K L] [IsAbelianGalois K L] + + +local instance splitFactPrimeNormRestriction (p : Nat.Primes) : Fact p.1.Prime := ⟨p.2⟩ + +attribute [local instance] + rationalSeparableClosureAlgebra + finitePadicAuxiliaryExtensionNormal + finitePadicAuxiliaryExtensionQuotientFinite + finitePadicAuxiliaryExtensionQuotientIsMulCommutative + +/-- Pointwise form of norm/restriction naturality. Keeping the function +equality and its coercion normalization in this small declaration prevents +the auxiliary-field witness construction below from repeatedly elaborating +the full pair of composite homomorphisms. -/ +private theorem globalNormResidueMonoidHomOfEmbedding_norm_restriction_apply + (K K' L L' : Type) + [Field K] [NumberField K] + [Field K'] [NumberField K'] + [Field L] [NumberField L] + [Field L'] [NumberField L'] + [Algebra K K'] [Algebra K L] [Algebra K L'] + [Algebra K' L'] [Algebra L L'] + [IsScalarTower K K' L'] [IsScalarTower K L L'] + [FiniteDimensional K L] [IsAbelianGalois K L] + [FiniteDimensional K' L'] [IsAbelianGalois K' L'] + [FiniteDimensional K K'] [IsGalois K K'] + (j : L' →ₐ[ℚ] SeparableClosure ℚ) + (c : IdeleClassGroup K') : + ((AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K)) + (globalNormResidueMonoidHomOfEmbedding K' L' j c) = + globalNormResidueMonoidHomOfEmbedding K L + (j.comp (IsScalarTower.toAlgHom ℚ L L')) + (_root_.ideleClassNorm K K' c) := by + exact + DFunLike.congr_fun + (globalNormResidueMonoidHomOfEmbedding_norm_restriction + (K := K) (L := L) (K' := K') (L' := L') j) c + + +/-- The auxiliary-field construction produces a lower local unit +whose chosen local Artin value and global norm-residue value are both +the finite quotient coordinate of the distinguished lift. -/ +opaque numberFieldTowerFinitePadicAuxiliaryLocalGlobalRepresentative + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (τ : (numberFieldTowerBaseSubgroup K L).toSubgroup) + (hτ : + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ ≠ 1) + (hdecomposition : + letI : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ + absoluteValueDecompositionGroup K + (numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v (chosenFinitePlaceExtension (L := L) v)).1) + (n : ℕ) (hn : 0 < n) + (hdegree : + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ = + (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n) + (hprimaryQuotient : + numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ ∈ + CommGroup.primaryComponent + ((numberFieldTowerBaseSubgroup K L).toSubgroup ⧸ + extensionSubgroup + (numberFieldTowerBaseSubgroup K L) + (numberFieldTowerTopSubgroup L) + (numberFieldTowerTopSubgroup_le_baseSubgroup K L)) + p.1) : + {z : (v.adicCompletion K)ˣ // + chosenFinitePlaceArtinMonoidHom (K := K) (L := L) v z = + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ) ∧ + globalNormResidueMonoidHom K L + (IdeleGroup.finitePlaceIdeleClass v z) = + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ)} := by + let H := + numberFieldTowerFinitePadicAuxiliaryAbstractField + (K := K) (L := L) p τ hτ + let S := + numberFieldTowerFinitePadicCyclicFixedSubgroup + (K := K) (L := L) p τ + let P := + numberFieldTowerFinitePadicAuxiliaryCompositumSubextension + (K := K) (L := L) p τ + let F := + LocalClassFieldTheory.abstractFixedField + ℚ (SeparableClosure ℚ) S + let E := + LocalClassFieldTheory.abstractRelativeFixedField + ℚ (SeparableClosure ℚ) P.below + letI hHfinite : Finite + ((baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)).toSubgroup ⧸ + extensionSubgroup + (baseField + (SeparableClosure ℚ ≃ₐ[ℚ] SeparableClosure ℚ)) + S (le_baseField S)) := + H.finite + letI hPfinite : Finite + (S.toSubgroup ⧸ extensionSubgroup S P.field P.below) := + P.finite + letI auxiliaryBaseNumberField : NumberField F := by + let : FiniteDimensional ℚ F := + LocalClassFieldTheory.abstractFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) S hHfinite + exact NumberField.of_module_finite ℚ F + letI auxiliaryTopNumberField : NumberField E := by + let : FiniteDimensional F E := + LocalClassFieldTheory.abstractRelativeFixedField_finiteDimensional + ℚ (SeparableClosure ℚ) + S P.field P.below hHfinite hPfinite + exact NumberField.of_module_finite F E + letI auxiliaryAbelianGalois : IsAbelianGalois F E := + GlobalClassFields.finiteAbelianSubextensionAbstractRelativeFixedFieldIsAbelianGalois P + letI auxiliaryOriginalBaseAlgebra : Algebra K F := + numberFieldTowerFinitePadicAuxiliary_baseAlgebra + (K := K) (L := L) p τ + letI auxiliaryOriginalTopAlgebra : Algebra L E := + numberFieldTowerFinitePadicAuxiliary_topAlgebra + (K := K) (L := L) p τ + letI auxiliaryOriginalBaseTopAlgebra : Algebra K E := + numberFieldTowerFinitePadicAuxiliary_originalBaseTopAlgebra + (K := K) (L := L) p τ + letI auxiliaryOriginalTopScalarTower : IsScalarTower K L E := + numberFieldTowerFinitePadicAuxiliary_originalTopScalarTower + (K := K) (L := L) p τ + letI auxiliaryBaseTopScalarTower : IsScalarTower K F E := + numberFieldTowerFinitePadicAuxiliary_baseTopScalarTower + (K := K) (L := L) p τ + letI auxiliaryOriginalBaseGalois : IsGalois K F := + numberFieldTowerFinitePadicAuxiliaryBase_isGalois + (K := K) (L := L) p τ + let auxiliaryOriginalTopAlgHom : L →ₐ[ℚ] E := + numberFieldTowerFinitePadicAuxiliaryTopEmbedding + (K := K) (L := L) p τ + let wF := + numberFieldTowerFinitePadicAuxiliaryBasePlaceExtension + (K := K) (L := L) v p τ + let wE := + numberFieldTowerFinitePadicAuxiliaryTopPlaceExtension + (K := K) (L := L) v p τ + let V := + finitePlaceExtensionCentre + (K := K) (L := F) v wF + have hVbelow : finitePlaceBelow (K := K) V = v := + finitePlaceBelow_finitePlaceExtensionCentre + (K := K) (L := F) v wF + let Vover : + {V' : HeightOneSpectrum (𝓞 F) // + finitePlaceBelow (K := K) V' = v} := + ⟨V, hVbelow⟩ + letI auxiliaryCompletionAlgebra : + Algebra (v.adicCompletion K) (V.adicCompletion F) := + (finitePlaceAdicCompletionMap K F v Vover).toAlgebra + let σE : Gal(E / F) := + numberFieldTowerFinitePadicAuxiliaryAutomorphism + (K := K) (L := L) p τ + have hσtop : + σE ∈ absoluteValueDecompositionGroup F wE.1 := + numberFieldTowerFinitePadicAuxiliaryAutomorphism_mem_topPlaceDecomposition + (K := K) (L := L) v p τ hdecomposition + have hgroup := + numberFieldTowerFinitePadicAuxiliaryTopDecompositionGroup_eq_chosen + (K := K) (L := L) v p τ hτ + have hσchosen : + σE ∈ absoluteValueDecompositionGroup F + (chosenFinitePlaceExtension (L := E) V).1 := by + rw [← hgroup] + exact hσtop + have hRange : + σE ∈ (chosenFinitePlaceArtinMonoidHom + (K := F) (L := E) V).range := by + rw [chosenFinitePlaceArtinMonoidHom_range (K := F) (L := E) V] + exact hσchosen + let y : (V.adicCompletion F)ˣ := Classical.choose hRange + have hy : + chosenFinitePlaceArtinMonoidHom (K := F) (L := E) V y = + numberFieldTowerFinitePadicAuxiliaryAutomorphism + (K := K) (L := L) p τ := + Classical.choose_spec hRange + let z : (v.adicCompletion K)ˣ := + LocalFieldTheory.normUnits + (v.adicCompletion K) (V.adicCompletion F) y + have hz : + z = LocalFieldTheory.normUnits + (v.adicCompletion K) (V.adicCompletion F) y := by + rfl + let σK : Gal(L / K) := + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ) + let restriction : Gal(E / F) →* Gal(L / K) := + (AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K) + have hrestrict : restriction σE = σK := + numberFieldTowerFinitePadicAuxiliaryAutomorphism_restriction + (K := K) (L := L) p τ + have hlocal : + chosenFinitePlaceArtinMonoidHom (K := K) (L := L) v z = + σK := by + rw [hz] + have hnat := + DFunLike.congr_fun + (chosenFinitePlaceArtinMonoidHom_norm_restriction_of_below_eq + (K := K) (L := L) (K' := F) (L' := E) + v V hVbelow) y + calc + chosenFinitePlaceArtinMonoidHom (K := K) (L := L) v + (LocalFieldTheory.normUnits + (v.adicCompletion K) (V.adicCompletion F) y) = + restriction + (chosenFinitePlaceArtinMonoidHom (K := F) (L := E) V y) := by + simpa only [ + MonoidHom.coe_comp, Function.comp_apply, restriction] + using hnat.symm + _ = restriction σE := congrArg restriction hy + _ = σK := hrestrict + let j : E →ₐ[ℚ] SeparableClosure ℚ := + E.val.restrictScalars ℚ + have hjLower : + j.comp auxiliaryOriginalTopAlgHom = + AlgebraicNumberTheory.numberFieldSeparableClosureEmbedding L := by + apply AlgHom.ext + intro a + exact + numberFieldTowerFinitePadicAuxiliaryTopEmbedding_coe + (K := K) (L := L) p τ a + have hPUnramified : + P.toFiniteGaloisExtension.IsUnramified + rationalCyclotomicDegreeData := + numberFieldTowerFinitePadicAuxiliaryCompositumSubextension_isUnramified + (K := K) (L := L) p τ n hn hdegree hprimaryQuotient + have hcompat : + (globalNormResidueMonoidHomOfEmbedding F E j).comp + (IdeleGroup.finitePlaceIdeleClass V) = + chosenFinitePlaceArtinMonoidHom (K := F) (L := E) V := + globalNormResidueMonoidHomOfEmbedding_comp_finitePlaceIdeleClass_of_abstractFixedFieldUnramified + H P hPUnramified V + have hupper : + globalNormResidueMonoidHomOfEmbedding F E j + (IdeleGroup.finitePlaceIdeleClass V y) = + σE := + (congrArg + (fun φ : (V.adicCompletion F)ˣ →* Gal(E / F) => φ y) + hcompat).trans hy + have hnormClass : + _root_.ideleClassNorm K F + (IdeleGroup.finitePlaceIdeleClass V y) = + IdeleGroup.finitePlaceIdeleClass v z := by + rw [hz] + simpa only [Vover] using + (IdeleGroup.ideleClassNorm_finitePlaceIdeleClass_eq_normUnits + (K := K) (L := F) v Vover y) + have hglobal : + globalNormResidueMonoidHom K L + (IdeleGroup.finitePlaceIdeleClass v z) = + σK := by + calc + globalNormResidueMonoidHom K L + (IdeleGroup.finitePlaceIdeleClass v z) = + globalNormResidueMonoidHom K L + (_root_.ideleClassNorm K F + (IdeleGroup.finitePlaceIdeleClass V y)) := + congrArg (globalNormResidueMonoidHom K L) hnormClass.symm + _ = globalNormResidueMonoidHomOfEmbedding K L + (j.comp auxiliaryOriginalTopAlgHom) + (_root_.ideleClassNorm K F + (IdeleGroup.finitePlaceIdeleClass V y)) := by + rw [hjLower, + ← globalNormResidueMonoidHom_eq_ofEmbedding_standard] + _ = ((AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K)) + (globalNormResidueMonoidHomOfEmbedding F E j + (IdeleGroup.finitePlaceIdeleClass V y)) := by + apply Eq.symm + apply + globalNormResidueMonoidHomOfEmbedding_norm_restriction_apply + _ = ((AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K)) σE := + congrArg + ((AlgEquiv.restrictNormalHom L).comp + (AlgEquiv.restrictScalarsHom K)) hupper + _ = restriction σE := rfl + _ = σK := hrestrict + exact ⟨z, hlocal, hglobal⟩ + + +/-- Every genuine finite-place decomposition automorphism has a +compatible embedded absolute lift with the same finite quotient class +and positive integral cyclotomic `p`-adic degree. -/ +theorem exists_numberFieldTowerFinitePadicLift_of_finitePlace + (v : HeightOneSpectrum (𝓞 K)) + (p : Nat.Primes) + (σ : + absoluteValueDecompositionGroup K + (chosenFinitePlaceExtension (L := L) v).1) : + letI _ : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + letI _ : Algebra L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureTopAlgebra L + letI _ : IsScalarTower K L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureScalarTower K L + ∃ τ : (numberFieldTowerBaseSubgroup K L).toSubgroup, + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ) = + σ.1 ∧ + (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ + absoluteValueDecompositionGroup K + (numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v + (chosenFinitePlaceExtension (L := L) v)).1 ∧ + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ ≠ + 1 ∧ + ∃ n : ℕ, 0 < n ∧ + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ = + (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n := by + let : Algebra K (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureBaseAlgebra K L + let : Algebra L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureTopAlgebra L + let : IsScalarTower K L (SeparableClosure ℚ) := + numberFieldTowerSeparableClosureScalarTower K L + obtain ⟨τΩ, hτΩrestrict, n, hn, hτΩdegree⟩ := + exists_finitePlaceSeparableClosureLift_with_positivePadicCyclotomicDegree + (K := K) (L := L) v p σ + let τ : + (numberFieldTowerBaseSubgroup K L).toSubgroup := + numberFieldTowerSeparableClosureEquivBaseSubgroup + K L τΩ.1 + have hfinite : + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (numberFieldTowerFiniteQuotientCoordinate + (K := K) (L := L) τ) = + σ.1 := by + change + numberFieldTowerExtensionQuotientEquivGaloisGroup K L + (QuotientGroup.mk + (numberFieldTowerSeparableClosureEquivBaseSubgroup + K L τΩ.1)) = + σ.1 + rw [ + numberFieldTowerExtensionQuotientEquivGaloisGroup_mk_baseSubgroupEquiv] + exact congrArg Subtype.val hτΩrestrict + have hdegree : + numberFieldTowerBaseSubgroupPadicCyclotomicDegree + (K := K) (L := L) p τ = + (Multiplicative.ofAdd (1 : ℤ_[p.1])) ^ n := by + exact hτΩdegree + have hdecomposition : + (numberFieldTowerSeparableClosureEquivBaseSubgroup K L).symm τ ∈ + absoluteValueDecompositionGroup K + (numberFieldTowerFinitePlaceExtensionToSeparableClosure + K L v + (chosenFinitePlaceExtension (L := L) v)).1 := by + simpa only [τ, MulEquiv.symm_apply_apply] using τΩ.2 + refine + ⟨τ, hfinite, hdecomposition, ?_, n, hn, hdegree⟩ + rw [hdegree] + exact + PadicInt.multiplicative_positiveNatDegree_ne_one + p.1 n hn + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityBase.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityBase.lean new file mode 100644 index 0000000..e5057a1 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityBase.lean @@ -0,0 +1,488 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalHilbertSymbol.FinitePlaceCharacterComparison +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.FiniteIdeleArtin +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.HilbertProductFormula +import ClassFieldTheory.AlgebraicNumberTheory.PowerResidueSymbols.Ideal +import ClassFieldTheory.AlgebraicNumberTheory.Idele.NormApproximation.FinitePlaces +import Mathlib.NumberTheory.Padics.HeightOneSpectrum +import ValuedFieldTheory.LocalField.DiscreteValuationField.PadicField +import ClassFieldTheory.AlgebraicNumberTheory.QuadraticReciprocity +import ClassFieldTheory.AlgebraicNumberTheory.RayClass.Rational +import ClassFieldTheory.LocalClassFieldTheory.Kummer.PowerResidueTameFormula +import ValuedFieldTheory.LocalField.NonarchimedeanLocalField.IdealQuotients +import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.IdealToCompletion +import ValuedFieldTheory.Valuation.Completion.ExtensionInvariants +import ClassFieldTheory.KummerTheory.Concrete.SimpleExtensionLocalBehavior +import ClassFieldTheory.KummerTheory.Concrete.SUnitPreparation.FiniteRadicalSupport +import ClassFieldTheory.LocalClassFieldTheory.Finite.CyclotomicNorm.PrincipalUnits + + +set_option autoImplicit false + + +open scoped BigOperators Classical NumberField NumberTheorySymbols ValuativeRel WithZero +open NumberField IsDedekindDomain + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open KummerTheory +open AlgebraicNumberTheory.PowerResidueSymbols +open LocalClassFieldTheory.Kummer +open LocalFieldTheory +open LocalFieldTheory.IsNonarchimedeanLocalField + +variable (K : Type) [Field K] [NumberField K] + +/-- Equality for the valuation used to define a valuative relation transports +to equality in the relation's canonical value group. -/ +theorem canonicalValuation_eq_of_valuation_eq + {R Γ : Type*} [Ring R] [LinearOrderedCommGroupWithZero Γ] + (v : Valuation R Γ) (x y : R) (hxy : v x = v y) : + letI : ValuativeRel R := ValuativeRel.ofValuation v + ValuativeRel.valuation R x = ValuativeRel.valuation R y := by + let : ValuativeRel R := ValuativeRel.ofValuation v + change + ValuativeRel.ValueGroupWithZero.mk x 1 = + ValuativeRel.ValueGroupWithZero.mk y 1 + rw [ValuativeRel.ValueGroupWithZero.mk_eq_mk] + constructor + · change v (x * (1 : R)) ≤ v (y * (1 : R)) + simpa only [mul_one] using hxy.le + · change v (y * (1 : R)) ≤ v (x * (1 : R)) + simpa only [mul_one] using hxy.ge + +/-- The bounded-natural-number form of nonarchimedeanness for a finite-place +absolute value. Naming this bridge keeps all completion residue constructions +on one proof-irrelevant provider. -/ +private theorem finitePlaceAdicAbv_nonarchimedeanAbsoluteValue + (v : HeightOneSpectrum (𝓞 K)) : + LubinTate.Valuations.NonarchimedeanAbsoluteValue + (HeightOneSpectrum.adicAbv K v) := + (AbsoluteValue.isNonarchimedean_iff_bounded_nat + (HeightOneSpectrum.adicAbv K v)).1 + (HeightOneSpectrum.isNonarchimedean_adicAbv K v) + +/-- Finite-field power-residue symbols commute with a field equivalence. +The statement is made on underlying units so it can be reused with every +roots-of-unity transport occurring below. -/ +theorem finiteFieldPowerResidueSymbol_unitsMap_ringEquiv + {k l : Type*} [Field k] [Field l] [Fintype k] [Fintype l] + (e : k ≃+* l) (n : ℕ+) + (hnk : (n : ℕ) ∣ Fintype.card k - 1) + (hnl : (n : ℕ) ∣ Fintype.card l - 1) + (u : kˣ) : + Units.map e.toMonoidHom + ((AlgebraicNumberTheory.PowerResidueSymbols.finiteFieldPowerResidueSymbol + k n hnk u : + rootsOfUnity (n : ℕ) k) : kˣ) = + ((AlgebraicNumberTheory.PowerResidueSymbols.finiteFieldPowerResidueSymbol + l n hnl + (Units.map e.toMonoidHom u) : + rootsOfUnity (n : ℕ) l) : lˣ) := by + rw [ + AlgebraicNumberTheory.PowerResidueSymbols.finiteFieldPowerResidueSymbol_apply, + AlgebraicNumberTheory.PowerResidueSymbols.finiteFieldPowerResidueSymbol_apply, + map_pow] + rw [Fintype.card_congr e.toEquiv] + +/-- The residue field of a finite-place completion is canonically the +prime-ideal residue field. The construction passes through the localization +at the prime and then through the residue equivalence induced by completion. -/ +noncomputable def finitePlacePrimeResidueEquivLocalResidue + (v : HeightOneSpectrum (𝓞 K)) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + (𝓞 K ⧸ v.asIdeal) ≃+* 𝓀[C] := by + let a := HeightOneSpectrum.adicAbv K v + let ha : LubinTate.Valuations.NonarchimedeanAbsoluteValue a := + finitePlaceAdicAbv_nonarchimedeanAbsoluteValue K v + let C := a.Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + let V := LubinTate.Valuations.exponentialValuationSubring + (AlgebraicNumberTheory.Valuations.absoluteValueExponentialValuation a ha) + let aC := AbsoluteValue.completionAbsoluteValue a + let haC : LubinTate.Valuations.NonarchimedeanAbsoluteValue aC := + (AbsoluteValue.isNonarchimedean_iff_bounded_nat aC).1 + (AbsoluteValue.completionAbsoluteValue_isNonarchimedean a + ((AbsoluteValue.isNonarchimedean_iff_bounded_nat a).2 ha)) + let VC := LubinTate.Valuations.exponentialValuationSubring + (AlgebraicNumberTheory.Valuations.absoluteValueExponentialValuation aC haC) + let Rv := v.valuationSubringAtPrime K + letI : IsLocalRing Rv := + IsLocalization.AtPrime.isLocalRing Rv v.asIdeal + have hBase : Rv.toSubring = V := by + ext x + rw [AlgebraicNumberTheory.Valuations.mem_absoluteValueExponentialSubring_iff] + change x ∈ v.valuationSubringAtPrime K ↔ _ + rw [v.valuationSubringAtPrime_eq_valuationSubring] + change v.valuation K x ≤ 1 ↔ a x ≤ 1 + rw [HeightOneSpectrum.adicAbv_def] + exact_mod_cast + (WithZeroMulInt.toNNReal_le_one_iff + (HeightOneSpectrum.one_lt_absNorm_nnreal v)).symm + let eBase : Rv ≃+* V := RingEquiv.subringCongr hBase + have hCompletion : VC = 𝒪[C] := by + ext x + rw [AlgebraicNumberTheory.Valuations.mem_absoluteValueExponentialSubring_iff] + change ‖x‖ ≤ 1 ↔ x ∈ 𝒪[C] + exact + (finitePlaceCompletion_mem_integers_iff_norm_le_one + a (HeightOneSpectrum.isNonarchimedean_adicAbv K v) x).symm + let eCompletionRing : VC ≃+* 𝒪[C] := + RingEquiv.subringCongr hCompletion + let eIdeal : (𝓞 K ⧸ v.asIdeal) ≃+* v.asIdeal.ResidueField := + RingEquiv.ofBijective + (algebraMap (𝓞 K ⧸ v.asIdeal) v.asIdeal.ResidueField) + v.asIdeal.bijective_algebraMap_quotient_residueField + let eLocalization : Localization.AtPrime v.asIdeal ≃ₐ[𝓞 K] Rv := + IsLocalization.algEquiv v.asIdeal.primeCompl _ _ + exact + eIdeal |>.trans + (IsLocalRing.ResidueField.mapEquiv eLocalization.toRingEquiv) |>.trans + (IsLocalRing.ResidueField.mapEquiv eBase) |>.trans + (AlgebraicNumberTheory.Valuations.completionResidueEquiv a ha) |>.trans + (IsLocalRing.ResidueField.mapEquiv eCompletionRing) + +/-- The image of an algebraic integer in the valuation ring of a finite-place +completion. -/ +noncomputable def finitePlaceIntegralCompletionElement + (v : HeightOneSpectrum (𝓞 K)) (x : 𝓞 K) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + 𝒪[C] := by + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + exact ⟨algebraMap K C (x : K), by + rw [finitePlaceCompletion_mem_integers_iff_norm_le_one + (HeightOneSpectrum.adicAbv K v) + (HeightOneSpectrum.isNonarchimedean_adicAbv K v)] + calc + ‖algebraMap K C (x : K)‖ = + HeightOneSpectrum.adicAbv K v (x : K) := + AbsoluteValue.completionAbsoluteValue_coe + (HeightOneSpectrum.adicAbv K v) (x : K) + _ ≤ 1 := + v.adicAbv_coe_le_one + (HeightOneSpectrum.one_lt_absNorm_nnreal v) x⟩ + +/-- The finite-place integral element has the expected underlying completion +value. -/ +@[simp] +theorem finitePlaceIntegralCompletionElement_coe + (v : HeightOneSpectrum (𝓞 K)) (x : 𝓞 K) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + (finitePlaceIntegralCompletionElement K v x : C) = + algebraMap K C (x : K) := + rfl + +/-- The finite-place residue equivalence sends the class of an algebraic +integer to the residue of its canonical image in the completion. -/ +@[simp] +theorem finitePlacePrimeResidueEquivLocalResidue_mk + (v : HeightOneSpectrum (𝓞 K)) (x : 𝓞 K) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + finitePlacePrimeResidueEquivLocalResidue K v + (Ideal.Quotient.mk v.asIdeal x) = + IsLocalRing.residue 𝒪[C] + (finitePlaceIntegralCompletionElement K v x) := by + simp only [finitePlacePrimeResidueEquivLocalResidue, + finitePlaceIntegralCompletionElement, RingEquiv.trans_apply] + rw [RingEquiv.ofBijective_apply, + Ideal.algebraMap_quotient_residueField_mk] + rw [IsScalarTower.algebraMap_apply + (NumberField.RingOfIntegers K) (Localization.AtPrime v.asIdeal)] + rw [IsLocalRing.ResidueField.algebraMap_eq] + simp only [IsLocalRing.ResidueField.mapEquiv_apply, + IsLocalRing.ResidueField.map_residue] + rw [AlgebraicNumberTheory.Valuations.completionResidueEquiv_residue] + simp only [IsLocalRing.ResidueField.map_residue] + congr 1 + apply Subtype.ext + change + algebraMap K (HeightOneSpectrum.adicAbv K v).Completion + (((IsLocalization.algEquiv v.asIdeal.primeCompl + (Localization.AtPrime v.asIdeal) + (v.valuationSubringAtPrime K)) + (algebraMap (𝓞 K) (Localization.AtPrime v.asIdeal) x) : + v.valuationSubringAtPrime K) : K) = + algebraMap K (HeightOneSpectrum.adicAbv K v).Completion (x : K) + rw [AlgEquiv.commutes] + rw [IsScalarTower.algebraMap_apply + (NumberField.RingOfIntegers K) (v.valuationSubringAtPrime K)] + rfl + +/-- A nonzero algebraic integer, regarded as a global field unit. -/ +def nonzeroIntegralFieldUnit (x : 𝓞 K) (hx : x ≠ 0) : Kˣ := + Units.mk0 (x : K) (by + intro hxK + apply hx + apply Subtype.ext + exact hxK) + +omit [NumberField K] in +@[simp] +theorem nonzeroIntegralFieldUnit_coe (x : 𝓞 K) (hx : x ≠ 0) : + ((nonzeroIntegralFieldUnit K x hx : Kˣ) : K) = (x : K) := + rfl + +/-- An algebraic integer avoiding a prime ideal, regarded as a nonzero +element of the global field. -/ +noncomputable def primeAvoidingIntegralFieldUnit + (v : HeightOneSpectrum (𝓞 K)) + (x : 𝓞 K) (hx : x ∉ v.asIdeal) : Kˣ := + nonzeroIntegralFieldUnit K x (by + intro hx0 + apply hx + rw [hx0] + exact Ideal.zero_mem _) + +omit [NumberField K] in +@[simp] +theorem primeAvoidingIntegralFieldUnit_coe + (v : HeightOneSpectrum (𝓞 K)) + (x : 𝓞 K) (hx : x ∉ v.asIdeal) : + ((primeAvoidingIntegralFieldUnit K v x hx : Kˣ) : K) = (x : K) := + rfl + +/-- An algebraic integer nonzero modulo `v`, regarded as a unit of the +valuation ring of the finite-place completion. -/ +noncomputable def finitePlaceIntegralCompletionUnit + (v : HeightOneSpectrum (𝓞 K)) + (x : 𝓞 K) (hx : x ∉ v.asIdeal) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + 𝒪[C]ˣ := by + let a := HeightOneSpectrum.adicAbv K v + let C := a.Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + let y : C := algebraMap K C (x : K) + have hyNorm : ‖y‖ = 1 := by + calc + ‖y‖ = a (x : K) := + AbsoluteValue.completionAbsoluteValue_coe a (x : K) + _ = ‖NumberField.FinitePlace.embedding v (x : K)‖ := + (NumberField.FinitePlace.norm_embedding v (x : K)).symm + _ = 1 := + (NumberField.FinitePlace.norm_eq_one_iff_notMem K v x).2 hx + have hyNe : y ≠ 0 := by + intro hy + rw [hy, norm_zero] at hyNorm + exact zero_ne_one hyNorm + let yIntegral : 𝒪[C] := ⟨y, by + rw [finitePlaceCompletion_mem_integers_iff_norm_le_one + a (HeightOneSpectrum.isNonarchimedean_adicAbv K v)] + exact hyNorm.le⟩ + let yInvIntegral : 𝒪[C] := ⟨y⁻¹, by + rw [finitePlaceCompletion_mem_integers_iff_norm_le_one + a (HeightOneSpectrum.isNonarchimedean_adicAbv K v), + norm_inv, hyNorm, inv_one]⟩ + exact { + val := yIntegral + inv := yInvIntegral + val_inv := by + apply Subtype.ext + exact mul_inv_cancel₀ hyNe + inv_val := by + apply Subtype.ext + exact inv_mul_cancel₀ hyNe } + +/-- Forgetting the integral-unit structure recovers the ordinary image of +the algebraic integer in the finite-place completion. -/ +@[simp] +theorem finitePlaceIntegralCompletionUnit_coe + (v : HeightOneSpectrum (𝓞 K)) + (x : 𝓞 K) (hx : x ∉ v.asIdeal) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + (((finitePlaceIntegralCompletionUnit K v x hx : 𝒪[C]ˣ) : 𝒪[C]) : C) = + algebraMap K C (x : K) := by + rfl + +/-- The completion image of a prime-avoiding algebraic integer is the field +unit underlying its canonical valuation-ring unit. -/ +theorem finitePlaceHilbert_completionUnit_primeAvoidingIntegralFieldUnit + (v : HeightOneSpectrum (𝓞 K)) + (x : 𝓞 K) (hx : x ∉ v.asIdeal) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + finitePlaceHilbert_completionUnit K v + (primeAvoidingIntegralFieldUnit K v x hx) = + integerUnitsToFieldUnits C + (finitePlaceIntegralCompletionUnit K v x hx) := by + let C := (HeightOneSpectrum.adicAbv K v).Completion + let : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + let : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + dsimp only + apply Units.ext + change + algebraMap K C (x : K) = + (((finitePlaceIntegralCompletionUnit K v x hx : 𝒪[C]ˣ) : + 𝒪[C]) : C) + exact (finitePlaceIntegralCompletionUnit_coe K v x hx).symm + +/-- As an element of the completion valuation ring, the lifted unit is the +canonical lifted algebraic integer. -/ +@[simp] +theorem finitePlaceIntegralCompletionUnit_val + (v : HeightOneSpectrum (𝓞 K)) + (x : 𝓞 K) (hx : x ∉ v.asIdeal) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + (finitePlaceIntegralCompletionUnit K v x hx : 𝒪[C]) = + finitePlaceIntegralCompletionElement K v x := by + dsimp only + apply Subtype.ext + exact finitePlaceIntegralCompletionUnit_coe K v x hx + +/-- Reduction of the canonical completion unit agrees with reduction modulo +the corresponding global prime ideal. -/ +theorem finitePlace_integerUnitsToResidueUnits_integralUnit + (v : HeightOneSpectrum (𝓞 K)) + (x : 𝓞 K) (hx : x ∉ v.asIdeal) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + integerUnitsToResidueUnits C + (finitePlaceIntegralCompletionUnit K v x hx) = + Units.map + (finitePlacePrimeResidueEquivLocalResidue K v).toMonoidHom + (AlgebraicNumberTheory.PowerResidueSymbols.primeIdealResidueUnit + K v x hx) := by + dsimp only + apply Units.ext + change + IsLocalRing.residue 𝒪[(HeightOneSpectrum.adicAbv K v).Completion] + (finitePlaceIntegralCompletionUnit K v x hx : + 𝒪[(HeightOneSpectrum.adicAbv K v).Completion]) = + finitePlacePrimeResidueEquivLocalResidue K v + (Ideal.Quotient.mk v.asIdeal x) + simpa only [finitePlaceIntegralCompletionUnit_val] using + (finitePlacePrimeResidueEquivLocalResidue_mk K v x).symm + +/-- The canonical inclusion from integral roots of unity into the common +field-valued group used by the global Hilbert symbols. -/ +def integralRootsOfUnityToNthRoots + (n : ℕ) : + rootsOfUnity n (𝓞 K) →* nthRootsSubgroup K n where + toFun z := + ⟨Units.map (algebraMap (𝓞 K) K).toMonoidHom z.1, by + calc + Units.map (algebraMap (𝓞 K) K).toMonoidHom z.1 ^ n = + Units.map (algebraMap (𝓞 K) K).toMonoidHom (z.1 ^ n) := + (map_pow + (Units.map (algebraMap (𝓞 K) K).toMonoidHom) z.1 n).symm + _ = 1 := by rw [z.2, map_one]⟩ + map_one' := by + apply Subtype.ext + exact map_one (Units.map (algebraMap (𝓞 K) K).toMonoidHom) + map_mul' := by + intro z w + apply Subtype.ext + exact map_mul + (Units.map (algebraMap (𝓞 K) K).toMonoidHom) z.1 w.1 + +omit [NumberField K] in +/-- The integral-root inclusion is the underlying unit map. -/ +@[simp] +theorem integralRootsOfUnityToNthRoots_apply + (n : ℕ) (z : rootsOfUnity n (𝓞 K)) : + (integralRootsOfUnityToNthRoots K n z).1 = + Units.map (algebraMap (𝓞 K) K).toMonoidHom z.1 := + rfl + +omit [NumberField K] in +/-- The integral-to-field inclusion is injective on roots of unity. -/ +theorem integralRootsOfUnityToNthRoots_injective + (n : ℕ) : + Function.Injective (integralRootsOfUnityToNthRoots K n) := by + intro z w h + apply Subtype.ext + apply + (Units.map_injective + (f := (algebraMap (𝓞 K) K).toMonoidHom) + RingOfIntegers.coe_injective) + exact congrArg Subtype.val h + +/-- Reduction after embedding an integral global root of unity into a +finite-place completion is the transport of reduction modulo the +corresponding prime ideal. -/ +theorem finitePlace_localNthRootsReduction_integralRoots + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (z : rootsOfUnity (n : ℕ) (𝓞 K)) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + (localNthRootsReduction C n + (nthRootsSubgroupMap K C (n : ℕ) + (integralRootsOfUnityToNthRoots K (n : ℕ) z))).1 = + Units.map + (finitePlacePrimeResidueEquivLocalResidue K v).toMonoidHom + (AlgebraicNumberTheory.PowerResidueSymbols.rootsOfUnityReduction + K v (n : ℕ) z).1 := by + dsimp only + apply Units.ext + change + IsLocalRing.residue 𝒪[(HeightOneSpectrum.adicAbv K v).Completion] + (nthRootIntegerUnit + (HeightOneSpectrum.adicAbv K v).Completion n + (nthRootsSubgroupMap K + (HeightOneSpectrum.adicAbv K v).Completion (n : ℕ) + (integralRootsOfUnityToNthRoots K (n : ℕ) z)) : + 𝒪[(HeightOneSpectrum.adicAbv K v).Completion]) = + finitePlacePrimeResidueEquivLocalResidue K v + (Ideal.Quotient.mk v.asIdeal (z.1 : 𝓞 K)) + rw [finitePlacePrimeResidueEquivLocalResidue_mk] + congr 1 + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityCorrection.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityCorrection.lean new file mode 100644 index 0000000..83cbaaa --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityCorrection.lean @@ -0,0 +1,452 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.PowerResidueReciprocityLocalSymbols +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalHilbertSymbol.FinitePlaceCharacterComparison +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.FiniteIdeleArtin +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.HilbertProductFormula +import ClassFieldTheory.AlgebraicNumberTheory.PowerResidueSymbols.Ideal +import ClassFieldTheory.AlgebraicNumberTheory.Idele.NormApproximation.FinitePlaces +import Mathlib.NumberTheory.Padics.HeightOneSpectrum +import ValuedFieldTheory.LocalField.DiscreteValuationField.PadicField +import ClassFieldTheory.AlgebraicNumberTheory.QuadraticReciprocity +import ClassFieldTheory.AlgebraicNumberTheory.RayClass.Rational +import ClassFieldTheory.LocalClassFieldTheory.Kummer.PowerResidueTameFormula +import ValuedFieldTheory.LocalField.NonarchimedeanLocalField.IdealQuotients +import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.IdealToCompletion +import ValuedFieldTheory.Valuation.Completion.ExtensionInvariants +import ClassFieldTheory.KummerTheory.Concrete.SimpleExtensionLocalBehavior +import ClassFieldTheory.KummerTheory.Concrete.SUnitPreparation.FiniteRadicalSupport +import ClassFieldTheory.LocalClassFieldTheory.Finite.CyclotomicNorm.PrincipalUnits + + +set_option autoImplicit false + + +open scoped BigOperators Classical NumberField NumberTheorySymbols ValuativeRel WithZero +open NumberField IsDedekindDomain + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open KummerTheory +open AlgebraicNumberTheory.PowerResidueSymbols +open LocalClassFieldTheory.Kummer +open LocalFieldTheory +open LocalFieldTheory.IsNonarchimedeanLocalField + +variable (K : Type) [Field K] [NumberField K] +/-- Prime avoidance is the common special case of the integral valuation +formula used for numerator units. -/ +theorem finitePlaceNormalizedValuation_primeAvoidingIntegralFieldUnit + (v : HeightOneSpectrum (𝓞 K)) + (x : 𝓞 K) (hx : x ∉ v.asIdeal) : + finitePlaceNormalizedValuation K v + (primeAvoidingIntegralFieldUnit K v x hx) = + -(AlgebraicNumberTheory.PowerResidueSymbols.idealPrimeMultiplicity K v (Ideal.span {x}) : ℤ) := by + let hx0 : x ≠ 0 := by + intro hxzero + apply hx + rw [hxzero] + exact Ideal.zero_mem _ + change finitePlaceNormalizedValuation K v + (nonzeroIntegralFieldUnit K x hx0) = _ + exact finitePlaceNormalizedValuation_nonzeroIntegralFieldUnit K v x hx0 + +/-- Integral form of the finite-place comparison: the exponent is the +Dedekind multiplicity in the principal denominator ideal. -/ +theorem finitePlaceHilbertSymbol_integral_eq_primeIdealPowerResidueFactor + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (v : HeightOneSpectrum (𝓞 K)) + (hv : v ∉ powerResidueExponentFinitePlaces K n) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (a b : 𝓞 K) (ha0 : a ≠ 0) (hb0 : b ≠ 0) + (ha : a ∉ v.asIdeal) : + finitePlaceHilbertSymbol K n hnK hmu v + (nonzeroIntegralFieldUnit K a ha0) + (nonzeroIntegralFieldUnit K b hb0) = + integralRootsOfUnityToNthRoots K (n : ℕ) + (AlgebraicNumberTheory.PowerResidueSymbols.primeIdealPowerResidueSymbol + K v n hmu hcoprime a ha) ^ + AlgebraicNumberTheory.PowerResidueSymbols.idealPrimeMultiplicity K v (Ideal.span {b}) := by + have haUnits : + nonzeroIntegralFieldUnit K a ha0 = + primeAvoidingIntegralFieldUnit K v a ha := by + apply Units.ext + rfl + rw [haUnits, + finitePlaceHilbertSymbol_eq_primeIdealPowerResidueFactor + K n hnK hmu v hv hcoprime a ha + (nonzeroIntegralFieldUnit K b hb0), + finitePlaceNormalizedValuation_nonzeroIntegralFieldUnit] + simp only [neg_neg, zpow_natCast] + +/-- Finite-place Hilbert symbols inherit skew symmetry from the local +Hilbert symbol in the canonical completion. -/ +theorem finitePlaceHilbertSymbol_skew + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (v : HeightOneSpectrum (𝓞 K)) (a b : Kˣ) : + finitePlaceHilbertSymbol K n hnK hmu v a b = + (finitePlaceHilbertSymbol K n hnK hmu v b a)⁻¹ := by + let C := (HeightOneSpectrum.adicAbv K v).Completion + let : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + let : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + apply nthRootsSubgroupMap_injective K C (n : ℕ) + rw [map_inv, + finitePlaceHilbertSymbol_map_eq_localHilbertSymbol, + finitePlaceHilbertSymbol_map_eq_localHilbertSymbol] + exact + localHilbertSymbol_skew C n + (finitePlaceHilbert_natCast_ne_zero K n hnK v) + (finitePlaceHilbert_primitiveRoots_nonempty K n hmu v) + (finitePlaceHilbert_completionUnit K v a) + (finitePlaceHilbert_completionUnit K v b) + +/-- If two nonzero algebraic integers are both units at a finite place, the +corresponding finite-place Hilbert symbol is trivial. -/ +theorem finitePlaceHilbertSymbol_integral_units_eq_one + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (v : HeightOneSpectrum (𝓞 K)) + (hv : v ∉ powerResidueExponentFinitePlaces K n) + (a b : 𝓞 K) (ha0 : a ≠ 0) (hb0 : b ≠ 0) + (ha : a ∉ v.asIdeal) (hb : b ∉ v.asIdeal) : + finitePlaceHilbertSymbol K n hnK hmu v + (nonzeroIntegralFieldUnit K a ha0) + (nonzeroIntegralFieldUnit K b hb0) = 1 := by + let C := (HeightOneSpectrum.adicAbv K v).Completion + let : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + let : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + apply nthRootsSubgroupMap_injective K C (n : ℕ) + rw [map_one, finitePlaceHilbertSymbol_map_eq_localHilbertSymbol] + have haUnits : + finitePlaceHilbert_completionUnit K v + (nonzeroIntegralFieldUnit K a ha0) = + integerUnitsToFieldUnits C + (finitePlaceIntegralCompletionUnit K v a ha) := by + apply Units.ext + change + algebraMap K C (a : K) = + (((finitePlaceIntegralCompletionUnit K v a ha : 𝒪[C]ˣ) : + 𝒪[C]) : C) + exact (finitePlaceIntegralCompletionUnit_coe K v a ha).symm + have hbUnits : + finitePlaceHilbert_completionUnit K v + (nonzeroIntegralFieldUnit K b hb0) = + integerUnitsToFieldUnits C + (finitePlaceIntegralCompletionUnit K v b hb) := by + apply Units.ext + change + algebraMap K C (b : K) = + (((finitePlaceIntegralCompletionUnit K v b hb : 𝒪[C]ˣ) : + 𝒪[C]) : C) + exact (finitePlaceIntegralCompletionUnit_coe K v b hb).symm + unfold finitePlaceLocalHilbertSymbol + rw [haUnits, hbUnits] + exact + localHilbertSymbol_integerUnit_integerUnit_eq_one C n + (finitePlace_natCast_valuation_eq_one_of_not_mem_exponent K n v hv) + (finitePlaceHilbert_primitiveRoots_nonempty K n hmu v) + (finitePlaceIntegralCompletionUnit K v a ha) + (finitePlaceIntegralCompletionUnit K v b hb) + +/-- Primewise comparison between the tame finite-place Hilbert factor and +the quotient of the two ideal power-residue factors. -/ +theorem powerResidueAwayFromExponentFiniteFactor_integral_eq_idealFactors + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : 𝓞 K) (ha0 : a ≠ 0) (hb0 : b ≠ 0) + (hcoprimeA : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {a} → + (Ideal.absNorm P.asIdeal).Coprime (n : ℕ)) + (hcoprimeB : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {b} → + (Ideal.absNorm P.asIdeal).Coprime (n : ℕ)) + (haB : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {b} → a ∉ P.asIdeal) + (hbA : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {a} → b ∉ P.asIdeal) + (hAwayA : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {a} → + P ∉ powerResidueExponentFinitePlaces K n) + (hAwayB : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {b} → + P ∉ powerResidueExponentFinitePlaces K n) + (P : HeightOneSpectrum (𝓞 K)) : + (if P ∈ powerResidueExponentFinitePlaces K n then + 1 + else + finitePlaceHilbertSymbol K n hnK hmu P + (nonzeroIntegralFieldUnit K a ha0) + (nonzeroIntegralFieldUnit K b hb0)) = + integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueFactor K (Ideal.span {b}) n hmu a + hcoprimeB haB P) * + (integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueFactor K (Ideal.span {a}) n hmu b + hcoprimeA hbA P))⁻¹ := by + by_cases hPExponent : P ∈ powerResidueExponentFinitePlaces K n + · have hPA : ¬ P.asIdeal ∣ Ideal.span {a} := by + intro hPA + exact (hAwayA P hPA) hPExponent + have hPB : ¬ P.asIdeal ∣ Ideal.span {b} := by + intro hPB + exact (hAwayB P hPB) hPExponent + simp only [ite_eq_left hPExponent, idealPowerResidueFactor, + dite_eq_right hPA, dite_eq_right hPB, map_one, inv_one, mul_one] + · rw [ite_eq_right hPExponent] + by_cases hPB : P.asIdeal ∣ Ideal.span {b} + · have haP : a ∉ P.asIdeal := haB P hPB + have hPA : ¬ P.asIdeal ∣ Ideal.span {a} := by + intro hPA + apply haP + rw [← Ideal.dvd_span_singleton] + exact hPA + rw [finitePlaceHilbertSymbol_integral_eq_primeIdealPowerResidueFactor + K n hnK hmu P (hAwayB P hPB) (hcoprimeB P hPB) + a b ha0 hb0 haP] + simp only [idealPowerResidueFactor, dite_eq_left hPB, dite_eq_right hPA, + map_pow, map_one, inv_one, mul_one] + · by_cases hPA : P.asIdeal ∣ Ideal.span {a} + · have hbP : b ∉ P.asIdeal := hbA P hPA + rw [finitePlaceHilbertSymbol_skew K n hnK hmu] + rw [finitePlaceHilbertSymbol_integral_eq_primeIdealPowerResidueFactor + K n hnK hmu P (hAwayA P hPA) (hcoprimeA P hPA) + b a hb0 ha0 hbP] + simp only [idealPowerResidueFactor, dite_eq_right hPB, dite_eq_left hPA, + map_pow, map_one, one_mul] + · have haP : a ∉ P.asIdeal := by + intro haMem + apply hPA + rw [Ideal.dvd_span_singleton] + exact haMem + have hbP : b ∉ P.asIdeal := by + intro hbMem + apply hPB + rw [Ideal.dvd_span_singleton] + exact hbMem + rw [finitePlaceHilbertSymbol_integral_units_eq_one + K n hnK hmu P hPExponent a b ha0 hb0 haP hbP] + simp only [idealPowerResidueFactor, dite_eq_right hPB, dite_eq_right hPA, + map_one, inv_one, mul_one] + +/-- A concrete finite set containing every finite place where a local +power-residue factor of `a` and `b` may be nontrivial. Its exponent part is +the exact set of prime divisors of `(n)`. -/ +noncomputable def powerResidueBadFinitePlaces + (n : ℕ+) (a b : Kˣ) : + Finset (HeightOneSpectrum (𝓞 K)) := + (chosenUnitFiniteSupport (K := K) a ∪ + chosenUnitFiniteSupport (K := K) b) ∪ + powerResidueExponentFinitePlaces K n + +/-- The explicit bad-place correction in power-residue reciprocity. Every +factor already lies in the common group `nthRootsSubgroup K n`. -/ +noncomputable def powerResidueBadPlaceCorrection + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : Kˣ) : + nthRootsSubgroup K (n : ℕ) := + (∏ v : InfinitePlace K, + infinitePlaceHilbertSymbol K n v a b) * + (∏ v ∈ powerResidueExponentFinitePlaces K n, + finitePlaceHilbertSymbol K n hnK hmu v a b) + +private theorem valuation_eq_one_of_not_mem_chosenUnitFiniteSupport + (x : Kˣ) (v : HeightOneSpectrum (𝓞 K)) + (hv : v ∉ chosenUnitFiniteSupport (K := K) x) : + v.valuation K (x : K) = 1 := + (mem_SUnitGroup_iff (K := K) + (chosenUnitFiniteSupport (K := K) x) x).mp + (mem_sUnitGroup_chosenUnitFiniteSupport (K := K) x) v hv + +/-- The finite-place Hilbert symbol is trivial when the exponent and both +global arguments are units at this place. -/ +theorem finitePlaceHilbertSymbol_eq_one_of_valuation_eq_one + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : Kˣ) (v : HeightOneSpectrum (𝓞 K)) + (hva : v.valuation K (a : K) = 1) + (hvb : v.valuation K (b : K) = 1) + (hvn : v.valuation K ((n : ℕ) : K) = 1) : + finitePlaceHilbertSymbol K n hnK hmu v a b = 1 := by + let L := chosenSimpleKummerExtension K n hnK b + let : FiniteDimensional K L := + chosenSimpleKummerExtension_finiteDimensional K n hnK b + let : IsAbelianGalois K L := + chosenSimpleKummerExtension_isAbelianGalois K n hnK hmu b + let : NumberField L := NumberField.of_module_finite K L + have haIntegral : + IdeleGroup.finiteComponent v (IdeleGroup.principalIdele K a) ∈ + (v.adicCompletionIntegers K).units := by + rw [HeightOneSpectrum.adicCompletionIntegers.mem_units_iff_valued_eq_one] + rw [IdeleGroup.finiteComponent_principalIdele, + HeightOneSpectrum.valuedAdicCompletion_eq_valuation'] + exact hva + have hUnramified : + Algebra.IsUnramifiedAt (𝓞 K) + (finitePlaceExtensionCentre + (K := K) (L := L) v + (chosenFinitePlaceExtension (L := L) v)).asIdeal := by + apply + chosenSimpleKummerExtension_isUnramifiedAt_at_all_finitePlacesAbove_of_valuation_eq_one + (K := K) n hnK hmu b v hvb hvn + exact + finitePlaceBelow_finitePlaceExtensionCentre + (K := K) (L := L) v + (chosenFinitePlaceExtension (L := L) v) + have hArtin : + chosenFinitePlaceArtinMonoidHom (K := K) (L := L) v + (IdeleGroup.finiteComponent v (IdeleGroup.principalIdele K a)) = 1 := + chosenFinitePlaceArtinMonoidHom_eq_one_of_integral_of_unramifiedAt + (K := K) (L := L) v (IdeleGroup.principalIdele K a) + haIntegral hUnramified + rw [← finitePlaceKummerRootCharacter_localGlobal K n hnK hmu v a b] + unfold finitePlaceKummerRootCharacter + unfold finitePlaceKummerRootCharacterOfExtension + have hcomponent : + (IdeleGroup.finiteComponent v (IdeleGroup.principalIdele K a) : + (v.adicCompletion K)ˣ) = + Units.map (algebraMap K (v.adicCompletion K)).toMonoidHom a := by + apply Units.ext + calc + ((IdeleGroup.finiteComponent v (IdeleGroup.principalIdele K a) : + (v.adicCompletion K)ˣ) : v.adicCompletion K) = + ((a : K) : v.adicCompletion K) := + IdeleGroup.finiteComponent_principalIdele a v + _ = algebraMap K (v.adicCompletion K) (a : K) := by + symm + have hmap := congrFun + (IsDedekindDomain.HeightOneSpectrum.algebraMap_adicCompletion + (R := 𝓞 K) (S := K) (K := K) (v := v)) (a : K) + simpa using hmap + rw [hcomponent] at hArtin + unfold chosenFinitePlaceArtinMonoidHom at hArtin + dsimp only at hArtin ⊢ + rw [hArtin, map_one, map_one] + +/-- Outside the concrete bad-place set, the finite-place Hilbert factor is +trivial. -/ +theorem finitePlaceHilbertSymbol_eq_one_of_not_mem_powerResidueBadFinitePlaces + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : Kˣ) (v : HeightOneSpectrum (𝓞 K)) + (hv : v ∉ powerResidueBadFinitePlaces K n a b) : + finitePlaceHilbertSymbol K n hnK hmu v a b = 1 := by + have hvaSupport : v ∉ chosenUnitFiniteSupport (K := K) a := by + intro hva + apply hv + exact Finset.mem_union_left _ (Finset.mem_union_left _ hva) + have hvbSupport : v ∉ chosenUnitFiniteSupport (K := K) b := by + intro hvb + apply hv + exact Finset.mem_union_left _ (Finset.mem_union_right _ hvb) + have hvnSupport : + v ∉ powerResidueExponentFinitePlaces K n := by + intro hvn + apply hv + exact Finset.mem_union_right _ hvn + have hva : v.valuation K (a : K) = 1 := + valuation_eq_one_of_not_mem_chosenUnitFiniteSupport K a v hvaSupport + have hvb : v.valuation K (b : K) = 1 := + valuation_eq_one_of_not_mem_chosenUnitFiniteSupport K b v hvbSupport + have hvn : v.valuation K ((n : ℕ) : K) = 1 := by + have hvnNotDvd : + ¬ v.asIdeal ∣ powerResidueExponentIdeal K n := by + simpa only [mem_powerResidueExponentFinitePlaces_iff] using hvnSupport + have hvnNotMem : ((n : ℕ) : 𝓞 K) ∉ v.asIdeal := by + intro hvnMem + apply hvnNotDvd + rw [powerResidueExponentIdeal, Ideal.dvd_span_singleton] + exact hvnMem + simpa only [map_natCast] using + (v.valuation_eq_one_iff_notMem (K := K) + (r := ((n : ℕ) : 𝓞 K))).2 hvnNotMem + exact finitePlaceHilbertSymbol_eq_one_of_valuation_eq_one + K n hnK hmu a b v hva hvb hvn + +/-- The multiplicative support of the finite-place Hilbert factors is +contained in the explicit power-residue bad-place set. -/ +theorem finitePlaceHilbertSymbol_mulSupport_subset_powerResidueBadFinitePlaces + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : Kˣ) : + Function.mulSupport + (fun v : HeightOneSpectrum (𝓞 K) => + finitePlaceHilbertSymbol K n hnK hmu v a b) ⊆ + (powerResidueBadFinitePlaces K n a b : + Set (HeightOneSpectrum (𝓞 K))) := by + intro v hv + change finitePlaceHilbertSymbol K n hnK hmu v a b ≠ 1 at hv + change v ∈ powerResidueBadFinitePlaces K n a b + by_contra hvBad + exact hv + (finitePlaceHilbertSymbol_eq_one_of_not_mem_powerResidueBadFinitePlaces + K n hnK hmu a b v hvBad) + +/-- The finite-place Hilbert `finprod` is the ordinary product over the +explicit bad-place set. -/ +theorem finitePlaceHilbertSymbol_finprod_eq_prod_powerResidueBadFinitePlaces + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : Kˣ) : + (∏ᶠ v : HeightOneSpectrum (𝓞 K), + finitePlaceHilbertSymbol K n hnK hmu v a b) = + ∏ v ∈ powerResidueBadFinitePlaces K n a b, + finitePlaceHilbertSymbol K n hnK hmu v a b := by + rw [finprod_eq_prod_of_mulSupport_subset _ + (finitePlaceHilbertSymbol_mulSupport_subset_powerResidueBadFinitePlaces + K n hnK hmu a b)] + +/-- Finite-set form of the Hilbert product formula: the product over all +explicitly bad finite places is the inverse of the infinite-place product. -/ +theorem powerResidueBadFinitePlaces_product_eq_infinitePlaceProduct_inv + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : Kˣ) : + (∏ v ∈ powerResidueBadFinitePlaces K n a b, + finitePlaceHilbertSymbol K n hnK hmu v a b) = + (∏ v : InfinitePlace K, + infinitePlaceHilbertSymbol K n v a b)⁻¹ := by + have hproduct := + hilbertSymbol_allPlaces_product_eq_one K n hnK hmu a b + rw [ + finitePlaceHilbertSymbol_finprod_eq_prod_powerResidueBadFinitePlaces] + at hproduct + exact (eq_inv_iff_mul_eq_one).2 (by + simpa only [mul_comm] using hproduct) + +/-- The product of the finite-place Hilbert factors away from primes dividing +the exponent. C1 identifies this term with the quotient of the two ideal +power-residue symbols; the remaining factors are exactly the correction. -/ +noncomputable def powerResidueAwayFromExponentFiniteProduct + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : Kˣ) : + nthRootsSubgroup K (n : ℕ) := + ∏ᶠ v : HeightOneSpectrum (𝓞 K), + if v ∈ powerResidueExponentFinitePlaces K n then + 1 + else + finitePlaceHilbertSymbol K n hnK hmu v a b + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityGlobal.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityGlobal.lean new file mode 100644 index 0000000..8a60735 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityGlobal.lean @@ -0,0 +1,416 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.PowerResidueReciprocityCorrection +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalHilbertSymbol.FinitePlaceCharacterComparison +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.FiniteIdeleArtin +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.HilbertProductFormula +import ClassFieldTheory.AlgebraicNumberTheory.PowerResidueSymbols.Ideal +import ClassFieldTheory.AlgebraicNumberTheory.Idele.NormApproximation.FinitePlaces +import Mathlib.NumberTheory.Padics.HeightOneSpectrum +import ValuedFieldTheory.LocalField.DiscreteValuationField.PadicField +import ClassFieldTheory.AlgebraicNumberTheory.QuadraticReciprocity +import ClassFieldTheory.AlgebraicNumberTheory.RayClass.Rational +import ClassFieldTheory.LocalClassFieldTheory.Kummer.PowerResidueTameFormula +import ValuedFieldTheory.LocalField.NonarchimedeanLocalField.IdealQuotients +import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.IdealToCompletion +import ValuedFieldTheory.Valuation.Completion.ExtensionInvariants +import ClassFieldTheory.KummerTheory.Concrete.SimpleExtensionLocalBehavior +import ClassFieldTheory.KummerTheory.Concrete.SUnitPreparation.FiniteRadicalSupport +import ClassFieldTheory.LocalClassFieldTheory.Finite.CyclotomicNorm.PrincipalUnits + + +set_option autoImplicit false + + +open scoped BigOperators Classical NumberField NumberTheorySymbols ValuativeRel WithZero +open NumberField IsDedekindDomain + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open KummerTheory +open AlgebraicNumberTheory.PowerResidueSymbols +open LocalClassFieldTheory.Kummer +open LocalFieldTheory +open LocalFieldTheory.IsNonarchimedeanLocalField + +variable (K : Type) [Field K] [NumberField K] +/-- The complete tame finite-place product for two nonzero algebraic +integers is the quotient of the two ideal power-residue symbols. -/ +theorem powerResidueAwayFromExponentFiniteProduct_integral_eq_idealSymbol_div + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : 𝓞 K) (ha0 : a ≠ 0) (hb0 : b ≠ 0) + (hcoprimeA : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {a} → + (Ideal.absNorm P.asIdeal).Coprime (n : ℕ)) + (hcoprimeB : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {b} → + (Ideal.absNorm P.asIdeal).Coprime (n : ℕ)) + (haB : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {b} → a ∉ P.asIdeal) + (hbA : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {a} → b ∉ P.asIdeal) + (hAwayA : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {a} → + P ∉ powerResidueExponentFinitePlaces K n) + (hAwayB : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {b} → + P ∉ powerResidueExponentFinitePlaces K n) : + powerResidueAwayFromExponentFiniteProduct K n hnK hmu + (nonzeroIntegralFieldUnit K a ha0) + (nonzeroIntegralFieldUnit K b hb0) = + integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K (Ideal.span {b}) + (ideal_span_singleton_ne_zero K hb0) + n hmu a hcoprimeB haB) * + (integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K (Ideal.span {a}) + (ideal_span_singleton_ne_zero K ha0) + n hmu b hcoprimeA hbA))⁻¹ := by + let IA : Ideal (𝓞 K) := Ideal.span {a} + let IB : Ideal (𝓞 K) := Ideal.span {b} + have hIA : IA ≠ 0 := by + dsimp only [IA] + exact ideal_span_singleton_ne_zero K ha0 + have hIB : IB ≠ 0 := by + dsimp only [IB] + exact ideal_span_singleton_ne_zero K hb0 + let fB : HeightOneSpectrum (𝓞 K) → nthRootsSubgroup K (n : ℕ) := + fun P => integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueFactor K IB n hmu a hcoprimeB haB P) + let fA : HeightOneSpectrum (𝓞 K) → nthRootsSubgroup K (n : ℕ) := + fun P => integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueFactor K IA n hmu b hcoprimeA hbA P) + have hfB : Function.HasFiniteMulSupport fB := + (idealPowerResidueFactor_hasFiniteMulSupport + K IB hIB n hmu a hcoprimeB haB).subset (by + intro P hP + change fB P ≠ 1 at hP + change idealPowerResidueFactor K IB n hmu a hcoprimeB haB P ≠ 1 + intro hOne + exact hP (by simp only [fB, hOne, map_one])) + have hfA : Function.HasFiniteMulSupport fA := + (idealPowerResidueFactor_hasFiniteMulSupport + K IA hIA n hmu b hcoprimeA hbA).subset (by + intro P hP + change fA P ≠ 1 at hP + change idealPowerResidueFactor K IA n hmu b hcoprimeA hbA P ≠ 1 + intro hOne + exact hP (by simp only [fA, hOne, map_one])) + have hfAInv : + Function.HasFiniteMulSupport (fun P => (fA P)⁻¹) := + hfA.subset (by + intro P hP + change (fA P)⁻¹ ≠ 1 at hP + change fA P ≠ 1 + intro hOne + exact hP (by rw [hOne, inv_one])) + let invHom : nthRootsSubgroup K (n : ℕ) →* + nthRootsSubgroup K (n : ℕ) := invMonoidHom + have hfinprodInv : + (∏ᶠ P : HeightOneSpectrum (𝓞 K), (fA P)⁻¹) = + (∏ᶠ P : HeightOneSpectrum (𝓞 K), fA P)⁻¹ := by + change (∏ᶠ P : HeightOneSpectrum (𝓞 K), invHom (fA P)) = + invHom (∏ᶠ P : HeightOneSpectrum (𝓞 K), fA P) + exact (MonoidHom.map_finprod invHom hfA).symm + calc + powerResidueAwayFromExponentFiniteProduct K n hnK hmu + (nonzeroIntegralFieldUnit K a ha0) + (nonzeroIntegralFieldUnit K b hb0) = + ∏ᶠ P : HeightOneSpectrum (𝓞 K), fB P * (fA P)⁻¹ := by + apply finprod_congr + intro P + simpa only [fA, fB, IA, IB] using + powerResidueAwayFromExponentFiniteFactor_integral_eq_idealFactors + K n hnK hmu a b ha0 hb0 hcoprimeA hcoprimeB haB hbA + hAwayA hAwayB P + _ = (∏ᶠ P : HeightOneSpectrum (𝓞 K), fB P) * + (∏ᶠ P : HeightOneSpectrum (𝓞 K), (fA P)⁻¹) := + finprod_mul_distrib hfB hfAInv + _ = (∏ᶠ P : HeightOneSpectrum (𝓞 K), fB P) * + (∏ᶠ P : HeightOneSpectrum (𝓞 K), fA P)⁻¹ := by + rw [hfinprodInv] + _ = integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K IB hIB n hmu a hcoprimeB haB) * + (integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K IA hIA n hmu b hcoprimeA hbA))⁻¹ := by + rw [idealPowerResidueSymbol_eq_finprod, + idealPowerResidueSymbol_eq_finprod] + rw [MonoidHom.map_finprod + (integralRootsOfUnityToNthRoots K (n : ℕ)) + (idealPowerResidueFactor_hasFiniteMulSupport + K IB hIB n hmu a hcoprimeB haB), + MonoidHom.map_finprod + (integralRootsOfUnityToNthRoots K (n : ℕ)) + (idealPowerResidueFactor_hasFiniteMulSupport + K IA hIA n hmu b hcoprimeA hbA)] + _ = integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K (Ideal.span {b}) + (ideal_span_singleton_ne_zero K hb0) + n hmu a hcoprimeB haB) * + (integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K (Ideal.span {a}) + (ideal_span_singleton_ne_zero K ha0) + n hmu b hcoprimeA hbA))⁻¹ := by + rfl + +/-- Split the full finite-place product into exponent-prime factors and the +product away from the exponent. -/ +theorem finitePlaceHilbertSymbol_finprod_eq_exponent_product_mul_away + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : Kˣ) : + (∏ᶠ v : HeightOneSpectrum (𝓞 K), + finitePlaceHilbertSymbol K n hnK hmu v a b) = + (∏ v ∈ powerResidueExponentFinitePlaces K n, + finitePlaceHilbertSymbol K n hnK hmu v a b) * + powerResidueAwayFromExponentFiniteProduct K n hnK hmu a b := by + let exponentFactor : HeightOneSpectrum (𝓞 K) → + nthRootsSubgroup K (n : ℕ) := fun v => + if v ∈ powerResidueExponentFinitePlaces K n then + finitePlaceHilbertSymbol K n hnK hmu v a b + else + 1 + let awayFactor : HeightOneSpectrum (𝓞 K) → + nthRootsSubgroup K (n : ℕ) := fun v => + if v ∈ powerResidueExponentFinitePlaces K n then + 1 + else + finitePlaceHilbertSymbol K n hnK hmu v a b + have hExponentSupport : + Function.mulSupport exponentFactor ⊆ + (powerResidueExponentFinitePlaces K n : + Set (HeightOneSpectrum (𝓞 K))) := by + intro v hv + change exponentFactor v ≠ 1 at hv + change v ∈ powerResidueExponentFinitePlaces K n + by_contra hvExponent + exact hv (by simp only [exponentFactor, ite_eq_right hvExponent]) + have hExponentFinite : Function.HasFiniteMulSupport exponentFactor := by + rw [Function.HasFiniteMulSupport] + exact + (powerResidueExponentFinitePlaces K n).finite_toSet.subset + hExponentSupport + have hAwayFinite : Function.HasFiniteMulSupport awayFactor := by + rw [Function.HasFiniteMulSupport] + exact + (finitePlaceHilbertSymbol_hasFiniteMulSupport K n hnK hmu a b).subset + (by + intro v hv + change awayFactor v ≠ 1 at hv + change finitePlaceHilbertSymbol K n hnK hmu v a b ≠ 1 + by_contra hvOne + exact hv (by simp only [awayFactor, hvOne, ite_self])) + have hPointwise : + (fun v : HeightOneSpectrum (𝓞 K) => + finitePlaceHilbertSymbol K n hnK hmu v a b) = + fun v => exponentFactor v * awayFactor v := by + funext v + by_cases hv : v ∈ powerResidueExponentFinitePlaces K n + · simp only [exponentFactor, awayFactor, ite_eq_left hv, mul_one] + · simp only [exponentFactor, awayFactor, ite_eq_right hv, one_mul] + have hExponentProduct : + (∏ᶠ v : HeightOneSpectrum (𝓞 K), exponentFactor v) = + ∏ v ∈ powerResidueExponentFinitePlaces K n, + finitePlaceHilbertSymbol K n hnK hmu v a b := by + rw [finprod_eq_prod_of_mulSupport_subset exponentFactor hExponentSupport] + apply Finset.prod_congr rfl + intro v hv + simp only [exponentFactor, ite_eq_left hv] + calc + (∏ᶠ v : HeightOneSpectrum (𝓞 K), + finitePlaceHilbertSymbol K n hnK hmu v a b) = + ∏ᶠ v : HeightOneSpectrum (𝓞 K), + exponentFactor v * awayFactor v := by + rw [hPointwise] + _ = (∏ᶠ v : HeightOneSpectrum (𝓞 K), exponentFactor v) * + (∏ᶠ v : HeightOneSpectrum (𝓞 K), awayFactor v) := + finprod_mul_distrib hExponentFinite hAwayFinite + _ = (∏ v ∈ powerResidueExponentFinitePlaces K n, + finitePlaceHilbertSymbol K n hnK hmu v a b) * + (∏ᶠ v : HeightOneSpectrum (𝓞 K), awayFactor v) := by + rw [hExponentProduct] + _ = (∏ v ∈ powerResidueExponentFinitePlaces K n, + finitePlaceHilbertSymbol K n hnK hmu v a b) * + powerResidueAwayFromExponentFiniteProduct K n hnK hmu a b := by + rfl + +/-- General Hilbert-product core of power-residue reciprocity. The complete +finite product away from the exponent is the inverse of the explicit product +of all infinite-place factors and all exponent-prime factors. -/ +theorem powerResidueAwayFromExponentFiniteProduct_eq_badPlaceCorrection_inv + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : Kˣ) : + powerResidueAwayFromExponentFiniteProduct K n hnK hmu a b = + (powerResidueBadPlaceCorrection K n hnK hmu a b)⁻¹ := by + have hproduct := + hilbertSymbol_allPlaces_product_eq_one K n hnK hmu a b + rw [finitePlaceHilbertSymbol_finprod_eq_exponent_product_mul_away] + at hproduct + exact (eq_inv_iff_mul_eq_one).2 (by + unfold powerResidueBadPlaceCorrection + simpa only [mul_assoc, mul_comm, mul_left_comm] using hproduct) + +/-- General ideal power-residue reciprocity with the explicit product of +infinite and exponent-prime Hilbert factors as correction. -/ +theorem idealPowerResidueSymbol_reciprocity_with_bad_place_correction + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (a b : 𝓞 K) (ha0 : a ≠ 0) (hb0 : b ≠ 0) + (hcoprimeA : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {a} → + (Ideal.absNorm P.asIdeal).Coprime (n : ℕ)) + (hcoprimeB : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {b} → + (Ideal.absNorm P.asIdeal).Coprime (n : ℕ)) + (haB : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {b} → a ∉ P.asIdeal) + (hbA : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {a} → b ∉ P.asIdeal) + (hAwayA : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {a} → + P ∉ powerResidueExponentFinitePlaces K n) + (hAwayB : + ∀ P : HeightOneSpectrum (𝓞 K), + P.asIdeal ∣ Ideal.span {b} → + P ∉ powerResidueExponentFinitePlaces K n) : + integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K (Ideal.span {b}) + (ideal_span_singleton_ne_zero K hb0) + n hmu a hcoprimeB haB) = + (powerResidueBadPlaceCorrection K n hnK hmu + (nonzeroIntegralFieldUnit K a ha0) + (nonzeroIntegralFieldUnit K b hb0))⁻¹ * + integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K (Ideal.span {a}) + (ideal_span_singleton_ne_zero K ha0) + n hmu b hcoprimeA hbA) := by + let symbolAB := integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K (Ideal.span {b}) + (ideal_span_singleton_ne_zero K hb0) + n hmu a hcoprimeB haB) + let symbolBA := integralRootsOfUnityToNthRoots K (n : ℕ) + (idealPowerResidueSymbol K (Ideal.span {a}) + (ideal_span_singleton_ne_zero K ha0) + n hmu b hcoprimeA hbA) + let correction := powerResidueBadPlaceCorrection K n hnK hmu + (nonzeroIntegralFieldUnit K a ha0) + (nonzeroIntegralFieldUnit K b hb0) + have hIdeal := + powerResidueAwayFromExponentFiniteProduct_integral_eq_idealSymbol_div + K n hnK hmu a b ha0 hb0 hcoprimeA hcoprimeB haB hbA + hAwayA hAwayB + have hCorrection := + powerResidueAwayFromExponentFiniteProduct_eq_badPlaceCorrection_inv + K n hnK hmu + (nonzeroIntegralFieldUnit K a ha0) + (nonzeroIntegralFieldUnit K b hb0) + have hQuotient : symbolAB * symbolBA⁻¹ = correction⁻¹ := by + rw [← hIdeal, hCorrection] + change symbolAB = correction⁻¹ * symbolBA + calc + symbolAB = (symbolAB * symbolBA⁻¹) * symbolBA := by + simp only [mul_assoc, inv_mul_cancel, mul_one] + _ = correction⁻¹ * symbolBA := by rw [hQuotient] + +/-! ## Quadratic specialization over the rational field -/ + +open AlgebraicNumberTheory.PowerResidueSymbols + +local instance rationalPrimeFact (p : Nat.Primes) : Fact p.1.Prime := + ⟨p.2⟩ + +/-- The rational field contains the primitive square root of unity `-1`. +This is the canonical source of the primitive-root input in the quadratic +specialization; no root is chosen downstream. -/ +theorem rationalQuadraticPrimitiveRoots_nonempty : + (primitiveRoots 2 ℚ).Nonempty := by + refine ⟨-1, (mem_primitiveRoots (by decide)).2 ?_⟩ + exact IsPrimitiveRoot.neg_one 0 (by decide) + +/-- The residue field at the rational prime over `p` is canonically `ZMod p`. +The construction first transports the prime ideal through +`Rat.ringOfIntegersEquiv` and then uses the standard integer quotient. -/ +noncomputable def rationalPrimeResidueEquivZMod + (p : Nat.Primes) : + (𝓞 ℚ ⧸ (RayClass.rationalPrime p).asIdeal) ≃+* ZMod p.1 := by + have hIntEquiv : + Rat.IsIntegralClosure.intEquiv (𝓞 ℚ) = + Rat.ringOfIntegersEquiv := by + ext x + exact Rat.IsIntegralClosure.intEquiv_apply_eq_ringOfIntegersEquiv x + have hmap : + Ideal.span {(p.1 : ℤ)} = + (RayClass.rationalPrime p).asIdeal.map + Rat.ringOfIntegersEquiv := by + simpa only [RayClass.natGenerator_rationalPrime, hIntEquiv] using + (Rat.HeightOneSpectrum.span_natGenerator + (RayClass.rationalPrime p)) + exact + (Ideal.quotientEquiv + (RayClass.rationalPrime p).asIdeal + (Ideal.span {(p.1 : ℤ)}) + Rat.ringOfIntegersEquiv hmap).trans + (Int.quotientSpanNatEquivZMod p.1) + +/-- The rational residue-field equivalence sends an integral residue class to +the corresponding integer class modulo `p`. -/ +@[simp] +theorem rationalPrimeResidueEquivZMod_mk + (p : Nat.Primes) (a : 𝓞 ℚ) : + rationalPrimeResidueEquivZMod p + (Ideal.Quotient.mk (RayClass.rationalPrime p).asIdeal a) = + (Rat.ringOfIntegersEquiv a : ZMod p.1) := by + rw [rationalPrimeResidueEquivZMod, RingEquiv.trans_apply] + have hmk + (hIJ : + Ideal.span {(p.1 : ℤ)} = + (RayClass.rationalPrime p).asIdeal.map + Rat.ringOfIntegersEquiv) : + Ideal.quotientEquiv + (RayClass.rationalPrime p).asIdeal + (Ideal.span {(p.1 : ℤ)}) + Rat.ringOfIntegersEquiv hIJ + (Ideal.Quotient.mk (RayClass.rationalPrime p).asIdeal a) = + Ideal.Quotient.mk (Ideal.span {(p.1 : ℤ)}) + (Rat.ringOfIntegersEquiv a) := + Ideal.quotientEquiv_mk + (RayClass.rationalPrime p).asIdeal + (Ideal.span {(p.1 : ℤ)}) + Rat.ringOfIntegersEquiv hIJ a + have hquot : + ((Int.quotientSpanNatEquivZMod p.1 : + (ℤ ⧸ Ideal.span {(p.1 : ℤ)}) →+* ZMod p.1).comp + (Ideal.Quotient.mk (Ideal.span {(p.1 : ℤ)}))) = + Int.castRingHom (ZMod p.1) := + Int.quotientSpanNatEquivZMod_comp_Quotient_mk p.1 + calc + _ = Int.quotientSpanNatEquivZMod p.1 + (Ideal.Quotient.mk (Ideal.span {(p.1 : ℤ)}) + (Rat.ringOfIntegersEquiv a)) := + congrArg (Int.quotientSpanNatEquivZMod p.1) (hmk _) + _ = _ := congrArg + (fun f : ℤ →+* ZMod p.1 => f (Rat.ringOfIntegersEquiv a)) hquot + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityLocalSymbols.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityLocalSymbols.lean new file mode 100644 index 0000000..92d5938 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/PowerResidueReciprocityLocalSymbols.lean @@ -0,0 +1,557 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.PowerResidueReciprocityBase +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.GlobalHilbertSymbol.FinitePlaceCharacterComparison +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.FiniteIdeleArtin +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.HilbertProductFormula +import ClassFieldTheory.AlgebraicNumberTheory.PowerResidueSymbols.Ideal +import ClassFieldTheory.AlgebraicNumberTheory.Idele.NormApproximation.FinitePlaces +import Mathlib.NumberTheory.Padics.HeightOneSpectrum +import ValuedFieldTheory.LocalField.DiscreteValuationField.PadicField +import ClassFieldTheory.AlgebraicNumberTheory.QuadraticReciprocity +import ClassFieldTheory.AlgebraicNumberTheory.RayClass.Rational +import ClassFieldTheory.LocalClassFieldTheory.Kummer.PowerResidueTameFormula +import ValuedFieldTheory.LocalField.NonarchimedeanLocalField.IdealQuotients +import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.IdealToCompletion +import ValuedFieldTheory.Valuation.Completion.ExtensionInvariants +import ClassFieldTheory.KummerTheory.Concrete.SimpleExtensionLocalBehavior +import ClassFieldTheory.KummerTheory.Concrete.SUnitPreparation.FiniteRadicalSupport +import ClassFieldTheory.LocalClassFieldTheory.Finite.CyclotomicNorm.PrincipalUnits + + +set_option autoImplicit false + + +open scoped BigOperators Classical NumberField NumberTheorySymbols ValuativeRel WithZero +open NumberField IsDedekindDomain + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +open KummerTheory +open AlgebraicNumberTheory.PowerResidueSymbols +open LocalClassFieldTheory.Kummer +open LocalFieldTheory +open LocalFieldTheory.IsNonarchimedeanLocalField + +variable (K : Type) [Field K] [NumberField K] +/-- The integral principal ideal generated by the exponent. -/ +def powerResidueExponentIdeal (n : ℕ+) : Ideal (𝓞 K) := + Ideal.span {((n : ℕ) : 𝓞 K)} + +/-- The exponent ideal is nonzero in a number field. -/ +theorem powerResidueExponentIdeal_ne_zero (n : ℕ+) : + powerResidueExponentIdeal K n ≠ 0 := by + change Ideal.span {((n : ℕ) : 𝓞 K)} ≠ ⊥ + exact Ideal.span_singleton_eq_bot.not.mpr + (Nat.cast_ne_zero.mpr n.ne_zero) + +omit [NumberField K] in +theorem ideal_span_singleton_ne_zero + {x : 𝓞 K} (hx : x ≠ 0) : Ideal.span {x} ≠ 0 := + Submodule.span_singleton_eq_bot.mp.mt hx + +/-- The finite places dividing the exponent. These, together with all +infinite places, are precisely the correction places in the reciprocity +formula once the two principal denominator supports are removed. -/ +noncomputable def powerResidueExponentFinitePlaces + (n : ℕ+) : Finset (HeightOneSpectrum (𝓞 K)) := + (Ideal.finite_factors + (powerResidueExponentIdeal_ne_zero K n)).toFinset + +/-- Membership in the exponent-place support is divisibility by the exponent +ideal. -/ +@[simp] +theorem mem_powerResidueExponentFinitePlaces_iff + (n : ℕ+) (v : HeightOneSpectrum (𝓞 K)) : + v ∈ powerResidueExponentFinitePlaces K n ↔ + v.asIdeal ∣ powerResidueExponentIdeal K n := + Set.Finite.mem_toFinset + (Ideal.finite_factors + (powerResidueExponentIdeal_ne_zero K n)) + +/-- At a finite place not dividing the exponent, the exponent is a unit in +the canonical completion. -/ +theorem finitePlace_natCast_valuation_eq_one_of_not_mem_exponent + (n : ℕ+) (v : HeightOneSpectrum (𝓞 K)) + (hv : v ∉ powerResidueExponentFinitePlaces K n) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + ValuativeRel.valuation C ((n : ℕ) : C) = 1 := by + dsimp only + let : IsUltrametricDist + (HeightOneSpectrum.adicAbv K v).Completion := + finitePlaceArtinCompletionIsUltrametricDist + (HeightOneSpectrum.adicAbv K v) + (HeightOneSpectrum.isNonarchimedean_adicAbv K v) + have hvNotDvd : + ¬ v.asIdeal ∣ powerResidueExponentIdeal K n := by + simpa only [mem_powerResidueExponentFinitePlaces_iff] using hv + have hvNotMem : ((n : ℕ) : 𝓞 K) ∉ v.asIdeal := by + intro hvMem + apply hvNotDvd + rw [powerResidueExponentIdeal, Ideal.dvd_span_singleton] + exact hvMem + let C := (HeightOneSpectrum.adicAbv K v).Completion + have hNorm : ‖((n : ℕ) : C)‖ = 1 := by + calc + ‖((n : ℕ) : C)‖ = + ‖algebraMap K C (((n : ℕ) : K))‖ := by rw [map_natCast] + _ = HeightOneSpectrum.adicAbv K v (((n : ℕ) : K)) := + AbsoluteValue.completionAbsoluteValue_coe + (HeightOneSpectrum.adicAbv K v) (((n : ℕ) : K)) + _ = ‖NumberField.FinitePlace.embedding v (((n : ℕ) : K))‖ := + (NumberField.FinitePlace.norm_embedding v (((n : ℕ) : K))).symm + _ = 1 := + (NumberField.FinitePlace.norm_eq_one_iff_notMem K v + (((n : ℕ) : 𝓞 K))).2 hvNotMem + let vCNorm := NormedField.valuation (K := C) + let : vCNorm.Compatible := Valuation.Compatible.ofValuation vCNorm + have hnCNorm : vCNorm ((n : ℕ) : C) = 1 := by + change ‖((n : ℕ) : C)‖₊ = 1 + exact NNReal.eq (by simpa using hNorm) + exact + (ValuativeRel.isEquiv vCNorm (ValuativeRel.valuation C)) + |>.eq_one_iff_eq_one.mp hnCNorm + +private noncomputable def finitePlaceLocalTamePowerResidueSymbolValue + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hv : v ∉ powerResidueExponentFinitePlaces K n) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : + nthRootsSubgroup (HeightOneSpectrum.adicAbv K v).Completion (n : ℕ) := by + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + exact localTamePowerResidueSymbol C n + (finitePlace_natCast_valuation_eq_one_of_not_mem_exponent K n v hv) + (finitePlaceHilbert_primitiveRoots_nonempty K n hmu v) + (finitePlaceIntegralCompletionUnit K v a ha) + +private noncomputable def finitePlaceLocalTamePowerResidueSymbolFieldValue + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hv : v ∉ powerResidueExponentFinitePlaces K n) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : + (HeightOneSpectrum.adicAbv K v).Completion := + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + ((localTamePowerResidueSymbol C n + (finitePlace_natCast_valuation_eq_one_of_not_mem_exponent K n v hv) + (finitePlaceHilbert_primitiveRoots_nonempty K n hmu v) + (finitePlaceIntegralCompletionUnit K v a ha)).1 : C) + +private noncomputable def finitePlacePrimeIdealPowerResidueIntegralRoot + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : + rootsOfUnity (n : ℕ) (𝓞 K) := + AlgebraicNumberTheory.PowerResidueSymbols.primeIdealPowerResidueSymbol + K v n hmu hcoprime a ha + +private noncomputable def finitePlacePrimeIdealPowerResidueGlobalRoot + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : nthRootsSubgroup K (n : ℕ) := + integralRootsOfUnityToNthRoots K (n : ℕ) + (finitePlacePrimeIdealPowerResidueIntegralRoot K v n hmu hcoprime a ha) + +private noncomputable def finitePlacePrimeIdealPowerResidueFactorValue + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : + nthRootsSubgroup (HeightOneSpectrum.adicAbv K v).Completion (n : ℕ) := + nthRootsSubgroupMap K (HeightOneSpectrum.adicAbv K v).Completion (n : ℕ) + (finitePlacePrimeIdealPowerResidueGlobalRoot K v n hmu hcoprime a ha) + +private noncomputable def finitePlacePrimeIdealPowerResidueFactorFieldValue + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : + (HeightOneSpectrum.adicAbv K v).Completion := + (((nthRootsSubgroupMap K + (HeightOneSpectrum.adicAbv K v).Completion (n : ℕ)) + (finitePlacePrimeIdealPowerResidueGlobalRoot K v n hmu hcoprime a ha)).1 : + (HeightOneSpectrum.adicAbv K v).Completion) + +private noncomputable def finitePlaceLocalTamePowerResidueSymbolResidueValue + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hv : v ∉ powerResidueExponentFinitePlaces K n) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + 𝓀[C] := by + dsimp only + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + letI : Fintype 𝓀[C] := Fintype.ofFinite _ + have hnLocal : (n : ℕ) ∣ Fintype.card 𝓀[C] - 1 := by + rw [← Nat.card_eq_fintype_card] + exact dvd_residueCard_sub_one_of_primitiveRoots C n + (finitePlace_natCast_valuation_eq_one_of_not_mem_exponent K n v hv) + (finitePlaceHilbert_primitiveRoots_nonempty K n hmu v) + exact + (((AlgebraicNumberTheory.PowerResidueSymbols.finiteFieldPowerResidueSymbol + 𝓀[C] n hnLocal + (integerUnitsToResidueUnits C + (finitePlaceIntegralCompletionUnit K v a ha)) : + rootsOfUnity (n : ℕ) 𝓀[C]).1 : 𝓀[C]ˣ) : 𝓀[C]) + +private noncomputable def finitePlacePrimeIdealPowerResidueFactorResidueValue + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + 𝓀[C] := by + dsimp only + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + exact + (((localNthRootsReduction C n + (nthRootsSubgroupMap K C (n : ℕ) + (integralRootsOfUnityToNthRoots K (n : ℕ) + (AlgebraicNumberTheory.PowerResidueSymbols.primeIdealPowerResidueSymbol + K v n hmu hcoprime a ha)))).1 : 𝓀[C]ˣ) : 𝓀[C]) + +/-- The tame symbol in a finite-place completion is the image of the +prime-ideal power-residue symbol. All comparisons are canonical: the only +place hypothesis says that the place does not divide the exponent. -/ +private theorem finitePlaceLocalTamePowerResidueSymbol_residueValue_eq + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (hv : v ∉ powerResidueExponentFinitePlaces K n) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : + finitePlaceLocalTamePowerResidueSymbolResidueValue K v n hmu hv a ha = + finitePlacePrimeIdealPowerResidueFactorResidueValue + K v n hmu hcoprime a ha := by + unfold finitePlaceLocalTamePowerResidueSymbolResidueValue + unfold finitePlacePrimeIdealPowerResidueFactorResidueValue + dsimp only + let C := (HeightOneSpectrum.adicAbv K v).Completion + let : ValuativeRel C := finitePlaceLocalArtinCompletionValuativeRel v + let : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + let : Field (𝓞 K ⧸ v.asIdeal) := Ideal.Quotient.field v.asIdeal + let : Fintype (𝓞 K ⧸ v.asIdeal) := Fintype.ofFinite _ + let : Fintype 𝓀[C] := Fintype.ofFinite _ + let hnC := finitePlace_natCast_valuation_eq_one_of_not_mem_exponent K n v hv + let hmuC := finitePlaceHilbert_primitiveRoots_nonempty K n hmu v + have hnPrime : + (n : ℕ) ∣ Fintype.card (𝓞 K ⧸ v.asIdeal) - 1 := by + rw [AlgebraicNumberTheory.PowerResidueSymbols.card_primeIdealResidueField K v] + exact + AlgebraicNumberTheory.PowerResidueSymbols.dvd_absNorm_sub_one_of_primitiveRoots + K v n hmu hcoprime + have hnLocal : (n : ℕ) ∣ Fintype.card 𝓀[C] - 1 := by + rw [← Nat.card_eq_fintype_card] + exact dvd_residueCard_sub_one_of_primitiveRoots C n hnC hmuC + rw [finitePlace_localNthRootsReduction_integralRoots] + rw [← AlgebraicNumberTheory.PowerResidueSymbols.rootsOfUnityReductionEquiv_apply + K v n hmu hcoprime, + AlgebraicNumberTheory.PowerResidueSymbols.rootsOfUnityReductionEquiv_primeIdealPowerResidueSymbol + K v n hmu hcoprime a ha] + rw [finitePlace_integerUnitsToResidueUnits_integralUnit] + exact congrArg (fun u : 𝓀[C]ˣ => (u : 𝓀[C])) + (finiteFieldPowerResidueSymbol_unitsMap_ringEquiv + (finitePlacePrimeResidueEquivLocalResidue K v) + n hnPrime hnLocal + (AlgebraicNumberTheory.PowerResidueSymbols.primeIdealResidueUnit + K v a ha)).symm + +private theorem finitePlaceLocalTamePowerResidueSymbolFieldValue_eq_primeIdealValue + (v : HeightOneSpectrum (𝓞 K)) (n : ℕ+) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (hv : v ∉ powerResidueExponentFinitePlaces K n) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) : + @Eq (HeightOneSpectrum.adicAbv K v).Completion + (finitePlaceLocalTamePowerResidueSymbolFieldValue K v n hmu hv a ha) + (finitePlacePrimeIdealPowerResidueFactorFieldValue + K v n hmu hcoprime a ha) := by + let C := (HeightOneSpectrum.adicAbv K v).Completion + let : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + let : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + let hnC := + finitePlace_natCast_valuation_eq_one_of_not_mem_exponent K n v hv + let hmuC := finitePlaceHilbert_primitiveRoots_nonempty K n hmu v + unfold finitePlaceLocalTamePowerResidueSymbolFieldValue + unfold finitePlacePrimeIdealPowerResidueFactorFieldValue + unfold finitePlacePrimeIdealPowerResidueGlobalRoot + unfold finitePlacePrimeIdealPowerResidueIntegralRoot + have hRoots : + localTamePowerResidueSymbol C n hnC hmuC + (finitePlaceIntegralCompletionUnit K v a ha) = + nthRootsSubgroupMap K C (n : ℕ) + (integralRootsOfUnityToNthRoots K (n : ℕ) + (AlgebraicNumberTheory.PowerResidueSymbols.primeIdealPowerResidueSymbol + K v n hmu hcoprime a ha)) := by + apply (localNthRootsReductionEquiv C n hnC hmuC).injective + rw [localNthRootsReductionEquiv_localTamePowerResidueSymbol] + apply Subtype.ext + apply Units.ext + have hResidue := finitePlaceLocalTamePowerResidueSymbol_residueValue_eq + K v n hmu hcoprime hv a ha + unfold finitePlaceLocalTamePowerResidueSymbolResidueValue at hResidue + unfold finitePlacePrimeIdealPowerResidueFactorResidueValue at hResidue + dsimp only at hResidue + exact hResidue + exact congrArg (fun q : nthRootsSubgroup C (n : ℕ) => (q.1 : C)) hRoots + +/-- The normalized additive valuation of a global field unit in the +canonical completion at a finite place. -/ +noncomputable def finitePlaceNormalizedValuation + (v : HeightOneSpectrum (𝓞 K)) (x : Kˣ) : ℤ := by + let C := (HeightOneSpectrum.adicAbv K v).Completion + letI : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + letI : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + exact valuationMap C + (Additive.ofMul (finitePlaceHilbert_completionUnit K v x)) + +/-- Away from the exponent, a finite-place Hilbert factor with integral-unit +first entry is the prime-ideal power-residue symbol raised to the negative +normalized valuation of the second entry. -/ +theorem finitePlaceHilbertSymbol_eq_primeIdealPowerResidueFactor_zpow + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (v : HeightOneSpectrum (𝓞 K)) + (hv : v ∉ powerResidueExponentFinitePlaces K n) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) (b : Kˣ) : + finitePlaceHilbertSymbol K n hnK hmu v + (primeAvoidingIntegralFieldUnit K v a ha) b = + integralRootsOfUnityToNthRoots K (n : ℕ) + (AlgebraicNumberTheory.PowerResidueSymbols.primeIdealPowerResidueSymbol + K v n hmu hcoprime a ha) ^ + (-finitePlaceNormalizedValuation K v b) := by + let C := (HeightOneSpectrum.adicAbv K v).Completion + let : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + let : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + let hnC := + finitePlace_natCast_valuation_eq_one_of_not_mem_exponent K n v hv + let hmuC := finitePlaceHilbert_primitiveRoots_nonempty K n hmu v + let bC := finitePlaceHilbert_completionUnit K v b + apply nthRootsSubgroupMap_injective K C (n : ℕ) + rw [finitePlaceHilbertSymbol_map_eq_localHilbertSymbol] + change + localHilbertSymbol C n + (finitePlaceHilbert_natCast_ne_zero K n hnK v) hmuC + (finitePlaceHilbert_completionUnit K v + (primeAvoidingIntegralFieldUnit K v a ha)) bC = + nthRootsSubgroupMap K C (n : ℕ) + (integralRootsOfUnityToNthRoots K (n : ℕ) + (AlgebraicNumberTheory.PowerResidueSymbols.primeIdealPowerResidueSymbol + K v n hmu hcoprime a ha) ^ + (-finitePlaceNormalizedValuation K v b)) + rw [finitePlaceHilbert_completionUnit_primeAvoidingIntegralFieldUnit] + rw [localHilbertSymbol_tame_formula C n hnC hmuC] + change + finitePlaceLocalTamePowerResidueSymbolValue K v n hmu hv a ha ^ + (-finitePlaceNormalizedValuation K v b) = _ + have hBase : + finitePlaceLocalTamePowerResidueSymbolValue K v n hmu hv a ha = + finitePlacePrimeIdealPowerResidueFactorValue + K v n hmu hcoprime a ha := by + apply Subtype.ext + apply Units.ext + simpa only [finitePlaceLocalTamePowerResidueSymbolValue, + finitePlacePrimeIdealPowerResidueFactorValue, + finitePlaceLocalTamePowerResidueSymbolFieldValue, + finitePlacePrimeIdealPowerResidueFactorFieldValue] using + finitePlaceLocalTamePowerResidueSymbolFieldValue_eq_primeIdealValue + K v n hmu hcoprime hv a ha + rw [hBase] + unfold finitePlacePrimeIdealPowerResidueFactorValue + unfold finitePlacePrimeIdealPowerResidueGlobalRoot + unfold finitePlacePrimeIdealPowerResidueIntegralRoot + rw [map_zpow] + +/-- Endpoint form of the finite-place local/global power-residue comparison. -/ +theorem finitePlaceHilbertSymbol_eq_primeIdealPowerResidueFactor + (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) + (hmu : (primitiveRoots (n : ℕ) K).Nonempty) + (v : HeightOneSpectrum (𝓞 K)) + (hv : v ∉ powerResidueExponentFinitePlaces K n) + (hcoprime : (Ideal.absNorm v.asIdeal).Coprime (n : ℕ)) + (a : 𝓞 K) (ha : a ∉ v.asIdeal) (b : Kˣ) : + finitePlaceHilbertSymbol K n hnK hmu v + (primeAvoidingIntegralFieldUnit K v a ha) b = + integralRootsOfUnityToNthRoots K (n : ℕ) + (AlgebraicNumberTheory.PowerResidueSymbols.primeIdealPowerResidueSymbol + K v n hmu hcoprime a ha) ^ + (-finitePlaceNormalizedValuation K v b) := + finitePlaceHilbertSymbol_eq_primeIdealPowerResidueFactor_zpow + K n hnK hmu v hv hcoprime a ha b + +/-- The Dedekind prime multiplicity is the exponent occurring in the +integer-valued adic valuation. -/ +theorem intValuation_eq_exp_neg_idealPrimeMultiplicity + (v : HeightOneSpectrum (𝓞 K)) (x : 𝓞 K) (hx : x ≠ 0) : + v.intValuation x = + WithZero.exp + (-(AlgebraicNumberTheory.PowerResidueSymbols.idealPrimeMultiplicity K v (Ideal.span {x}) : ℤ)) := by + rw [v.intValuation_if_neg hx] + rfl + +/-- For an integral element, the normalized valuation in the canonical +finite-place completion is the negative multiplicity of the prime in its +principal ideal. -/ +theorem finitePlaceNormalizedValuation_nonzeroIntegralFieldUnit + (v : HeightOneSpectrum (𝓞 K)) + (x : 𝓞 K) (hx : x ≠ 0) : + finitePlaceNormalizedValuation K v + (nonzeroIntegralFieldUnit K x hx) = + -(AlgebraicNumberTheory.PowerResidueSymbols.idealPrimeMultiplicity K v (Ideal.span {x}) : ℤ) := by + let C := (HeightOneSpectrum.adicAbv K v).Completion + let : ValuativeRel C := + finitePlaceLocalArtinCompletionValuativeRel v + let : IsNonarchimedeanLocalField C := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v + let : IsUltrametricDist C := + finitePlaceArtinCompletionIsUltrametricDist + (HeightOneSpectrum.adicAbv K v) + (HeightOneSpectrum.isNonarchimedean_adicAbv K v) + let m := AlgebraicNumberTheory.PowerResidueSymbols.idealPrimeMultiplicity K v (Ideal.span {x}) + let πData := chosenFinitePlaceCompletionIntegralUniformizer v + have hπIrreducible : Irreducible πData.completionInteger := by + rw [IsDiscreteValuationRing.irreducible_iff_uniformizer] + let completionDVF : + ValuationTheory.DiscreteValuationField.DVF C := + { ValueGroup := ValuativeRel.ValueGroupWithZero C + valuation := ValuativeRel.valuation C } + exact + completionDVF.maximalIdeal_eq_span_uniformizer + πData.completionInteger_isUniformizer + let πC : Cˣ := + Units.mk0 (πData.completionInteger : C) + πData.completionInteger_isUniformizer.ne_zero + let xC : Cˣ := + finitePlaceHilbert_completionUnit K v + (nonzeroIntegralFieldUnit K x hx) + have hIntX : + v.intValuation x = WithZero.exp (-(m : ℤ)) := by + exact intValuation_eq_exp_neg_idealPrimeMultiplicity K v x hx + have hIntPiPow : + v.intValuation (πData.integer ^ m) = + WithZero.exp (-(m : ℤ)) := by + rw [map_pow, πData.intValuation_eq_exp_neg_one] + calc + WithZero.exp (-1 : ℤ) ^ m = + WithZero.exp (m • (-1 : ℤ)) := + (WithZero.exp_nsmul m (-1 : ℤ)).symm + _ = WithZero.exp (-(m : ℤ)) := by simp + have hnormX : + ‖(xC : C)‖ = + (WithZeroMulInt.toNNReal + (HeightOneSpectrum.absNorm_ne_zero v) + (WithZero.exp (-(m : ℤ))) : ℝ) := by + change ‖algebraMap K C (x : K)‖ = _ + calc + ‖algebraMap K C (x : K)‖ = + HeightOneSpectrum.adicAbv K v (x : K) := + AbsoluteValue.completionAbsoluteValue_coe + (HeightOneSpectrum.adicAbv K v) (x : K) + _ = _ := by + rw [HeightOneSpectrum.adicAbv_def, + HeightOneSpectrum.valuation_of_algebraMap, hIntX] + have hnormPiPow : + ‖((πC ^ m : Cˣ) : C)‖ = + (WithZeroMulInt.toNNReal + (HeightOneSpectrum.absNorm_ne_zero v) + (WithZero.exp (-(m : ℤ))) : ℝ) := by + have hπC : + (πC : C) = algebraMap K C (πData.integer : K) := by + exact πData.coe_completionInteger + have hπCPow : + ((πC ^ m : Cˣ) : C) = + algebraMap K C (((πData.integer ^ m : 𝓞 K) : K)) := by + have hIntegerPow : + (((πData.integer ^ m : 𝓞 K) : K)) = + (πData.integer : K) ^ m := by + exact map_pow (algebraMap (𝓞 K) K) πData.integer m + rw [Units.val_pow_eq_pow_val, hπC, hIntegerPow, map_pow] + calc + ‖((πC ^ m : Cˣ) : C)‖ = + ‖algebraMap K C ((πData.integer ^ m : 𝓞 K) : K)‖ := + congrArg norm hπCPow + _ = HeightOneSpectrum.adicAbv K v + ((πData.integer ^ m : 𝓞 K) : K) := + AbsoluteValue.completionAbsoluteValue_coe + (HeightOneSpectrum.adicAbv K v) + ((πData.integer ^ m : 𝓞 K) : K) + _ = + (WithZeroMulInt.toNNReal + (HeightOneSpectrum.absNorm_ne_zero v) + (WithZero.exp (-(m : ℤ))) : ℝ) := by + rw [HeightOneSpectrum.adicAbv_def, + HeightOneSpectrum.valuation_of_algebraMap, hIntPiPow] + have hraw : + ValuativeRel.valuation C (xC : C) = + ValuativeRel.valuation C ((πC ^ m : Cˣ) : C) := by + apply canonicalValuation_eq_of_valuation_eq + (v := NormedField.valuation (K := C)) + apply NNReal.eq + simpa only [NormedField.valuation_apply, coe_nnnorm] using + hnormX.trans hnormPiPow.symm + have hValuationMap : + valuationMap C (Additive.ofMul xC) = + valuationMap C (Additive.ofMul (πC ^ m)) := by + rw [valuationMap_apply, valuationMap_apply] + unfold IsNonarchimedeanLocalField.v + congr 2 + exact congrArg + (_root_.IsNonarchimedeanLocalField.valueGroupWithZeroIsoInt C) hraw + have hπCValuation : + valuationMap C (Additive.ofMul πC) = -1 := by + rw [valuationMap_apply] + exact + v_integerRingIrreducibleFieldUnit C πData.completionInteger + hπIrreducible πC rfl + calc + finitePlaceNormalizedValuation K v + (nonzeroIntegralFieldUnit K x hx) = + valuationMap C (Additive.ofMul xC) := rfl + _ = valuationMap C (Additive.ofMul (πC ^ m)) := hValuationMap + _ = (m : ℤ) * valuationMap C (Additive.ofMul πC) := by + rw [valuationMap_ofMul_pow] + _ = -(m : ℤ) := by rw [hπCValuation]; simp + _ = -(AlgebraicNumberTheory.PowerResidueSymbols.idealPrimeMultiplicity K v (Ideal.span {x}) : ℤ) := rfl + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtin.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtin.lean index 8c5d33f..4536b7d 100644 --- a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtin.lean +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtin.lean @@ -4,69 +4,13 @@ Released under Apache 2.0 license as described in the file LICENSE. Authors: Naganori Yamaguchi (assisted by OpenAI Codex) -/ -import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.CompletionToIdeal -import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.IdealToCompletion -import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.LocalNorm -import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.AlgEquiv -import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.BaseChange -import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.Core -import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.NormComparison -import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.NormalClosureNorm -import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.Tower -import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.TowerAlgEquivNaturality -import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.TowerBaseChange -import ClassFieldTheory.AlgebraicNumberTheory.Idele.Relative.FinitePlaceTensorNorm -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicFinitePlace -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicLocalization -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalPrimeFactorization -import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalPrincipalLocalUnit -import ClassFieldTheory.LocalClassFieldTheory.Finite.LocalReciprocity.SemilinearNaturality -import ClassFieldTheory.LocalClassFieldTheory.Finite.LocalReciprocity.UnramifiedNormalization -import ClassFieldTheory.LocalClassFieldTheory.LubinTateApplication.PadicMultiplicativeArtinComparison -import ValuedFieldTheory.LocalField.DiscreteValuationField.PadicValuationComparison -import ValuedFieldTheory.LocalField.NonarchimedeanLocalField.UnramifiedFrobenius -import ValuedFieldTheory.LocalField.Padic.Cyclotomic.TotallyRamified.EisensteinPolynomial -import Mathlib.NumberTheory.NumberField.Cyclotomic.Galois +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicFinitePlaceArtinPrincipal -set_option autoImplicit false - -/-! -# Finite-place Artin symbols in rational cyclotomic levels -At a rational prime away from the cyclotomic level, the chosen completed -extension is unramified. Its normalized local Artin map is therefore the -arithmetic Frobenius raised to the local valuation. The genuine primitive -root in the localized cyclotomic level identifies the image of arithmetic -Frobenius under the global cyclotomic character with the residue prime. --/ +set_option autoImplicit false open scoped Classical NNReal NumberField ValuativeRel open NumberField IsDedekindDomain - -noncomputable section - -namespace GlobalClassFieldTheory -namespace Reciprocity - --- Specializing the generic finite-place comparison to `ℚ` must retain its --- `Algebra.id` owner rather than selecting the competing rational-field --- instance introduced after specialization. -@[reducible] noncomputable local instance - rationalFinitePlaceCompletionRatAlgebra - (v : HeightOneSpectrum (𝓞 ℚ)) : - Algebra ℚ (HeightOneSpectrum.adicAbv ℚ v).Completion := by - letI : Algebra ℚ ℚ := Algebra.id ℚ - let hWith : Algebra ℚ - (WithAbs (HeightOneSpectrum.adicAbv ℚ v)) := - WithAbs.instAlgebra _ - let hUniform : UniformContinuousConstSMul ℚ - (WithAbs (HeightOneSpectrum.adicAbv ℚ v)) := - WithAbs.instUniformContinuousConstSMulReal _ - exact - @UniformSpace.Completion.algebra - (WithAbs (HeightOneSpectrum.adicAbv ℚ v)) _ _ _ _ - ℚ _ hWith hUniform - open AlgebraicNumberTheory.Valuations open HilbertRamification open LocalClassFieldTheory @@ -75,2260 +19,54 @@ open LocalFieldTheory.DiscreteValuationField open LocalFieldTheory.DiscreteValuationField.Examples.Qp open LubinTate -private theorem mappedAbelianLocalArtin_eq_frobenius_zpow - {F E G : Type} - [Field F] [ValuativeRel F] [TopologicalSpace F] - [IsNonarchimedeanLocalField F] - [Field E] [ValuativeRel E] [UniformSpace E] [IsUniformAddGroup E] - [IsNonarchimedeanLocalField E] - [Algebra F E] [FiniteDimensional F E] [IsAbelianGalois F E] - [Valuation.HasExtension - (ValuativeRel.valuation F) (ValuativeRel.valuation E)] - [IsNonarchimedeanLocalField.IsUnramifiedValuedExtension F E] - [Group G] - (f : (E ≃ₐ[F] E) →* G) (x : Fˣ) : - f (LocalClassFieldTheory.abelianLocalArtinMonoidHom F E x) = - (f (arithmeticFrobeniusOfUnramifiedValuation F E)) ^ - IsNonarchimedeanLocalField.valuationMap F - (Additive.ofMul x) := by - rw [LocalClassFieldTheory.abelianLocalArtinMonoidHom_eq_frobenius_zpow, - map_zpow] - -local instance (q : Nat.Primes) : Fact q.1.Prime := - ⟨q.2⟩ - -local instance (m : ℕ+) : NeZero (m : ℕ) := - ⟨m.ne_zero⟩ - -noncomputable local instance - rationalCyclotomicLevelFiniteDimensional - (m : ℕ+) : - FiniteDimensional ℚ - (KummerTheory.rationalCyclotomicLevel m) := - IsCyclotomicExtension.finiteDimensional - {(m : ℕ)} ℚ (KummerTheory.rationalCyclotomicLevel m) - -noncomputable local instance - rationalCyclotomicLevelIsAbelianGalois - (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 _ _ } - -@[reducible] -noncomputable local instance rationalFinitePlaceBaseNontriviallyNormedField - (q : Nat.Primes) : - NontriviallyNormedField - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion := - absoluteValueExtension_completionNontriviallyNormedField - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)) - (RayClass.adicAbv_isNontrivial - (RayClass.rationalPrime q)) - -noncomputable local instance rationalFinitePlaceBaseLocallyCompactSpace - (q : Nat.Primes) : - LocallyCompactSpace - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion := - AbsoluteValue.Completion.locallyCompactSpace - (finitePlaceCompletionBaseMap_isometry - (RayClass.rationalPrime q)) - -noncomputable local instance rationalFinitePlaceBaseIsUltrametricDist - (q : Nat.Primes) : - IsUltrametricDist - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion := - finitePlaceArtinCompletionIsUltrametricDist - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)) - (HeightOneSpectrum.isNonarchimedean_adicAbv - ℚ (RayClass.rationalPrime q)) - -@[reducible] -noncomputable local instance rationalFinitePlaceBaseValued - (q : Nat.Primes) : - Valued - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion ℝ≥0 := - finitePlaceArtinCompletionValued - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)) - (HeightOneSpectrum.isNonarchimedean_adicAbv - ℚ (RayClass.rationalPrime q)) - -@[reducible] -noncomputable local instance rationalFinitePlaceBaseValuativeRel - (q : Nat.Primes) : - ValuativeRel - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion := - finitePlaceLocalArtinCompletionValuativeRel - (K := ℚ) (RayClass.rationalPrime q) - -noncomputable local instance - rationalFinitePlaceBaseValuationIsNontrivial - (q : Nat.Primes) : - (Valued.v : - Valuation - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - ℝ≥0).IsNontrivial := - (inferInstance : - (NormedField.valuation - (K := - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion)).IsNontrivial) - -noncomputable local instance rationalFinitePlaceBaseValuationCompatible - (q : Nat.Primes) : - (Valued.v : - Valuation - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - ℝ≥0).Compatible := - Valuation.Compatible.ofValuation _ - -noncomputable local instance - rationalFinitePlaceBaseValuativeRelIsNontrivial - (q : Nat.Primes) : - ValuativeRel.IsNontrivial - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion := - (ValuativeRel.isNontrivial_iff_isNontrivial - (Valued.v : - Valuation - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - ℝ≥0)).2 inferInstance - -noncomputable local instance rationalFinitePlaceBaseIsValuativeTopology - (q : Nat.Primes) : - IsValuativeTopology - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion := - isValuativeTopology_of_valued_ofValuation - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion ℝ≥0 - -noncomputable local instance - rationalFinitePlaceBaseIsNonarchimedeanLocalField - (q : Nat.Primes) : - IsNonarchimedeanLocalField - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion := - finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField - (K := ℚ) (RayClass.rationalPrime q) - -/-! Named compatibility witnesses used by the ramified-prime and ray-norm -modules. They are not installed as a duplicate module-level instance family; -the canonical instances above already provide the same data. -/ - -/-- Rational cyclotomic levels are finite-dimensional over `ℚ`. -/ -theorem rationalCyclotomicPrincipalPrimeLevelFiniteDimensional - (m : ℕ+) : - FiniteDimensional ℚ (KummerTheory.rationalCyclotomicLevel m) := - rationalCyclotomicLevelFiniteDimensional m - -/-- Rational cyclotomic levels are abelian Galois extensions of `ℚ`. -/ -theorem rationalCyclotomicPrincipalPrimeLevelIsAbelianGalois - (m : ℕ+) : - IsAbelianGalois ℚ (KummerTheory.rationalCyclotomicLevel m) := - rationalCyclotomicLevelIsAbelianGalois m - -/-- The canonical nontrivially normed field structure on the completion of -`ℚ` at the rational prime `p`, exposed for principal-prime constructions. -/ -@[reducible] -noncomputable def rationalPrimeFactorCompletionNontriviallyNormedField - (p : Nat.Primes) : - NontriviallyNormedField - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion := - rationalFinitePlaceBaseNontriviallyNormedField p - -/-- The completion of `ℚ` at `p` is locally compact. -/ -theorem rationalPrimeFactorCompletionLocallyCompactSpace - (p : Nat.Primes) : - LocallyCompactSpace - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion := - rationalFinitePlaceBaseLocallyCompactSpace p - -/-- The completion of `ℚ` at `p` carries its canonical ultrametric distance. -/ -theorem rationalPrimeFactorCompletionIsUltrametricDist - (p : Nat.Primes) : - IsUltrametricDist - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion := - rationalFinitePlaceBaseIsUltrametricDist p - -/-- The canonical `ℝ≥0`-valued structure on the completion of `ℚ` at `p`. -/ -@[reducible] -noncomputable def rationalPrimeFactorCompletionValued - (p : Nat.Primes) : - Valued - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion ℝ≥0 := - rationalFinitePlaceBaseValued p - -/-- The valuative relation induced by the canonical valuation on the -completion of `ℚ` at `p`. -/ -@[reducible] -noncomputable def rationalPrimeFactorCompletionValuativeRel - (p : Nat.Primes) : - ValuativeRel - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion := - rationalFinitePlaceBaseValuativeRel p - -/-- The canonical valuation on the completion of `ℚ` at `p` is nontrivial. -/ -theorem rationalPrimeFactorCompletionValuationIsNontrivial - (p : Nat.Primes) : - (Valued.v : Valuation - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion ℝ≥0).IsNontrivial := - rationalFinitePlaceBaseValuationIsNontrivial p - -/-- The canonical valuation on the completion of `ℚ` at `p` is compatible -with its field structure. -/ -theorem rationalPrimeFactorCompletionValuationCompatible - (p : Nat.Primes) : - (Valued.v : Valuation - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion ℝ≥0).Compatible := - rationalFinitePlaceBaseValuationCompatible p - -/-- The canonical valuative relation on the completion at `p` is nontrivial. -/ -theorem rationalPrimeFactorCompletionValuativeRelIsNontrivial - (p : Nat.Primes) : - ValuativeRel.IsNontrivial - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion := - rationalFinitePlaceBaseValuativeRelIsNontrivial p - -/-- The completion topology at `p` is induced by its canonical valuation. -/ -theorem rationalPrimeFactorCompletionIsValuativeTopology - (p : Nat.Primes) : - IsValuativeTopology - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion := - rationalFinitePlaceBaseIsValuativeTopology p - -/-- The completion of `ℚ` at `p` is a nonarchimedean local field. -/ -theorem rationalPrimeFactorCompletionIsNonarchimedeanLocalField - (p : Nat.Primes) : - IsNonarchimedeanLocalField - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion := - rationalFinitePlaceBaseIsNonarchimedeanLocalField p - -/-- The positive conductor of the `n`-th ramified cyclotomic level at -`p`. -/ -def rationalCyclotomicPrincipalPrimeModulus - (p : Nat.Primes) (n : ℕ) : ℕ+ := - ⟨p.1 ^ (n + 1), pow_pos p.2.pos (n + 1)⟩ - -/-- The rational finite-place completion used at the prime `p`. -/ -abbrev RationalCyclotomicPrincipalPrimeCompletion - (p : Nat.Primes) := - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion - -/-- The chosen localized cyclotomic field at level `p ^ (n + 1)`. -/ -abbrev RationalCyclotomicPrincipalPrimeLocalizedLevel - (p : Nat.Primes) (n : ℕ) := - rationalCyclotomicLocalizedCompletion - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p) - -/-- The standard multiplicative Lubin--Tate field at level `n`. -/ -abbrev RationalCyclotomicPrincipalPrimePadicLevel - (p : Nat.Primes) (n : ℕ) := - standardLubinTateLevelField - (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n - -/-- The valuation ring of the absolute-value completion at `q`, identified -with the standard p-adic integer ring `ℤ_q`. -/ -noncomputable def rationalFinitePlaceCompletionIntegerRingEquivPadicInt - (q : Nat.Primes) : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion] ≃+* - ℤ_[q.1] := by - let v : HeightOneSpectrum (𝓞 ℚ) := - RayClass.rationalPrime q - let vQ := HeightOneSpectrum.adicAbv ℚ v - let eConcreteIntegers : - 𝒪[vQ.Completion] ≃+* - v.adicCompletionIntegers ℚ := - finitePlaceCompletionIntegerRingEquiv v - exact - eConcreteIntegers.trans - (PadicInt.adicCompletionIntegersEquiv - (𝓞 ℚ) q).symm.toRingEquiv - -/-- The absolute-value completion at the rational prime `q`, identified -with the standard field `ℚ_q`. -/ -noncomputable def rationalFinitePlaceCompletionRingEquivPadic - (q : Nat.Primes) : - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion ≃+* - ℚ_[q.1] := - IsFractionRing.ringEquivOfRingEquiv - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt q) - -/-- The completion-to-`ℚ_q` equivalence respects the rational embedding. -/ -theorem rationalFinitePlaceCompletionRingEquivPadic_algebraMap - (q : Nat.Primes) (a : ℚ) : - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap ℚ - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion a) = - algebraMap ℚ ℚ_[q.1] a := by - exact - (rationalFinitePlaceCompletionRingEquivPadic q).toRingHom.map_rat_algebraMap a - -/-- The completion field equivalence and its restriction to valuation -rings commute with the natural inclusions into the fields. -/ -theorem rationalFinitePlaceCompletionIntegerRingEquivPadicInt_coe - (q : Nat.Primes) - (a : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion]) : - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion] - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion a) = - algebraMap ℤ_[q.1] ℚ_[q.1] - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt q a) := by - exact - (IsFractionRing.ringEquivOfRingEquiv_algebraMap - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt q) a) - -/-- The canonical rational-completion equivalence preserves the canonical -valuations. -/ -theorem - rationalFinitePlaceCompletionRingEquivPadic_semilinearValuationCompatible - (p : Nat.Primes) : - SemilinearValuationCompatible - (RationalCyclotomicPrincipalPrimeCompletion p) ℚ_[p.1] - (rationalFinitePlaceCompletionRingEquivPadic p) := by - let F := RationalCyclotomicPrincipalPrimeCompletion p - let eK := rationalFinitePlaceCompletionRingEquivPadic p - let : Algebra F ℚ_[p.1] := eK.toRingHom.toAlgebra - change - (ValuativeRel.valuation F).HasExtension - (ValuativeRel.valuation ℚ_[p.1]) - let eO := - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt p).trans - (padicIntEquivValuationSubring p.1) - have hChosen : - (localCompleteDVF F).valuation.HasExtension - (padicDVRValuation p.1) := by - change - (localCompleteDVF F).valuation.HasExtension - (padicCompleteDVF p.1).valuation - apply - ValuationTheory.DiscreteValuationField.ValuedExtension.valuation_hasExtension_of_valuationSubring_equiv - (localCompleteDVF F) - (padicCompleteDVF p.1) - eO - intro z - change - algebraMap - (padicDVRValuation p.1).valuationSubring ℚ_[p.1] - (padicIntEquivValuationSubring p.1 - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt - p z)) = - rationalFinitePlaceCompletionRingEquivPadic p - (algebraMap 𝒪[F] F z) - symm - calc - rationalFinitePlaceCompletionRingEquivPadic p - (algebraMap 𝒪[F] F z) = - algebraMap ℤ_[p.1] ℚ_[p.1] - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt - p z) := - rationalFinitePlaceCompletionIntegerRingEquivPadicInt_coe - p z - _ = - algebraMap - (padicDVRValuation p.1).valuationSubring ℚ_[p.1] - (padicIntEquivValuationSubring p.1 - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt - p z)) := by - rw [PadicInt.algebraMap_apply, - ValuationSubring.algebraMap_apply] - exact - (padicIntEquivValuationSubring_coe p.1 - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt - p z)).symm - have hBase : - (ValuativeRel.valuation F).HasExtension - (padicDVRValuation p.1) := by - rw [← localCompleteDVF_valuation_eq] - exact hChosen - refine - { val_isEquiv_comap := ?_ } - exact - hBase.val_isEquiv_comap.trans - ((padicDVRValuation_isEquiv_valuativeRelValuation - p.1).comap (algebraMap F ℚ_[p.1])) - -/-- The rational prime, pulled back from `ℤ_q` to the valuation ring of -the absolute-value completion at `q`. -/ -noncomputable def rationalPrimeFinitePlaceInteger - (q : Nat.Primes) : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion] := - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt q).symm - (q.1 : ℤ_[q.1]) - -/-- The pulled-back rational prime is irreducible in the completion -valuation ring. -/ -theorem rationalPrimeFinitePlaceInteger_irreducible - (q : Nat.Primes) : - Irreducible (rationalPrimeFinitePlaceInteger q) := by - exact - (MulEquiv.irreducible_iff - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt - q).symm.toMulEquiv).2 - ((PadicInt.prime_p : - Prime (q.1 : ℤ_[q.1])).irreducible) - -/-- Coercing the pulled-back prime to the completion field gives the -ordinary image of the rational number `q`. -/ -theorem rationalPrimeFinitePlaceInteger_coe - (q : Nat.Primes) : - ((rationalPrimeFinitePlaceInteger q : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion]) : - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion) = - algebraMap ℚ - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (q.1 : ℚ) := by - apply - (rationalFinitePlaceCompletionRingEquivPadic q).injective - change - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion] - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeFinitePlaceInteger q)) = - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap ℚ - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (q.1 : ℚ)) - calc - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion] - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeFinitePlaceInteger q)) = - algebraMap ℤ_[q.1] ℚ_[q.1] - ((rationalFinitePlaceCompletionIntegerRingEquivPadicInt q) - (rationalPrimeFinitePlaceInteger q)) := - rationalFinitePlaceCompletionIntegerRingEquivPadicInt_coe - q (rationalPrimeFinitePlaceInteger q) - _ = (q.1 : ℚ_[q.1]) := by - rw [rationalPrimeFinitePlaceInteger, - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt - q).apply_symm_apply, - PadicInt.algebraMap_apply, - PadicInt.coe_natCast] - _ = - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap ℚ - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (q.1 : ℚ)) := by - rw [ - rationalFinitePlaceCompletionRingEquivPadic_algebraMap] - norm_num - -/-- The rational prime as a field unit of its absolute-value completion. -/ -noncomputable def rationalPrimeFinitePlaceFieldUnit - (q : Nat.Primes) : - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completionˣ := - Units.mk0 - (rationalPrimeFinitePlaceInteger q : - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion) - (by - intro hzero - exact - (rationalPrimeFinitePlaceInteger_irreducible q).ne_zero - (Subtype.ext hzero)) - -/-- In the inverse-standard local reciprocity normalization, the rational -prime itself has normalized additive value `-1`. -/ -theorem rationalPrimeFinitePlaceFieldUnit_valuationMap - (q : Nat.Primes) : - IsNonarchimedeanLocalField.valuationMap - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (Additive.ofMul - (rationalPrimeFinitePlaceFieldUnit q)) = - -1 := by - simpa [IsNonarchimedeanLocalField.valuationMap_apply] using - (LocalFieldTheory.v_integerRingIrreducibleFieldUnit - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeFinitePlaceInteger q) - (rationalPrimeFinitePlaceInteger_irreducible q) - (rationalPrimeFinitePlaceFieldUnit q) rfl) - -/-- The rational `q`-unit part of `x`, pulled back from `ℤ_qˣ` to the -valuation ring of the absolute-value completion. -/ -noncomputable def rationalPrimeUnitFinitePlaceIntegerUnit - (x : ℚˣ) (q : Nat.Primes) : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion]ˣ := - Units.map - (rationalFinitePlaceCompletionIntegerRingEquivPadicInt - q).symm.toMonoidHom - (padicIntUnitOfRat q - (rationalPrimeUnit x q : ℚ) - (rationalPrimeUnit x q).ne_zero - (padicValRat_rationalPrimeUnit x q)) - -/-- Forgetting the integrality proof from the pulled-back `q`-unit gives -the ordinary image of the rational `q`-unit in the completion field. -/ -theorem rationalPrimeUnitFinitePlaceIntegerUnit_coe - (x : ℚˣ) (q : Nat.Primes) : - (((rationalPrimeUnitFinitePlaceIntegerUnit x q : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion]ˣ) : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion]) : - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion) = - algebraMap ℚ - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeUnit x q : ℚ) := by - apply - (rationalFinitePlaceCompletionRingEquivPadic q).injective - change - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion] - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeUnitFinitePlaceIntegerUnit x q : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion])) = - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap ℚ - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeUnit x q : ℚ)) - calc - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion] - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeUnitFinitePlaceIntegerUnit x q : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion])) = - algebraMap ℤ_[q.1] ℚ_[q.1] - ((rationalFinitePlaceCompletionIntegerRingEquivPadicInt q) - (rationalPrimeUnitFinitePlaceIntegerUnit x q : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion])) := - rationalFinitePlaceCompletionIntegerRingEquivPadicInt_coe q - (rationalPrimeUnitFinitePlaceIntegerUnit x q : - 𝒪[(HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion]) - _ = - ((padicIntUnitOfRat q - (rationalPrimeUnit x q : ℚ) - (rationalPrimeUnit x q).ne_zero - (padicValRat_rationalPrimeUnit x q) : - ℤ_[q.1]) : ℚ_[q.1]) := by - rw [rationalPrimeUnitFinitePlaceIntegerUnit] - simp [PadicInt.algebraMap_apply] - _ = ((rationalPrimeUnit x q : ℚ) : ℚ_[q.1]) := by - rw [padicIntUnitOfRat_coe] - _ = - rationalFinitePlaceCompletionRingEquivPadic q - (algebraMap ℚ - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeUnit x q : ℚ)) := by - rw [ - rationalFinitePlaceCompletionRingEquivPadic_algebraMap] - simp - -/-- The completion field unit underlying the pulled-back rational `q`-unit -has normalized additive value zero. -/ -theorem rationalPrimeUnitFinitePlaceField_valuationMap - (x : ℚˣ) (q : Nat.Primes) : - IsNonarchimedeanLocalField.valuationMap - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (Additive.ofMul - (IsNonarchimedeanLocalField.integerUnitsToFieldUnits - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeUnitFinitePlaceIntegerUnit x q))) = - 0 := by - rw [IsNonarchimedeanLocalField.valuationMap_apply] - exact - IsNonarchimedeanLocalField.v_integerUnitsToFieldUnits - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (rationalPrimeUnitFinitePlaceIntegerUnit x q) - -/-- The rational prime `q`, regarded as a unit of `ℚ`. -/ -def rationalPrimeGeneratorUnit (q : Nat.Primes) : ℚˣ := - Units.mk0 (q.1 : ℚ) (by exact_mod_cast q.2.ne_zero) - -/-- The underlying rational number of the prime generator unit is `q`. -/ -@[simp] -theorem rationalPrimeGeneratorUnit_coe (q : Nat.Primes) : - (rationalPrimeGeneratorUnit q : ℚ) = q.1 := - rfl - -/-- Reattaching the removed `q`-power to the rational `q`-unit recovers -the original rational field unit. -/ -theorem rationalPrimeGeneratorUnit_zpow_mul_rationalPrimeUnit - (x : ℚˣ) (q : Nat.Primes) : - rationalPrimeGeneratorUnit q ^ - padicValRat q.1 (x : ℚ) * - rationalPrimeUnit x q = - x := by - rw [rationalPrimeGeneratorUnit, rationalPrimeUnit, - ← mul_assoc, ← zpow_add] - simp - -/-- The source unit in the absolute-value completion represented by the -finite component of a rational principal idele. -/ -noncomputable def rationalPrincipalFinitePlaceInput - (x : ℚˣ) (q : Nat.Primes) : - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completionˣ := - (finitePlaceCompletionUnitsContinuousMulEquiv - (RayClass.rationalPrime q)).symm - (IdeleGroup.finiteComponent - (RayClass.rationalPrime q) - (IdeleGroup.principalIdele ℚ x)) - -/-- The source unit represented by a principal finite component is the -ordinary image of the rational field unit in the absolute-value -completion. -/ -theorem rationalPrincipalFinitePlaceInput_eq_algebraMap - (x : ℚˣ) (q : Nat.Primes) : - rationalPrincipalFinitePlaceInput x q = - Units.map - (algebraMap ℚ - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion).toMonoidHom - x := by - apply Units.ext - let v : HeightOneSpectrum (𝓞 ℚ) := - RayClass.rationalPrime q - let vQ := HeightOneSpectrum.adicAbv ℚ v - let component : (v.adicCompletion ℚ)ˣ := - IdeleGroup.finiteComponent v - (IdeleGroup.principalIdele ℚ x) - apply (finitePlaceCompletionRingEquiv v).injective - change - finitePlaceCompletionRingEquiv v - (rationalPrincipalFinitePlaceInput x q : vQ.Completion) = - finitePlaceCompletionRingEquiv v - (algebraMap ℚ vQ.Completion (x : ℚ)) - have hCompletion : - finitePlaceCompletionRingEquiv v - (rationalPrincipalFinitePlaceInput x q : - vQ.Completion) = - (component : v.adicCompletion ℚ) := by - have hUnits := - congrArg Units.val - ((finitePlaceCompletionUnitsContinuousMulEquiv v).apply_symm_apply - component) - exact hUnits - have hComponent : - (component : v.adicCompletion ℚ) = - algebraMap ℚ (v.adicCompletion ℚ) (x : ℚ) := by - apply (Padic.adicCompletionEquiv (𝓞 ℚ) q).symm.injective - calc - (Padic.adicCompletionEquiv (𝓞 ℚ) q).symm - (component : v.adicCompletion ℚ) = - algebraMap ℚ ℚ_[q.1] (x : ℚ) := by - dsimp only [component] - rw [IdeleGroup.finiteComponent_principalIdele] - exact - (Padic.adicCompletionEquiv - (𝓞 ℚ) q).symm.commutes (x : ℚ) - _ = (Padic.adicCompletionEquiv (𝓞 ℚ) q).symm - (algebraMap ℚ (v.adicCompletion ℚ) (x : ℚ)) := by - symm - exact - (Padic.adicCompletionEquiv - (𝓞 ℚ) q).symm.commutes (x : ℚ) - calc - finitePlaceCompletionRingEquiv v - (rationalPrincipalFinitePlaceInput x q : - vQ.Completion) = - (component : v.adicCompletion ℚ) := hCompletion - _ = algebraMap ℚ (v.adicCompletion ℚ) (x : ℚ) := hComponent - _ = finitePlaceCompletionRingEquiv v - (algebraMap ℚ vQ.Completion (x : ℚ)) := by - symm - exact - (finitePlaceCompletionAlgEquiv (K := ℚ) v).commutes (x : ℚ) - -/-- The normalized local exponent of a rational principal finite -component is the negative of the usual `q`-adic exponent. The minus sign -records the inverse-standard local reciprocity convention in which a -prime element has normalized value `-1`. -/ -theorem rationalPrincipalFiniteComponent_valuationMap - (x : ℚˣ) (q : Nat.Primes) : - IsNonarchimedeanLocalField.valuationMap - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (Additive.ofMul - ((finitePlaceCompletionUnitsContinuousMulEquiv - (RayClass.rationalPrime q)).symm - (IdeleGroup.finiteComponent - (RayClass.rationalPrime q) - (IdeleGroup.principalIdele ℚ x)))) = - -padicValRat q.1 (x : ℚ) := by - let F := - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - let embed : ℚˣ →* Fˣ := - Units.map (algebraMap ℚ F).toMonoidHom - let primeUnit : Fˣ := - rationalPrimeFinitePlaceFieldUnit q - let integralUnit : 𝒪[F]ˣ := - rationalPrimeUnitFinitePlaceIntegerUnit x q - let unitPart : Fˣ := - IsNonarchimedeanLocalField.integerUnitsToFieldUnits - F integralUnit - have hInput : - rationalPrincipalFinitePlaceInput x q = - embed x := by - exact rationalPrincipalFinitePlaceInput_eq_algebraMap x q - have hPrime : - embed (rationalPrimeGeneratorUnit q) = - primeUnit := by - apply Units.ext - exact - (rationalPrimeFinitePlaceInteger_coe q).symm - have hUnit : - embed (rationalPrimeUnit x q) = - unitPart := by - apply Units.ext - exact - (rationalPrimeUnitFinitePlaceIntegerUnit_coe - x q).symm - change - IsNonarchimedeanLocalField.valuationMap F - (Additive.ofMul - (rationalPrincipalFinitePlaceInput x q)) = - -padicValRat q.1 (x : ℚ) - rw [hInput] - conv_lhs => - rw [← rationalPrimeGeneratorUnit_zpow_mul_rationalPrimeUnit - x q] - rw [map_mul, map_zpow, hPrime, hUnit, - IsNonarchimedeanLocalField.valuationMap_ofMul_mul, - IsNonarchimedeanLocalField.valuationMap_ofMul_zpow, - rationalPrimeFinitePlaceFieldUnit_valuationMap, - rationalPrimeUnitFinitePlaceField_valuationMap] - ring - -/-- The principal finite component of the rational prime itself has -normalized local exponent `-1`. -/ -theorem rationalPrimePrincipalFiniteComponent_valuationMap - (q : Nat.Primes) : - IsNonarchimedeanLocalField.valuationMap - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime q)).Completion - (Additive.ofMul - ((finitePlaceCompletionUnitsContinuousMulEquiv - (RayClass.rationalPrime q)).symm - (IdeleGroup.finiteComponent - (RayClass.rationalPrime q) - (IdeleGroup.principalIdele ℚ - (rationalPrimeGeneratorUnit q))))) = - -1 := by - rw [rationalPrincipalFiniteComponent_valuationMap, - rationalPrimeGeneratorUnit_coe, - padicValRat.self q.2.one_lt] - -/-- A cyclotomic automorphism which raises the selected primitive root to -the `q`-th power has cyclotomic character equal to the residue-prime unit. -/ -private theorem rationalCyclotomicLevel_galEquivZMod_eq_unitOfCoprime - (m : ℕ+) (q : Nat.Primes) - (hq : ¬ q.1 ∣ (m : ℕ)) - (σ : KummerTheory.rationalCyclotomicLevel m ≃ₐ[ℚ] - KummerTheory.rationalCyclotomicLevel m) - (hσ : - σ (rationalCyclotomicLevelPrimitiveRoot m) = - rationalCyclotomicLevelPrimitiveRoot m ^ q.1) : - IsCyclotomicExtension.Rat.galEquivZMod - (m : ℕ) (KummerTheory.rationalCyclotomicLevel m) σ = - ZMod.unitOfCoprime q.1 - (q.2.coprime_iff_not_dvd.mpr hq) := by - let ζ := rationalCyclotomicLevelPrimitiveRoot m - have hζ : IsPrimitiveRoot ζ (m : ℕ) := - rationalCyclotomicLevelPrimitiveRoot_isPrimitiveRoot m - have hCharacterRoot : - σ ζ = - ζ ^ - (IsCyclotomicExtension.Rat.galEquivZMod - (m : ℕ) (KummerTheory.rationalCyclotomicLevel m) σ).val.val := - IsCyclotomicExtension.Rat.galEquivZMod_apply_of_pow_eq - (m : ℕ) (KummerTheory.rationalCyclotomicLevel m) σ - hζ.pow_eq_one - have hPowers : - ζ ^ - (IsCyclotomicExtension.Rat.galEquivZMod - (m : ℕ) (KummerTheory.rationalCyclotomicLevel m) σ).val.val = - ζ ^ q.1 := - hCharacterRoot.symm.trans hσ - rw [(hζ.isOfFinOrder m.ne_zero).pow_inj_mod, - ← hζ.eq_orderOf, - ← ZMod.natCast_eq_natCast_iff', - ZMod.natCast_val] at hPowers - apply Units.ext - simpa using hPowers - -private abbrev rationalCyclotomicArtinPlace (q : Nat.Primes) : - HeightOneSpectrum (𝓞 ℚ) := - RayClass.rationalPrime q - -private abbrev rationalCyclotomicArtinBaseAbv (q : Nat.Primes) : - AbsoluteValue ℚ ℝ := - HeightOneSpectrum.adicAbv ℚ (rationalCyclotomicArtinPlace q) - -private abbrev rationalCyclotomicArtinLevel (m : ℕ+) := - KummerTheory.rationalCyclotomicLevel m - -private abbrev rationalCyclotomicArtinExtension - (m : ℕ+) (q : Nat.Primes) : - AbsoluteValueExtension - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinLevel m) := - chosenFinitePlaceExtension - (L := rationalCyclotomicArtinLevel m) - (rationalCyclotomicArtinPlace q) - -private abbrev rationalCyclotomicArtinLocalizedField - (m : ℕ+) (q : Nat.Primes) := - AlgebraicNumberTheory.Valuations.LocalizedCompletion - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinExtension m q) - -@[reducible] -noncomputable local instance rationalCyclotomicArtinExtensionAlgebra - (m : ℕ+) (q : Nat.Primes) : - Algebra ℚ - (rationalCyclotomicArtinExtension m q).1.Completion := - AbsoluteValue.extensionCompletionAlgebra - (K := ℚ) (rationalCyclotomicArtinExtension m q).1 - -@[reducible] -noncomputable local instance rationalCyclotomicArtinExtensionSMul - (m : ℕ+) (q : Nat.Primes) : - SMul ℚ - (rationalCyclotomicArtinExtension m q).1.Completion := - (rationalCyclotomicArtinExtensionAlgebra m q).toSMul - -@[reducible] -noncomputable local instance - rationalCyclotomicArtinCompletionAlgebra - (m : ℕ+) (q : Nat.Primes) : - Algebra (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinExtension m q).1.Completion := - AbsoluteValue.completionAlgebra - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinExtension m q).1 - (rationalCyclotomicArtinExtension m q).2 - -@[reducible] -noncomputable local instance rationalCyclotomicArtinLocalizedAlgebra - (m : ℕ+) (q : Nat.Primes) : - Algebra (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinLocalizedField m q) := - finitePlaceLocalArtinLocalizedAlgebra - (K := ℚ) (L := rationalCyclotomicArtinLevel m) - (rationalCyclotomicArtinPlace q) - (rationalCyclotomicArtinExtension m q) - -noncomputable local instance - rationalCyclotomicArtinLocalizedGlobalAlgebra - (m : ℕ+) (q : Nat.Primes) : - Algebra ℚ (rationalCyclotomicArtinLocalizedField m q) := - LocalClassFieldTheory.localizedCompletionGlobalAlgebra - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinExtension m q) - -noncomputable local instance - rationalCyclotomicArtinLocalizedGlobalSMul - (m : ℕ+) (q : Nat.Primes) : - SMul ℚ (rationalCyclotomicArtinLocalizedField m q) := - (rationalCyclotomicArtinLocalizedGlobalAlgebra m q).toSMul - -noncomputable local instance - rationalCyclotomicArtinLocalizedScalarTower - (m : ℕ+) (q : Nat.Primes) : - IsScalarTower ℚ - (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinLocalizedField m q) := by - constructor - intro r x y - simp only [Algebra.smul_def, map_mul, eq_ratCast, - map_ratCast, mul_assoc] - -noncomputable local instance - rationalCyclotomicArtinLocalizedFiniteDimensional - (m : ℕ+) (q : Nat.Primes) : - FiniteDimensional - (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinLocalizedField m q) := - finitePlaceLocalArtinFiniteDimensional - (K := ℚ) (L := rationalCyclotomicArtinLevel m) - (rationalCyclotomicArtinPlace q) - (rationalCyclotomicArtinExtension m q) - -noncomputable local instance - rationalCyclotomicArtinLocalizedIsAbelianGalois - (m : ℕ+) (q : Nat.Primes) : - IsAbelianGalois - (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinLocalizedField m q) := - finitePlaceLocalArtinIsAbelianGalois - (K := ℚ) (L := rationalCyclotomicArtinLevel m) - (rationalCyclotomicArtinPlace q) - (rationalCyclotomicArtinExtension m q) - (inferInstance : - FiniteDimensional ℚ (rationalCyclotomicArtinLevel m)) - -noncomputable local instance - rationalCyclotomicArtinLocalizedIsSeparable - (m : ℕ+) (q : Nat.Primes) : - Algebra.IsSeparable - (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinLocalizedField m q) := - (rationalCyclotomicArtinLocalizedIsAbelianGalois m q).toIsGalois.to_isSeparable - -noncomputable local instance - rationalCyclotomicArtinLocalizedIsCyclotomic - (m : ℕ+) (q : Nat.Primes) : - IsCyclotomicExtension {(m : ℕ)} - (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinLocalizedField m q) := - rationalCyclotomicLevel_localizedCompletion_isCyclotomicExtension - m (rationalCyclotomicArtinPlace q) - -noncomputable local instance - rationalCyclotomicArtinExtensionFiniteDimensional - (m : ℕ+) (q : Nat.Primes) : - FiniteDimensional - (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinExtension m q).1.Completion := - completionModuleFinite - (rationalCyclotomicArtinBaseAbv q) - (RayClass.adicAbv_isNontrivial - (rationalCyclotomicArtinPlace q)) - (rationalCyclotomicArtinExtension m q) - -noncomputable local instance - rationalCyclotomicArtinExtensionContinuousSMul - (m : ℕ+) (q : Nat.Primes) : - ContinuousSMul - (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinExtension m q).1.Completion := - continuousSMul_of_algebraMap _ _ - (AbsoluteValue.completionMap_isometry - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinExtension m q).1 - (rationalCyclotomicArtinExtension m q).2).continuous - -noncomputable local instance - rationalCyclotomicArtinExtensionLocallyCompact - (m : ℕ+) (q : Nat.Primes) : - LocallyCompactSpace - (rationalCyclotomicArtinExtension m q).1.Completion := - LocallyCompactSpace.of_finiteDimensional_of_complete - (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinExtension m q).1.Completion - -private noncomputable def - rationalCyclotomicArtinLocalizedEquivCompletion - (m : ℕ+) (q : Nat.Primes) : - rationalCyclotomicArtinLocalizedField m q ≃ᵢ - (rationalCyclotomicArtinExtension m q).1.Completion := - { toEquiv := - (localizedCompletionEquivCompletion - (rationalCyclotomicArtinBaseAbv q) - (RayClass.adicAbv_isNontrivial - (rationalCyclotomicArtinPlace q)) - (rationalCyclotomicArtinExtension m q)).toEquiv - isometry_toFun := - Isometry.of_dist_eq fun _ _ => rfl } - -noncomputable local instance - rationalCyclotomicArtinLocalizedLocallyCompact - (m : ℕ+) (q : Nat.Primes) : - LocallyCompactSpace - (rationalCyclotomicArtinLocalizedField m q) := - ((rationalCyclotomicArtinLocalizedEquivCompletion m q).toHomeomorph.locallyCompactSpace_iff).2 - inferInstance - -noncomputable local instance - rationalCyclotomicArtinLocalizedIsUltrametricDist - (m : ℕ+) (q : Nat.Primes) : - IsUltrametricDist - (rationalCyclotomicArtinLocalizedField m q) := - localizedCompletionIsUltrametricDist - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinExtension m q) - (HeightOneSpectrum.isNonarchimedean_adicAbv - ℚ (rationalCyclotomicArtinPlace q)) - -noncomputable local instance rationalCyclotomicArtinLocalizedValued - (m : ℕ+) (q : Nat.Primes) : - Valued (rationalCyclotomicArtinLocalizedField m q) ℝ≥0 := - localizedCompletionFinitePlaceValued - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinExtension m q) - (HeightOneSpectrum.isNonarchimedean_adicAbv - ℚ (rationalCyclotomicArtinPlace q)) - -@[reducible] -noncomputable local instance - rationalCyclotomicArtinLocalizedValuativeRel - (m : ℕ+) (q : Nat.Primes) : - ValuativeRel (rationalCyclotomicArtinLocalizedField m q) := - localizedCompletionFinitePlaceValuativeRel - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinExtension m q) - (HeightOneSpectrum.isNonarchimedean_adicAbv - ℚ (rationalCyclotomicArtinPlace q)) - -noncomputable local instance - rationalCyclotomicArtinLocalizedValuationCompatible - (m : ℕ+) (q : Nat.Primes) : - (Valued.v : Valuation - (rationalCyclotomicArtinLocalizedField m q) ℝ≥0).Compatible := - Valuation.Compatible.ofValuation _ - -noncomputable local instance - rationalCyclotomicArtinLocalizedValuationHasExtension - (m : ℕ+) (q : Nat.Primes) : - Valuation.HasExtension - (ValuativeRel.valuation - (rationalCyclotomicArtinBaseAbv q).Completion) - (ValuativeRel.valuation - (rationalCyclotomicArtinLocalizedField m q)) := - localizedCompletionValuationHasExtension - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinExtension m q) - (HeightOneSpectrum.isNonarchimedean_adicAbv - ℚ (rationalCyclotomicArtinPlace q)) - -noncomputable local instance - rationalCyclotomicArtinLocalizedValuationIsNontrivial - (m : ℕ+) (q : Nat.Primes) : - (ValuativeRel.valuation - (rationalCyclotomicArtinLocalizedField m q)).IsNontrivial := - Valuation.IsNontrivial.of_hasExtension - (ValuativeRel.valuation - (rationalCyclotomicArtinBaseAbv q).Completion) - (ValuativeRel.valuation - (rationalCyclotomicArtinLocalizedField m q)) - -noncomputable local instance - rationalCyclotomicArtinLocalizedValuativeRelIsNontrivial - (m : ℕ+) (q : Nat.Primes) : - ValuativeRel.IsNontrivial - (rationalCyclotomicArtinLocalizedField m q) := - (ValuativeRel.isNontrivial_iff_isNontrivial - (ValuativeRel.valuation - (rationalCyclotomicArtinLocalizedField m q))).2 inferInstance - -noncomputable local instance - rationalCyclotomicArtinLocalizedIsValuativeTopology - (m : ℕ+) (q : Nat.Primes) : - IsValuativeTopology - (rationalCyclotomicArtinLocalizedField m q) := - isValuativeTopology_of_valued_ofValuation - (rationalCyclotomicArtinLocalizedField m q) ℝ≥0 - -noncomputable local instance - rationalCyclotomicArtinLocalizedIsNonarchimedeanLocalField - (m : ℕ+) (q : Nat.Primes) : - IsNonarchimedeanLocalField - (rationalCyclotomicArtinLocalizedField m q) := - { toIsValuativeTopology := inferInstance - toLocallyCompactSpace := inferInstance - toIsNontrivial := inferInstance } - -noncomputable local instance - rationalCyclotomicArtinLocalizedIntegerAlgebra - (m : ℕ+) (q : Nat.Primes) : - Algebra - 𝒪[(rationalCyclotomicArtinBaseAbv q).Completion] - (rationalCyclotomicArtinLocalizedField m q) := - Algebra.ofSubsemiring - 𝒪[(rationalCyclotomicArtinBaseAbv q).Completion] - -noncomputable local instance - rationalCyclotomicArtinLocalizedIsIntegralClosure - (m : ℕ+) (q : Nat.Primes) : - IsIntegralClosure - 𝒪[rationalCyclotomicArtinLocalizedField m q] - 𝒪[(rationalCyclotomicArtinBaseAbv q).Completion] - (rationalCyclotomicArtinLocalizedField m q) := - localizedCompletionIsIntegralClosureWithExtension - (rationalCyclotomicArtinBaseAbv q) - (rationalCyclotomicArtinExtension m q) - (RayClass.adicAbv_isNontrivial - (rationalCyclotomicArtinPlace q)) - (HeightOneSpectrum.isNonarchimedean_adicAbv - ℚ (rationalCyclotomicArtinPlace q)) - -noncomputable local instance - rationalCyclotomicArtinLocalizedIntegerModuleFinite - (m : ℕ+) (q : Nat.Primes) : - Module.Finite - 𝒪[(rationalCyclotomicArtinBaseAbv q).Completion] - 𝒪[rationalCyclotomicArtinLocalizedField m q] := - integerRing_moduleFinite_of_isIntegralClosure - (rationalCyclotomicArtinBaseAbv q).Completion - (rationalCyclotomicArtinLocalizedField m q) - -section RationalCyclotomicPrincipalPrime - -/-! ## Ramified prime-power transport - -This section reuses the canonical finite-place Artin tower above. In -particular, it introduces no parallel completion/localization instance tower. -/ - -noncomputable local instance - rationalCyclotomicPrincipalPrimeLevelIsCyclotomicExtension - (p : Nat.Primes) (n : ℕ) : - IsCyclotomicExtension {p.1 ^ (n + 1)} ℚ - (KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) := by - change - IsCyclotomicExtension - {(rationalCyclotomicPrincipalPrimeModulus p n : ℕ)} ℚ - (KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) - exact - KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension - (rationalCyclotomicPrincipalPrimeModulus p n) - -private abbrev rationalCyclotomicPrincipalPrimePlace - (p : Nat.Primes) : HeightOneSpectrum (𝓞 ℚ) := - rationalCyclotomicArtinPlace p - -private abbrev rationalCyclotomicPrincipalPrimeLevel - (m : ℕ+) := - rationalCyclotomicArtinLevel m - -private abbrev rationalCyclotomicPrincipalPrimeExtension - (m : ℕ+) (p : Nat.Primes) := - rationalCyclotomicArtinExtension m p - -/-- The `ℚ_[p]`-algebra structure on the localized cyclotomic completion, -transported through the canonical comparison with the `p`-adic completion. -/ -@[reducible] -noncomputable def - rationalCyclotomicPrincipalPrimeLocalizedPadicAlgebra - (m : ℕ+) (p : Nat.Primes) : - Algebra ℚ_[p.1] - (rationalCyclotomicLocalizedCompletion m - (RayClass.rationalPrime p)) := - ((algebraMap - (HeightOneSpectrum.adicAbv ℚ - (RayClass.rationalPrime p)).Completion - (rationalCyclotomicLocalizedCompletion m - (RayClass.rationalPrime p))).comp - (rationalFinitePlaceCompletionRingEquivPadic p).symm.toRingHom).toAlgebra - -@[reducible] -noncomputable local instance - rationalCyclotomicArtinLocalizedPadicAlgebra - (m : ℕ+) (p : Nat.Primes) : - Algebra ℚ_[p.1] (rationalCyclotomicArtinLocalizedField m p) := - rationalCyclotomicPrincipalPrimeLocalizedPadicAlgebra m p - -private noncomputable def rationalFinitePlaceCompletionAlgEquivPadic - (p : Nat.Primes) : - (rationalCyclotomicArtinBaseAbv p).Completion ≃ₐ[ℚ] ℚ_[p.1] := - AlgEquiv.ofRingEquiv - (f := rationalFinitePlaceCompletionRingEquivPadic p) - (rationalFinitePlaceCompletionRingEquivPadic_algebraMap p) - -noncomputable local instance - rationalCyclotomicArtinLocalizedPadicScalarTower - (m : ℕ+) (p : Nat.Primes) : - IsScalarTower ℚ ℚ_[p.1] - (rationalCyclotomicArtinLocalizedField m p) := by - constructor - intro r x y - simp only [Algebra.smul_def, map_mul, eq_ratCast, - map_ratCast, mul_assoc] - -private theorem rationalCyclotomicArtin_padic_algebraMap - (m : ℕ+) (p : Nat.Primes) : - algebraMap (rationalCyclotomicArtinBaseAbv p).Completion - (rationalCyclotomicArtinLocalizedField m p) = - (algebraMap ℚ_[p.1] - (rationalCyclotomicArtinLocalizedField m p)) ∘ - (rationalFinitePlaceCompletionAlgEquivPadic p) := by - funext a - change - algebraMap (rationalCyclotomicArtinBaseAbv p).Completion - (rationalCyclotomicArtinLocalizedField m p) a = - algebraMap (rationalCyclotomicArtinBaseAbv p).Completion - (rationalCyclotomicArtinLocalizedField m p) - ((rationalFinitePlaceCompletionRingEquivPadic p).symm - (rationalFinitePlaceCompletionRingEquivPadic p a)) - exact - congrArg - (algebraMap (rationalCyclotomicArtinBaseAbv p).Completion - (rationalCyclotomicArtinLocalizedField m p)) - ((rationalFinitePlaceCompletionRingEquivPadic p).symm_apply_apply a).symm - -private theorem rationalCyclotomicArtin_algebraAdjoin_restrictScalars - (m : ℕ+) (p : Nat.Primes) : - (Algebra.adjoin (rationalCyclotomicArtinBaseAbv p).Completion - ({rationalCyclotomicLocalizedPrimitiveRoot m - (rationalCyclotomicArtinPlace p)} : - Set (rationalCyclotomicArtinLocalizedField m p))).restrictScalars ℚ = - (Algebra.adjoin ℚ_[p.1] - ({rationalCyclotomicLocalizedPrimitiveRoot m - (rationalCyclotomicArtinPlace p)} : - Set (rationalCyclotomicArtinLocalizedField m p))).restrictScalars ℚ := by - exact - Algebra.restrictScalars_adjoin_of_algEquiv - (E := rationalCyclotomicArtinLocalizedField m p) - (rationalFinitePlaceCompletionAlgEquivPadic p) - (rationalCyclotomicArtin_padic_algebraMap m p) - ({rationalCyclotomicLocalizedPrimitiveRoot m - (rationalCyclotomicArtinPlace p)} : - Set (rationalCyclotomicArtinLocalizedField m p)) - -private theorem - rationalCyclotomicArtin_baseAlgebraAdjoin_restrict_eq_top - (m : ℕ+) (p : Nat.Primes) : - (Algebra.adjoin (rationalCyclotomicArtinBaseAbv p).Completion - ({rationalCyclotomicLocalizedPrimitiveRoot m - (rationalCyclotomicArtinPlace p)} : - Set (rationalCyclotomicArtinLocalizedField m p))).restrictScalars ℚ = - (⊤ : Subalgebra (rationalCyclotomicArtinBaseAbv p).Completion - (rationalCyclotomicArtinLocalizedField m p)).restrictScalars ℚ := by - have hRoot : IsPrimitiveRoot - (show rationalCyclotomicArtinLocalizedField m p from - rationalCyclotomicLocalizedPrimitiveRoot m - (rationalCyclotomicArtinPlace p)) - (m : ℕ) := - rationalCyclotomicLocalizedPrimitiveRoot_isPrimitiveRoot - m (rationalCyclotomicArtinPlace p) - have hTop : - Algebra.adjoin (rationalCyclotomicArtinBaseAbv p).Completion - ({rationalCyclotomicLocalizedPrimitiveRoot m - (rationalCyclotomicArtinPlace p)} : - Set (rationalCyclotomicArtinLocalizedField m p)) = ⊤ := - IsCyclotomicExtension.adjoin_primitive_root_eq_top - (A := (rationalCyclotomicArtinBaseAbv p).Completion) - (B := rationalCyclotomicArtinLocalizedField m p) hRoot - exact congrArg - (fun A : Subalgebra (rationalCyclotomicArtinBaseAbv p).Completion - (rationalCyclotomicArtinLocalizedField m p) => A.restrictScalars ℚ) - hTop - -private theorem rationalCyclotomicArtin_restrictScalars_top_base_eq_padic - (m : ℕ+) (p : Nat.Primes) : - (⊤ : Subalgebra (rationalCyclotomicArtinBaseAbv p).Completion - (rationalCyclotomicArtinLocalizedField m p)).restrictScalars ℚ = - (⊤ : Subalgebra ℚ_[p.1] - (rationalCyclotomicArtinLocalizedField m p)).restrictScalars ℚ := - (Subalgebra.restrictScalars_top ℚ).trans - (Subalgebra.restrictScalars_top ℚ).symm - -private theorem - rationalCyclotomicArtin_padicAlgebraAdjoin_restrict_eq_top - (m : ℕ+) (p : Nat.Primes) : - (Algebra.adjoin ℚ_[p.1] - ({rationalCyclotomicLocalizedPrimitiveRoot m - (rationalCyclotomicArtinPlace p)} : - Set (rationalCyclotomicArtinLocalizedField m p))).restrictScalars ℚ = - (⊤ : Subalgebra ℚ_[p.1] - (rationalCyclotomicArtinLocalizedField m p)).restrictScalars ℚ := by - exact - (rationalCyclotomicArtin_algebraAdjoin_restrictScalars m p).symm.trans - ((rationalCyclotomicArtin_baseAlgebraAdjoin_restrict_eq_top m p).trans - (rationalCyclotomicArtin_restrictScalars_top_base_eq_padic m p)) +noncomputable section -/-- The finite-dimensional instance for the standard multiplicative level, -named once so all consumers use the same proof term. -/ -theorem rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional - (p : Nat.Primes) (n : ℕ) : - FiniteDimensional ℚ_[p.1] - (standardLubinTateLevelField - (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n) := - standardLubinTateLevelField_finiteDimensional - (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n +namespace GlobalClassFieldTheory +namespace Reciprocity attribute [local instance] - rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional - -noncomputable local instance - rationalCyclotomicPrincipalPrimePadicLevelIsAbelianGalois - (p : Nat.Primes) (n : ℕ) : - IsAbelianGalois ℚ_[p.1] - (RationalCyclotomicPrincipalPrimePadicLevel p n) := - standardLubinTateLevelField_isAbelianGalois - (padicLocalField p.1) - (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n - -@[reducible] -noncomputable local instance rationalPrimeFactorCompletionPadicAlgebra - (p : Nat.Primes) : - Algebra (RationalCyclotomicPrincipalPrimeCompletion p) ℚ_[p.1] := - (rationalFinitePlaceCompletionRingEquivPadic p).toRingHom.toAlgebra - -/-- The genuine multiplicative Lubin--Tate level is generated by its -primitive `p ^ (n + 1)`-st root of unity. -/ -theorem padicMultiplicativePrimitiveRoot_adjoin_eq_top - (p : ℕ) [Fact p.Prime] (n : ℕ) : - let hπ := padicMultiplicativeLubinTateSeries_isUniformizer p - let T := standardLubinTateLevelField hπ n - Algebra.adjoin ℚ_[p] - ({padicMultiplicativePrimitiveRoot p n} : Set T) = - ⊤ := by - let hπ := padicMultiplicativeLubinTateSeries_isUniformizer p - let T := standardLubinTateLevelField hπ n - let ζ : T := padicMultiplicativePrimitiveRoot p n - let m := p ^ (n + 1) - let : NeZero m := - ⟨pow_ne_zero _ (Fact.out : Nat.Prime p).ne_zero⟩ - let : FiniteDimensional ℚ_[p] T := - standardLubinTateLevelField_finiteDimensional hπ n - have hζ : IsPrimitiveRoot ζ m := by - simpa only [ζ, m] using - padicMultiplicativePrimitiveRoot_isPrimitiveRoot p n - let A : IntermediateField ℚ_[p] T := - IntermediateField.adjoin ℚ_[p] {ζ} - let : IsCyclotomicExtension {m} ℚ_[p] A := - hζ.intermediateField_adjoin_isCyclotomicExtension ℚ_[p] - have hAfin : - Module.finrank ℚ_[p] A = Nat.totient m := by - exact - IsCyclotomicExtension.finrank A - (by - simpa only [m] using - padicCyclotomicPolynomial_irreducible_prime_pow_succ - p n) - have hTfin : - Module.finrank ℚ_[p] T = Nat.totient m := by - rw [standardLubinTateLevelField_finrank hπ n] - have hcard : - Nat.card (padicLocalField p).residueField = p := by - simpa [padicLocalField] using - padicCompleteDVF_residueField_card p - rw [hcard, Nat.totient_prime_pow - (Fact.out : Nat.Prime p) (Nat.succ_pos n)] - simp [Nat.mul_comm] - have hAeq : A = ⊤ := by - apply IntermediateField.eq_of_le_of_finrank_eq le_top - simpa using hAfin.trans hTfin.symm - calc - Algebra.adjoin ℚ_[p] {ζ} = A.toSubalgebra := by - exact - (IntermediateField.adjoin_toSubalgebra - ({ζ} : Set T)).symm - _ = (⊤ : IntermediateField ℚ_[p] T).toSubalgebra := - congrArg IntermediateField.toSubalgebra hAeq - _ = ⊤ := rfl - -/-- The standard multiplicative Lubin--Tate level is the actual -`p ^ (n + 1)`-cyclotomic extension of `ℚ_p`. -/ -theorem padicMultiplicativeLevel_isCyclotomicExtension - (p : ℕ) [Fact p.Prime] (n : ℕ) : - let hπ := padicMultiplicativeLubinTateSeries_isUniformizer p - let T := standardLubinTateLevelField hπ n - IsCyclotomicExtension {p ^ (n + 1)} ℚ_[p] T := by - let hπ := padicMultiplicativeLubinTateSeries_isUniformizer p - let T := standardLubinTateLevelField hπ n - exact - padic_isCyclotomicExtension_of_primitiveRoot_adjoin_eq_top - (padicMultiplicativePrimitiveRoot p n) - (padicMultiplicativePrimitiveRoot_isPrimitiveRoot p n) - (padicMultiplicativePrimitiveRoot_adjoin_eq_top p n) - -private theorem - rationalCyclotomicPrincipalPrimeLocalizedPrimitiveRoot_isPrimitiveRoot - (p : Nat.Primes) (n : ℕ) : - IsPrimitiveRoot - (rationalCyclotomicLocalizedPrimitiveRoot - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p)) - (p.1 ^ (n + 1)) := by - change - IsPrimitiveRoot - (rationalCyclotomicLocalizedPrimitiveRoot - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p)) - (rationalCyclotomicPrincipalPrimeModulus p n : ℕ) - exact - rationalCyclotomicLocalizedPrimitiveRoot_isPrimitiveRoot - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p) - -private theorem - rationalCyclotomicPrincipalPrimeLocalizedPrimitiveRoot_adjoin_eq_top - (p : Nat.Primes) (n : ℕ) : - Algebra.adjoin ℚ_[p.1] - ({rationalCyclotomicLocalizedPrimitiveRoot - (rationalCyclotomicPrincipalPrimeModulus p n) - (rationalCyclotomicArtinPlace p)} : - Set (rationalCyclotomicArtinLocalizedField - (rationalCyclotomicPrincipalPrimeModulus p n) p)) = - ⊤ := by - exact - (Subalgebra.restrictScalars_injective ℚ) - (rationalCyclotomicArtin_padicAlgebraAdjoin_restrict_eq_top - (rationalCyclotomicPrincipalPrimeModulus p n) p) - -private theorem - rationalCyclotomicPrincipalPrimeLocalizedLevel_isCyclotomicExtension - (p : Nat.Primes) (n : ℕ) : - IsCyclotomicExtension {p.1 ^ (n + 1)} ℚ_[p.1] - (rationalCyclotomicArtinLocalizedField - (rationalCyclotomicPrincipalPrimeModulus p n) p) := by - exact - padic_isCyclotomicExtension_of_primitiveRoot_adjoin_eq_top - (rationalCyclotomicLocalizedPrimitiveRoot - (rationalCyclotomicPrincipalPrimeModulus p n) - (rationalCyclotomicArtinPlace p)) - (rationalCyclotomicPrincipalPrimeLocalizedPrimitiveRoot_isPrimitiveRoot - p n) - (rationalCyclotomicPrincipalPrimeLocalizedPrimitiveRoot_adjoin_eq_top - p n) - -/-- The chosen localized global cyclotomic level, transported over the -completion equivalence, is the standard multiplicative Lubin--Tate level. -/ -noncomputable def rationalCyclotomicLocalizedCompletionPadicAlgEquiv - (p : Nat.Primes) (n : ℕ) : - rationalCyclotomicArtinLocalizedField - (rationalCyclotomicPrincipalPrimeModulus p n) p ≃ₐ[ℚ_[p.1]] - RationalCyclotomicPrincipalPrimePadicLevel p n := by - letI : IsCyclotomicExtension {p.1 ^ (n + 1)} ℚ_[p.1] - (rationalCyclotomicArtinLocalizedField - (rationalCyclotomicPrincipalPrimeModulus p n) p) := - rationalCyclotomicPrincipalPrimeLocalizedLevel_isCyclotomicExtension p n - letI : IsCyclotomicExtension {p.1 ^ (n + 1)} ℚ_[p.1] - (RationalCyclotomicPrincipalPrimePadicLevel p n) := - padicMultiplicativeLevel_isCyclotomicExtension p.1 n - exact - IsCyclotomicExtension.algEquiv - {p.1 ^ (n + 1)} ℚ_[p.1] - (rationalCyclotomicArtinLocalizedField - (rationalCyclotomicPrincipalPrimeModulus p n) p) - (RationalCyclotomicPrincipalPrimePadicLevel p n) - -/-! ## The ramified principal finite-place factor -/ - -private theorem - rationalCyclotomicPrincipalPrime_galEquivZMod_eq_of_action - (p : Nat.Primes) (n : ℕ) - (sigma : Gal( - rationalCyclotomicPrincipalPrimeLevel - (rationalCyclotomicPrincipalPrimeModulus p n) / ℚ)) - (a : (ZMod (p.1 ^ (n + 1)))ˣ) - (haction : - sigma (rationalCyclotomicLevelPrimitiveRoot - (rationalCyclotomicPrincipalPrimeModulus p n)) = - rationalCyclotomicLevelPrimitiveRoot - (rationalCyclotomicPrincipalPrimeModulus p n) ^ a.val.val) : - IsCyclotomicExtension.Rat.galEquivZMod - (p.1 ^ (n + 1)) - (rationalCyclotomicPrincipalPrimeLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) - (hK := - KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension - (rationalCyclotomicPrincipalPrimeModulus p n)) sigma = - a := by - let m := rationalCyclotomicPrincipalPrimeModulus p n - let L := rationalCyclotomicPrincipalPrimeLevel m - let zeta : L := rationalCyclotomicLevelPrimitiveRoot m - have hzeta : IsPrimitiveRoot zeta (p.1 ^ (n + 1)) := by - change - IsPrimitiveRoot - (rationalCyclotomicLevelPrimitiveRoot m) (m : ℕ) - exact rationalCyclotomicLevelPrimitiveRoot_isPrimitiveRoot m - change - IsCyclotomicExtension.Rat.galEquivZMod - (p.1 ^ (n + 1)) L - (hK := - KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension m) - sigma = a - let c := - IsCyclotomicExtension.Rat.galEquivZMod - (p.1 ^ (n + 1)) L - (hK := - KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension m) - sigma - have hc : - sigma zeta = zeta ^ c.val.val := - IsCyclotomicExtension.Rat.galEquivZMod_apply_of_pow_eq - (hK := - KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension m) - (p.1 ^ (n + 1)) L sigma hzeta.pow_eq_one - have hpowers : - zeta ^ c.val.val = zeta ^ a.val.val := - hc.symm.trans haction - rw [(hzeta.isOfFinOrder m.ne_zero).pow_inj_mod, - ← hzeta.eq_orderOf, - ← ZMod.natCast_eq_natCast_iff'] at hpowers - change - (c.val.val : ZMod (p.1 ^ (n + 1))) = - (a.val.val : ZMod (p.1 ^ (n + 1))) at hpowers - have hValues : c.val = a.val := by - calc - c.val = (c.val.val : ZMod (p.1 ^ (n + 1))) := - (ZMod.natCast_zmod_val c.val).symm - _ = (a.val.val : ZMod (p.1 ^ (n + 1))) := hpowers - _ = a.val := ZMod.natCast_zmod_val a.val - change c = a - apply Units.ext - exact hValues - -/-- The chosen finite-place Artin map factors through any extension identified -with the chosen one. -/ -theorem chosenFinitePlaceArtinMonoidHom_apply_factor_of_extension_eq - {K L : Type} - [Field K] [NumberField K] - [Field L] [Algebra K L] - [FiniteDimensional K L] [IsAbelianGalois K L] - (v : HeightOneSpectrum (𝓞 K)) - (w : AbsoluteValueExtension - (HeightOneSpectrum.adicAbv K v) L) - (hw : chosenFinitePlaceExtension (L := L) v = w) - (x : (v.adicCompletion K)ˣ) : - chosenFinitePlaceArtinMonoidHom - (K := K) (L := L) v x = - finitePlaceLocalToGlobalMonoidHom - (K := K) (L := L) v w - (finitePlaceLocalArtinMonoidHom - (K := K) (L := L) v w x) := by - subst w - exact - congrArg - (fun f : (v.adicCompletion K)ˣ →* (L ≃ₐ[K] L) => f x) - (finitePlaceArtinMonoidHomOfExtension_factor - (K := K) (L := L) v - (chosenFinitePlaceExtension (L := L) v)) - -private theorem - chosenFinitePlaceArtinMonoidHom_apply_factor_of_extension_eq_at - {K L : Type} - [Field K] [NumberField K] - [Field L] [Algebra K L] - [FiniteDimensional K L] [IsAbelianGalois K L] - (v : HeightOneSpectrum (𝓞 K)) - (w : AbsoluteValueExtension - (HeightOneSpectrum.adicAbv K v) L) - (hw : chosenFinitePlaceExtension (L := L) v = w) - (x : (v.adicCompletion K)ˣ) (z : L) : - chosenFinitePlaceArtinMonoidHom - (K := K) (L := L) v x z = - finitePlaceLocalToGlobalMonoidHom - (K := K) (L := L) v w - (finitePlaceLocalArtinMonoidHom - (K := K) (L := L) v w x) z := by - exact - congrArg (fun sigma : Gal(L / K) => sigma z) - (chosenFinitePlaceArtinMonoidHom_apply_factor_of_extension_eq - (K := K) (L := L) v w hw x) - -private theorem finitePlaceLocalToGlobalMonoidHom_apply_pow_of_localized_action - {K L : Type} - [Field K] [NumberField K] - [Field L] [Algebra K L] - [FiniteDimensional K L] [IsAbelianGalois K L] - (v : HeightOneSpectrum (𝓞 K)) - (w : AbsoluteValueExtension - (HeightOneSpectrum.adicAbv K v) L) - (sigma : - let vK := HeightOneSpectrum.adicAbv K v - let E := LocalizedCompletion vK w - letI : Algebra vK.Completion E := - finitePlaceLocalArtinLocalizedAlgebra v w - Gal(E / vK.Completion)) - (z : L) - (zLocal : - let vK := HeightOneSpectrum.adicAbv K v - LocalizedCompletion vK w) - (e : ℕ) - (hLocalization : - let vK := HeightOneSpectrum.adicAbv K v - let E := LocalizedCompletion vK w - letI : Algebra vK.Completion E := - finitePlaceLocalArtinLocalizedAlgebra v w - let eLoc : L →+* E := - AbsoluteValue.toAlgebraicLocalization vK w.1 w.2 - eLoc z = zLocal) - (hlocal : sigma zLocal = zLocal ^ e) : - finitePlaceLocalToGlobalMonoidHom - (K := K) (L := L) v w sigma z = z ^ e := by - let vK := HeightOneSpectrum.adicAbv K v - let hvK : vK.IsNontrivial := RayClass.adicAbv_isNontrivial v - let E := LocalizedCompletion vK w - let : Algebra vK.Completion E := - finitePlaceLocalArtinLocalizedAlgebra v w - let eD : absoluteValueDecompositionGroup K w.1 ≃* Gal(E / vK.Completion) := - decompositionGroupEquivAlgebraicLocalizationAut vK hvK w - let eLoc : L →+* E := - AbsoluteValue.toAlgebraicLocalization vK w.1 w.2 - let delta : absoluteValueDecompositionGroup K w.1 := eD.symm sigma - have hDecomposition : eD delta = sigma := eD.apply_symm_apply sigma - apply eLoc.injective - calc - eLoc (finitePlaceLocalToGlobalMonoidHom - (K := K) (L := L) v w sigma z) = - eD delta (eLoc z) := - (localizationRamificationGroups_decompositionGroupEquiv_toLocalization - vK hvK w delta z).symm - _ = sigma (eLoc z) := - congrArg (fun tau : Gal(E / vK.Completion) => tau (eLoc z)) - hDecomposition - _ = sigma zLocal := - congrArg (fun y : E => sigma y) hLocalization - _ = zLocal ^ e := hlocal - _ = (eLoc z) ^ e := - congrArg (fun y : E => y ^ e) hLocalization.symm - _ = eLoc (z ^ e) := (map_pow eLoc z e).symm - -private theorem map_primitiveRoot_eq_pow_of_eq_pow - {M : Type} [CommRing M] [IsDomain M] - (f : M →* M) (zeta rho : M) (order exponent : ℕ) - [NeZero order] - (hzeta : IsPrimitiveRoot zeta order) - (hrho : IsPrimitiveRoot rho order) - (hf : f zeta = zeta ^ exponent) : - f rho = rho ^ exponent := by - obtain ⟨j, -, hj⟩ := - hzeta.eq_pow_of_pow_eq_one hrho.pow_eq_one - calc - f rho = f (zeta ^ j) := congrArg f hj.symm - _ = (f zeta) ^ j := map_pow f zeta j - _ = (zeta ^ exponent) ^ j := congrArg (fun z => z ^ j) hf - _ = zeta ^ (exponent * j) := (pow_mul zeta exponent j).symm - _ = zeta ^ (j * exponent) := - congrArg (fun e : ℕ => zeta ^ e) (Nat.mul_comm exponent j) - _ = (zeta ^ j) ^ exponent := pow_mul zeta j exponent - _ = rho ^ exponent := congrArg (fun z => z ^ exponent) hj - -private theorem finitePlaceLocalArtinMonoidHom_apply_semilinear - {K L K' L' : Type} - [Field K] [NumberField K] - [Field L] [Algebra K L] - [hKLfinite : FiniteDimensional K L] [IsAbelianGalois K L] - [Field K'] [ValuativeRel K'] [TopologicalSpace K'] - [IsNonarchimedeanLocalField K'] - [Field L'] [Algebra K' L'] - [FiniteDimensional K' L'] [IsAbelianGalois K' L'] - (v : HeightOneSpectrum (𝓞 K)) - (w : AbsoluteValueExtension - (HeightOneSpectrum.adicAbv K v) L) - (eK : (HeightOneSpectrum.adicAbv K v).Completion ≃+* K') - (eL : LocalizedCompletion - (HeightOneSpectrum.adicAbv K v) w ≃+* L') - (hcomm : ∀ y : (HeightOneSpectrum.adicAbv K v).Completion, - eL (@algebraMap - (HeightOneSpectrum.adicAbv K v).Completion - (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) - _ _ (finitePlaceLocalArtinLocalizedAlgebra v w) y) = - algebraMap K' L' (eK y)) - (hExt : SemilinearValuationCompatible - (HeightOneSpectrum.adicAbv K v).Completion K' eK) - (x : (v.adicCompletion K)ˣ) - (z : LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) : - eL (finitePlaceLocalArtinMonoidHom - (K := K) (L := L) v w x z) = - LocalClassFieldTheory.abelianLocalArtinMonoidHom K' L' - (Units.map eK.toMonoidHom - (finitePlaceLocalArtinInput v x)) (eL z) := by - calc - eL (finitePlaceLocalArtinMonoidHom - (K := K) (L := L) v w x z) = - eL ((@LocalClassFieldTheory.abelianLocalArtinMonoidHom - (HeightOneSpectrum.adicAbv K v).Completion - (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) - (inferInstance : Field - (HeightOneSpectrum.adicAbv K v).Completion) - (inferInstance : Field - (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w)) - (finitePlaceLocalArtinLocalizedAlgebra v w) - (finitePlaceLocalArtinCompletionValuativeRel v) - (inferInstance : TopologicalSpace - (HeightOneSpectrum.adicAbv K v).Completion) - (finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v) - (finitePlaceLocalArtinFiniteDimensional v w) - (finitePlaceLocalArtinIsAbelianGalois v w hKLfinite) - (finitePlaceLocalArtinInput v x)) z) := - congrArg eL - (finitePlaceLocalArtinMonoidHom_apply_normalized_at - (K := K) (L := L) v w x z) - _ = LocalClassFieldTheory.abelianLocalArtinMonoidHom K' L' - (Units.map eK.toMonoidHom - (finitePlaceLocalArtinInput v x)) (eL z) := - @abelianLocalArtinMonoidHom_semilinear_action - (HeightOneSpectrum.adicAbv K v).Completion K' - (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) L' - (inferInstance : Field - (HeightOneSpectrum.adicAbv K v).Completion) - (finitePlaceLocalArtinCompletionValuativeRel v) - (inferInstance : TopologicalSpace - (HeightOneSpectrum.adicAbv K v).Completion) - (finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v) - (inferInstance : Field K') - (inferInstance : ValuativeRel K') - (inferInstance : TopologicalSpace K') - (inferInstance : IsNonarchimedeanLocalField K') - (inferInstance : Field - (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w)) - (inferInstance : Field L') - (finitePlaceLocalArtinLocalizedAlgebra v w) - (inferInstance : Algebra K' L') - (finitePlaceLocalArtinFiniteDimensional v w) - (finitePlaceLocalArtinIsAbelianGalois v w hKLfinite) - (inferInstance : FiniteDimensional K' L') - (inferInstance : IsAbelianGalois K' L') - eK eL hcomm hExt (finitePlaceLocalArtinInput v x) z - -/-- If a semilinearly identified target local Artin value is trivial, then the -corresponding global finite-place Artin value is trivial. This generic bridge -keeps concrete completion and localization instance towers out of downstream -proof terms. -/ -theorem finitePlaceArtinMonoidHomOfExtension_eq_one_of_semilinear - {K L K' L' : Type} - [Field K] [NumberField K] - [Field L] [Algebra K L] - [hKLfinite : FiniteDimensional K L] [IsAbelianGalois K L] - [Field K'] [ValuativeRel K'] [TopologicalSpace K'] - [IsNonarchimedeanLocalField K'] - [Field L'] [Algebra K' L'] - [FiniteDimensional K' L'] [IsAbelianGalois K' L'] - (v : HeightOneSpectrum (𝓞 K)) - (w : AbsoluteValueExtension - (HeightOneSpectrum.adicAbv K v) L) - (eK : (HeightOneSpectrum.adicAbv K v).Completion ≃+* K') - (eL : LocalizedCompletion - (HeightOneSpectrum.adicAbv K v) w ≃+* L') - (hcomm : ∀ y : (HeightOneSpectrum.adicAbv K v).Completion, - eL (@algebraMap - (HeightOneSpectrum.adicAbv K v).Completion - (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) - _ _ (finitePlaceLocalArtinLocalizedAlgebra v w) y) = - algebraMap K' L' (eK y)) - (hExt : SemilinearValuationCompatible - (HeightOneSpectrum.adicAbv K v).Completion K' eK) - (x : (v.adicCompletion K)ˣ) - (htrivial : - LocalClassFieldTheory.abelianLocalArtinMonoidHom K' L' - (Units.map eK.toMonoidHom - (finitePlaceLocalArtinInput v x)) = 1) : - finitePlaceArtinMonoidHomOfExtension - (K := K) (L := L) v w x = 1 := by - rw [finitePlaceArtinMonoidHomOfExtension_factor, - MonoidHom.comp_apply] - have hlocal : - finitePlaceLocalArtinMonoidHom - (K := K) (L := L) v w x = 1 := by - rw [finitePlaceLocalArtinMonoidHom_apply_normalized] - exact - @abelianLocalArtinMonoidHom_eq_one_of_semilinear - (HeightOneSpectrum.adicAbv K v).Completion K' - (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) L' - (inferInstance : Field - (HeightOneSpectrum.adicAbv K v).Completion) - (finitePlaceLocalArtinCompletionValuativeRel v) - (inferInstance : TopologicalSpace - (HeightOneSpectrum.adicAbv K v).Completion) - (finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v) - (inferInstance : Field K') - (inferInstance : ValuativeRel K') - (inferInstance : TopologicalSpace K') - (inferInstance : IsNonarchimedeanLocalField K') - (inferInstance : Field - (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w)) - (inferInstance : Field L') - (finitePlaceLocalArtinLocalizedAlgebra v w) - (inferInstance : Algebra K' L') - (finitePlaceLocalArtinFiniteDimensional v w) - (finitePlaceLocalArtinIsAbelianGalois v w hKLfinite) - (inferInstance : FiniteDimensional K' L') - (inferInstance : IsAbelianGalois K' L') - eK eL hcomm hExt (finitePlaceLocalArtinInput v x) htrivial - rw [hlocal, map_one] - -private noncomputable def rationalCyclotomicPrincipalPrimeLocalizedRoot - (p : Nat.Primes) (n : ℕ) : - rationalCyclotomicArtinLocalizedField - (rationalCyclotomicPrincipalPrimeModulus p n) p := - rationalCyclotomicLocalizedPrimitiveRoot - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p) - -private noncomputable def rationalCyclotomicPrincipalPrimeResidueUnit - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - (ZMod (p.1 ^ (n + 1)))ˣ := - Units.map - (PadicInt.toZModPow (p := p.1) (n + 1)).toMonoidHom - (padicIntUnitOfRat p - (rationalPrimeUnit x p : ℚ) - (rationalPrimeUnit x p).ne_zero - (padicValRat_rationalPrimeUnit x p)) - -private theorem rationalCyclotomicPrincipalPrime_localizedBase_commutes - (p : Nat.Primes) (n : ℕ) - (y : (rationalCyclotomicArtinBaseAbv p).Completion) : - rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - (algebraMap (rationalCyclotomicArtinBaseAbv p).Completion - (rationalCyclotomicArtinLocalizedField - (rationalCyclotomicPrincipalPrimeModulus p n) p) y) = - algebraMap ℚ_[p.1] - (RationalCyclotomicPrincipalPrimePadicLevel p n) - (rationalFinitePlaceCompletionRingEquivPadic p y) := by - let m := rationalCyclotomicPrincipalPrimeModulus p n - let E := rationalCyclotomicArtinLocalizedField m p - let eL := rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - have hy : - algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E y = - algebraMap ℚ_[p.1] E - (rationalFinitePlaceCompletionRingEquivPadic p y) := by - change - algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E y = - algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E - ((rationalFinitePlaceCompletionRingEquivPadic p).symm - (rationalFinitePlaceCompletionRingEquivPadic p y)) - exact - (congrArg - (algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E) - ((rationalFinitePlaceCompletionRingEquivPadic p).symm_apply_apply y)).symm - calc - eL (algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E y) = - eL (algebraMap ℚ_[p.1] E - (rationalFinitePlaceCompletionRingEquivPadic p y)) := - congrArg eL hy - _ = algebraMap ℚ_[p.1] - (RationalCyclotomicPrincipalPrimePadicLevel p n) - (rationalFinitePlaceCompletionRingEquivPadic p y) := - eL.commutes (rationalFinitePlaceCompletionRingEquivPadic p y) - -/-- Specialized ramified-prime bridge from the standard `p`-adic Artin value -to the canonical global finite-place Artin value. The localized completion -and all of its dependent instances remain private to this provider. -/ -theorem - rationalCyclotomicPrincipalPrime_finitePlaceArtinOfExtension_eq_one_of_padic - (p : Nat.Primes) (n : ℕ) - (x : ((RayClass.rationalPrime p).adicCompletion ℚ)ˣ) - (htrivial : - abelianLocalArtinMonoidHom ℚ_[p.1] - (RationalCyclotomicPrincipalPrimePadicLevel p n) - (Units.map - (rationalFinitePlaceCompletionRingEquivPadic p).toMonoidHom - (finitePlaceLocalArtinInput (RayClass.rationalPrime p) x)) = 1) : - finitePlaceArtinMonoidHomOfExtension - (K := ℚ) - (L := KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) - (RayClass.rationalPrime p) - (rationalCyclotomicChosenFinitePlaceExtension - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p)) x = 1 := by - exact - finitePlaceArtinMonoidHomOfExtension_eq_one_of_semilinear - (K := ℚ) - (L := KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) - (K' := ℚ_[p.1]) - (L' := RationalCyclotomicPrincipalPrimePadicLevel p n) - (RayClass.rationalPrime p) - (rationalCyclotomicChosenFinitePlaceExtension - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p)) - (rationalFinitePlaceCompletionRingEquivPadic p) - (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n).toRingEquiv - (rationalCyclotomicPrincipalPrime_localizedBase_commutes p n) - (rationalFinitePlaceCompletionRingEquivPadic_semilinearValuationCompatible p) - x htrivial - -private theorem - padicMultiplicativePrimitiveRoot_rationalPrimeUnitParameterGaloisAction - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - standardLubinTateUnitParameterEquivGal - (padicLocalField p.1) - (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n - (standardLubinTateUnitParameterClass - (padicLocalField p.1) n - (rationalPrimeUnitValuationSubringUnit x p)) - (padicMultiplicativePrimitiveRoot p.1 n) = - padicMultiplicativePrimitiveRoot p.1 n ^ - (PadicInt.toZModPow (p := p.1) (n + 1) - (padicIntUnitOfRat p - (rationalPrimeUnit x p : ℚ) - (rationalPrimeUnit x p).ne_zero - (padicValRat_rationalPrimeUnit x p) : ℤ_[p.1])).val := by - let uZ : ℤ_[p.1]ˣ := - padicIntUnitOfRat p - (rationalPrimeUnit x p : ℚ) - (rationalPrimeUnit x p).ne_zero - (padicValRat_rationalPrimeUnit x p) - let u : (padicLocalField p.1).valuationSubringˣ := - Units.map (padicIntEquivValuationSubring p.1).toMonoidHom uZ - have huRational : - rationalPrimeUnitValuationSubringUnit x p = u := by - rfl - have huPreimage : - (padicIntEquivValuationSubring p.1).symm - ((u : (padicLocalField p.1).valuationSubringˣ) : - (padicLocalField p.1).valuationSubring) = - (uZ : ℤ_[p.1]) := by - change - (padicIntEquivValuationSubring p.1).symm - (padicIntEquivValuationSubring p.1 (uZ : ℤ_[p.1])) = - (uZ : ℤ_[p.1]) - exact - (padicIntEquivValuationSubring p.1).symm_apply_apply - (uZ : ℤ_[p.1]) - have hAction := - padicMultiplicativePrimitiveRoot_unitParameterGaloisAction - p.1 n u - rw [huPreimage] at hAction - rw [huRational] - exact hAction - -private noncomputable def rationalCyclotomicPrincipalPrimePadicTargetArtin - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - Gal(RationalCyclotomicPrincipalPrimePadicLevel p n / ℚ_[p.1]) := - @LocalClassFieldTheory.abelianLocalArtinMonoidHom - ℚ_[p.1] (RationalCyclotomicPrincipalPrimePadicLevel p n) - (inferInstance : Field ℚ_[p.1]) - (inferInstance : Field - (RationalCyclotomicPrincipalPrimePadicLevel p n)) - (inferInstance : Algebra ℚ_[p.1] - (RationalCyclotomicPrincipalPrimePadicLevel p n)) - (inferInstance : ValuativeRel ℚ_[p.1]) - (inferInstance : TopologicalSpace ℚ_[p.1]) - (inferInstance : IsNonarchimedeanLocalField ℚ_[p.1]) - (rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional p n) - (standardLubinTateLevelField_isAbelianGalois - (padicLocalField p.1) - (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n) - (Units.map - (rationalFinitePlaceCompletionRingEquivPadic p).toMonoidHom - (rationalPrincipalFinitePlaceInput x p)) - -private noncomputable def - rationalCyclotomicPrincipalPrimePadicUnitParameterArtin - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - Gal(RationalCyclotomicPrincipalPrimePadicLevel p n / ℚ_[p.1]) := - standardLubinTateUnitParameterEquivGal - (padicLocalField p.1) - (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n - (standardLubinTateUnitParameterClass - (padicLocalField p.1) n - (rationalPrimeUnitValuationSubringUnit x p)) - -private theorem - rationalCyclotomicPrincipalPrime_padicTargetArtin_eq_unitParameter - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - rationalCyclotomicPrincipalPrimePadicTargetArtin p n x = - rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x := by - let T := RationalCyclotomicPrincipalPrimePadicLevel p n - let eK := rationalFinitePlaceCompletionRingEquivPadic p - let : FiniteDimensional ℚ_[p.1] T := - rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional p n - let hpi := padicMultiplicativeLubinTateSeries_isUniformizer p.1 - let : IsAbelianGalois ℚ_[p.1] T := - standardLubinTateLevelField_isAbelianGalois - (padicLocalField p.1) hpi n - have hsource : - Units.map eK.toMonoidHom (rationalPrincipalFinitePlaceInput x p) = - Units.map (algebraMap ℚ ℚ_[p.1]).toMonoidHom x := by - rw [rationalPrincipalFinitePlaceInput_eq_algebraMap] - apply Units.ext - exact rationalFinitePlaceCompletionRingEquivPadic_algebraMap p (x : ℚ) - change - LocalClassFieldTheory.abelianLocalArtinMonoidHom ℚ_[p.1] T - (Units.map eK.toMonoidHom - (rationalPrincipalFinitePlaceInput x p)) = - standardLubinTateUnitParameterEquivGal - (padicLocalField p.1) hpi n - (standardLubinTateUnitParameterClass - (padicLocalField p.1) n - (rationalPrimeUnitValuationSubringUnit x p)) - rw [hsource] - rw [ - padicMultiplicativeAbelianLocalArtin_eq_uniformizerUnitPart, - rationalPadicFieldUnit_uniformizerUnitPart, - padicMultiplicativeAbelianLocalArtin_eq_unitParameter] - -private theorem - rationalCyclotomicPrincipalPrime_padicArtin_action_eq_unitParameter - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - (@LocalClassFieldTheory.abelianLocalArtinMonoidHom - ℚ_[p.1] (RationalCyclotomicPrincipalPrimePadicLevel p n) - (inferInstance : Field ℚ_[p.1]) - (inferInstance : Field - (RationalCyclotomicPrincipalPrimePadicLevel p n)) - (inferInstance : Algebra ℚ_[p.1] - (RationalCyclotomicPrincipalPrimePadicLevel p n)) - (inferInstance : ValuativeRel ℚ_[p.1]) - (inferInstance : TopologicalSpace ℚ_[p.1]) - (inferInstance : IsNonarchimedeanLocalField ℚ_[p.1]) - (rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional p n) - (standardLubinTateLevelField_isAbelianGalois - (padicLocalField p.1) - (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n) - (Units.map - (rationalFinitePlaceCompletionRingEquivPadic p).toMonoidHom - (finitePlaceLocalArtinInput - (K := ℚ) (RayClass.rationalPrime p) - (IdeleGroup.finiteComponent - (RayClass.rationalPrime p) - (IdeleGroup.principalIdele ℚ x))))) - ((rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n).toRingEquiv - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) = - rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x - (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) := by - let eK := rationalFinitePlaceCompletionRingEquivPadic p - have hInput : - finitePlaceLocalArtinInput - (K := ℚ) (RayClass.rationalPrime p) - (IdeleGroup.finiteComponent - (RayClass.rationalPrime p) - (IdeleGroup.principalIdele ℚ x)) = - rationalPrincipalFinitePlaceInput x p := by - rfl - have hMapped : - Units.map eK.toMonoidHom - (finitePlaceLocalArtinInput - (K := ℚ) (RayClass.rationalPrime p) - (IdeleGroup.finiteComponent - (RayClass.rationalPrime p) - (IdeleGroup.principalIdele ℚ x))) = - Units.map eK.toMonoidHom - (rationalPrincipalFinitePlaceInput x p) := - congrArg (Units.map eK.toMonoidHom) hInput - calc - _ = rationalCyclotomicPrincipalPrimePadicTargetArtin p n x - (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) := by - exact congrArg - (fun uQp => - (@LocalClassFieldTheory.abelianLocalArtinMonoidHom - ℚ_[p.1] (RationalCyclotomicPrincipalPrimePadicLevel p n) - (inferInstance : Field ℚ_[p.1]) - (inferInstance : Field - (RationalCyclotomicPrincipalPrimePadicLevel p n)) - (inferInstance : Algebra ℚ_[p.1] - (RationalCyclotomicPrincipalPrimePadicLevel p n)) - (inferInstance : ValuativeRel ℚ_[p.1]) - (inferInstance : TopologicalSpace ℚ_[p.1]) - (inferInstance : IsNonarchimedeanLocalField ℚ_[p.1]) - (rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional p n) - (standardLubinTateLevelField_isAbelianGalois - (padicLocalField p.1) - (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n) - uQp) - (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n))) - hMapped - _ = rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x - (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) := - congrArg - (fun tau => tau - (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n))) - (rationalCyclotomicPrincipalPrime_padicTargetArtin_eq_unitParameter - p n x) - -private theorem - rationalCyclotomicPrincipalPrime_padicUnitParameterArtin_action - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x - (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) = - (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) ^ - (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val := by - let m := rationalCyclotomicPrincipalPrimeModulus p n - let E := rationalCyclotomicArtinLocalizedField m p - let T := RationalCyclotomicPrincipalPrimePadicLevel p n - let eL : E ≃ₐ[ℚ_[p.1]] T := - rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - let zetaE : E := rationalCyclotomicPrincipalPrimeLocalizedRoot p n - let tau : Gal(T / ℚ_[p.1]) := - rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x - let a := rationalCyclotomicPrincipalPrimeResidueUnit p n x - let zetaT : T := padicMultiplicativePrimitiveRoot p.1 n - have hzetaE : IsPrimitiveRoot zetaE (p.1 ^ (n + 1)) := by - change - IsPrimitiveRoot - (rationalCyclotomicLocalizedPrimitiveRoot m - (RayClass.rationalPrime p)) (m : ℕ) - exact - rationalCyclotomicLocalizedPrimitiveRoot_isPrimitiveRoot - m (RayClass.rationalPrime p) - have hrho : IsPrimitiveRoot (eL zetaE) (p.1 ^ (n + 1)) := - hzetaE.map_of_injective eL.injective - have hzetaT : IsPrimitiveRoot zetaT (p.1 ^ (n + 1)) := - padicMultiplicativePrimitiveRoot_isPrimitiveRoot p.1 n - have htauZetaT : tau zetaT = zetaT ^ a.val.val := - padicMultiplicativePrimitiveRoot_rationalPrimeUnitParameterGaloisAction - p n x - exact - map_primitiveRoot_eq_pow_of_eq_pow - tau.toMonoidHom zetaT (eL zetaE) - (p.1 ^ (n + 1)) a.val.val hzetaT hrho htauZetaT - -private theorem rationalCyclotomicPrincipalPrime_localArtin_action - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - finitePlaceLocalArtinMonoidHom - (K := ℚ) - (L := KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) - (RayClass.rationalPrime p) - (rationalCyclotomicChosenFinitePlaceExtension - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p)) - (IdeleGroup.finiteComponent - (RayClass.rationalPrime p) - (IdeleGroup.principalIdele ℚ x)) - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n) = - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n) ^ - (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val := by - let eL := rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n - apply eL.injective - calc - _ = _ := - finitePlaceLocalArtinMonoidHom_apply_semilinear - (K := ℚ) - (L := KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) - (K' := ℚ_[p.1]) - (L' := RationalCyclotomicPrincipalPrimePadicLevel p n) - (RayClass.rationalPrime p) - (rationalCyclotomicChosenFinitePlaceExtension - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p)) - (rationalFinitePlaceCompletionRingEquivPadic p) - eL.toRingEquiv - (rationalCyclotomicPrincipalPrime_localizedBase_commutes p n) - (rationalFinitePlaceCompletionRingEquivPadic_semilinearValuationCompatible - p) - (IdeleGroup.finiteComponent - (RayClass.rationalPrime p) - (IdeleGroup.principalIdele ℚ x)) - (rationalCyclotomicPrincipalPrimeLocalizedRoot p n) - _ = rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x - (eL (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) := - rationalCyclotomicPrincipalPrime_padicArtin_action_eq_unitParameter - p n x - _ = (eL (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) ^ - (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val := - rationalCyclotomicPrincipalPrime_padicUnitParameterArtin_action p n x - _ = eL ((rationalCyclotomicPrincipalPrimeLocalizedRoot p n) ^ - (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val) := - (map_pow eL (rationalCyclotomicPrincipalPrimeLocalizedRoot p n) - (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val).symm - -/-- The finite-place Artin symbol at the ramified prime, in its canonical -local-to-global factored form. Keeping this specialization opaque prevents its -dependent local/global instance tower from being unfolded downstream. -/ -noncomputable def rationalCyclotomicPrincipalPrimeChosenArtin - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n) ≃ₐ[ℚ] - KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n) := - finitePlaceLocalToGlobalMonoidHom - (K := ℚ) - (L := KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) - (RayClass.rationalPrime p) - (rationalCyclotomicChosenFinitePlaceExtension - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p)) - (finitePlaceLocalArtinMonoidHom - (K := ℚ) - (L := KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) - (RayClass.rationalPrime p) - (rationalCyclotomicChosenFinitePlaceExtension - (rationalCyclotomicPrincipalPrimeModulus p n) - (RayClass.rationalPrime p)) - (IdeleGroup.finiteComponent - (RayClass.rationalPrime p) - (IdeleGroup.principalIdele ℚ x))) - -/-- At the ramified prime, the cyclotomic character of the chosen finite-place -Artin symbol is the direct reduction of the rational `p`-adic unit. -/ -theorem galEquivZMod_chosenFinitePlaceArtinMonoidHom_principal_at_prime - (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : - IsCyclotomicExtension.Rat.galEquivZMod - (p.1 ^ (n + 1)) - (KummerTheory.rationalCyclotomicLevel - (rationalCyclotomicPrincipalPrimeModulus p n)) - (hK := - KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension - (rationalCyclotomicPrincipalPrimeModulus p n)) - (rationalCyclotomicPrincipalPrimeChosenArtin p n x) = - Units.map - (PadicInt.toZModPow (p := p.1) (n + 1)).toMonoidHom - (padicIntUnitOfRat p - (rationalPrimeUnit x p : ℚ) - (rationalPrimeUnit x p).ne_zero - (padicValRat_rationalPrimeUnit x p)) := by - change _ = rationalCyclotomicPrincipalPrimeResidueUnit p n x - apply rationalCyclotomicPrincipalPrime_galEquivZMod_eq_of_action p n - simp only [rationalCyclotomicPrincipalPrimeChosenArtin] - apply finitePlaceLocalToGlobalMonoidHom_apply_pow_of_localized_action - (zLocal := rationalCyclotomicPrincipalPrimeLocalizedRoot p n) - · rfl - · exact rationalCyclotomicPrincipalPrime_localArtin_action p n x - -end RationalCyclotomicPrincipalPrime + rationalFinitePlaceCompletionRatAlgebra + primeFact + levelNeZero + rationalCyclotomicLevelFiniteDimensional + rationalCyclotomicLevelIsAbelianGalois + rationalFinitePlaceBaseNontriviallyNormedField + rationalFinitePlaceBaseLocallyCompactSpace + rationalFinitePlaceBaseIsUltrametricDist + rationalFinitePlaceBaseValued + rationalFinitePlaceBaseValuativeRel + rationalFinitePlaceBaseValuationIsNontrivial + rationalFinitePlaceBaseValuationCompatible + rationalFinitePlaceBaseValuativeRelIsNontrivial + rationalFinitePlaceBaseIsValuativeTopology + rationalFinitePlaceBaseIsNonarchimedeanLocalField + rationalCyclotomicArtinExtensionAlgebra + rationalCyclotomicArtinExtensionSMul + rationalCyclotomicArtinCompletionAlgebra + rationalCyclotomicArtinLocalizedAlgebra + rationalCyclotomicArtinLocalizedGlobalAlgebra + rationalCyclotomicArtinLocalizedGlobalSMul + rationalCyclotomicArtinLocalizedScalarTower + rationalCyclotomicArtinLocalizedFiniteDimensional + rationalCyclotomicArtinLocalizedIsAbelianGalois + rationalCyclotomicArtinLocalizedIsSeparable + rationalCyclotomicArtinLocalizedIsCyclotomic + rationalCyclotomicArtinExtensionFiniteDimensional + rationalCyclotomicArtinExtensionContinuousSMul + rationalCyclotomicArtinExtensionLocallyCompact + rationalCyclotomicArtinLocalizedLocallyCompact + rationalCyclotomicArtinLocalizedIsUltrametricDist + rationalCyclotomicArtinLocalizedValued + rationalCyclotomicArtinLocalizedValuativeRel + rationalCyclotomicArtinLocalizedValuationCompatible + rationalCyclotomicArtinLocalizedValuationHasExtension + rationalCyclotomicArtinLocalizedValuationIsNontrivial + rationalCyclotomicArtinLocalizedValuativeRelIsNontrivial + rationalCyclotomicArtinLocalizedIsValuativeTopology + rationalCyclotomicArtinLocalizedIsNonarchimedeanLocalField + rationalCyclotomicArtinLocalizedIntegerAlgebra + rationalCyclotomicArtinLocalizedIsIntegralClosure + rationalCyclotomicArtinLocalizedIntegerModuleFinite private theorem rationalCyclotomicArtinUnramified (m : ℕ+) (q : Nat.Primes) @@ -2440,8 +178,9 @@ noncomputable def rationalCyclotomicArtinLocalExponent (rationalCyclotomicArtinBaseAbv q).Completion (Additive.ofMul (rationalCyclotomicArtinLocalInput q x)) -/-- The chosen finite-place Artin value in a rational cyclotomic level, with -the completion and Galois instance arguments frozen at the provider boundary. -/ + +/-- The Galois automorphism of the rational cyclotomic extension at level `m` +assigned to the nonzero `q`-adic input by the chosen finite-place Artin map. -/ noncomputable def rationalCyclotomicChosenFinitePlaceArtinValue (m : ℕ+) (q : Nat.Primes) (x : ((RayClass.rationalPrime q).adicCompletion ℚ)ˣ) : @@ -2484,7 +223,12 @@ private theorem rationalCyclotomicArtinLocalArtin_eq (rationalCyclotomicArtinLevel m))) (finitePlaceLocalArtinInput (K := ℚ) (rationalCyclotomicArtinPlace q) x) := by - rfl + unfold rationalCyclotomicArtinLocalArtin + have h := finitePlaceLocalArtinMonoidHom_apply_normalized + (K := ℚ) (L := rationalCyclotomicArtinLevel m) + (rationalCyclotomicArtinPlace q) + (rationalCyclotomicArtinExtension m q) x + with_reducible exact h private theorem rationalCyclotomicChosenArithmeticFrobenius_eq_lift (m : ℕ+) (q : Nat.Primes) diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinAction.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinAction.lean new file mode 100644 index 0000000..fd14a9f --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinAction.lean @@ -0,0 +1,438 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicFinitePlaceArtinTransport + + +set_option autoImplicit false + +open scoped Classical NNReal NumberField ValuativeRel +open NumberField IsDedekindDomain +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open LocalClassFieldTheory +open LocalFieldTheory +open LocalFieldTheory.DiscreteValuationField +open LocalFieldTheory.DiscreteValuationField.Examples.Qp +open LubinTate + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +section RationalCyclotomicPrincipalPrime + +attribute [local instance] + rationalFinitePlaceCompletionRatAlgebra + primeFact + levelNeZero + rationalCyclotomicLevelFiniteDimensional + rationalCyclotomicLevelIsAbelianGalois + rationalFinitePlaceBaseNontriviallyNormedField + rationalFinitePlaceBaseLocallyCompactSpace + rationalFinitePlaceBaseIsUltrametricDist + rationalFinitePlaceBaseValued + rationalFinitePlaceBaseValuativeRel + rationalFinitePlaceBaseValuationIsNontrivial + rationalFinitePlaceBaseValuationCompatible + rationalFinitePlaceBaseValuativeRelIsNontrivial + rationalFinitePlaceBaseIsValuativeTopology + rationalFinitePlaceBaseIsNonarchimedeanLocalField + rationalCyclotomicArtinExtensionAlgebra + rationalCyclotomicArtinExtensionSMul + rationalCyclotomicArtinCompletionAlgebra + rationalCyclotomicArtinLocalizedAlgebra + rationalCyclotomicArtinLocalizedGlobalAlgebra + rationalCyclotomicArtinLocalizedGlobalSMul + rationalCyclotomicArtinLocalizedScalarTower + rationalCyclotomicArtinLocalizedFiniteDimensional + rationalCyclotomicArtinLocalizedIsAbelianGalois + rationalCyclotomicArtinLocalizedIsSeparable + rationalCyclotomicArtinLocalizedIsCyclotomic + rationalCyclotomicArtinExtensionFiniteDimensional + rationalCyclotomicArtinExtensionContinuousSMul + rationalCyclotomicArtinExtensionLocallyCompact + rationalCyclotomicArtinLocalizedLocallyCompact + rationalCyclotomicArtinLocalizedIsUltrametricDist + rationalCyclotomicArtinLocalizedValued + rationalCyclotomicArtinLocalizedValuativeRel + rationalCyclotomicArtinLocalizedValuationCompatible + rationalCyclotomicArtinLocalizedValuationHasExtension + rationalCyclotomicArtinLocalizedValuationIsNontrivial + rationalCyclotomicArtinLocalizedValuativeRelIsNontrivial + rationalCyclotomicArtinLocalizedIsValuativeTopology + rationalCyclotomicArtinLocalizedIsNonarchimedeanLocalField + rationalCyclotomicArtinLocalizedIntegerAlgebra + rationalCyclotomicArtinLocalizedIsIntegralClosure + rationalCyclotomicArtinLocalizedIntegerModuleFinite + rationalCyclotomicPrincipalPrimeLevelIsCyclotomicExtension + rationalCyclotomicArtinLocalizedPadicAlgebra + rationalCyclotomicArtinLocalizedPadicScalarTower + rationalCyclotomicPrincipalPrimePadicLevelIsAbelianGalois + rationalPrimeFactorCompletionPadicAlgebra + rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional + +/-- If a semilinearly identified target local Artin value is trivial, then the +corresponding global finite-place Artin value is trivial. This generic bridge +keeps concrete completion and localization instance towers out of downstream +proof terms. -/ +theorem finitePlaceArtinMonoidHomOfExtension_eq_one_of_semilinear + {K L K' L' : Type} + [Field K] [NumberField K] + [Field L] [Algebra K L] + [hKLfinite : FiniteDimensional K L] [IsAbelianGalois K L] + [Field K'] [ValuativeRel K'] [TopologicalSpace K'] + [IsNonarchimedeanLocalField K'] + [Field L'] [Algebra K' L'] + [FiniteDimensional K' L'] [IsAbelianGalois K' L'] + (v : HeightOneSpectrum (𝓞 K)) + (w : AbsoluteValueExtension + (HeightOneSpectrum.adicAbv K v) L) + (eK : (HeightOneSpectrum.adicAbv K v).Completion ≃+* K') + (eL : LocalizedCompletion + (HeightOneSpectrum.adicAbv K v) w ≃+* L') + (hcomm : ∀ y : (HeightOneSpectrum.adicAbv K v).Completion, + eL (@algebraMap + (HeightOneSpectrum.adicAbv K v).Completion + (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) + _ _ (finitePlaceLocalArtinLocalizedAlgebra v w) y) = + algebraMap K' L' (eK y)) + (hExt : SemilinearValuationCompatible + (HeightOneSpectrum.adicAbv K v).Completion K' eK) + (x : (v.adicCompletion K)ˣ) + (htrivial : + LocalClassFieldTheory.abelianLocalArtinMonoidHom K' L' + (Units.map eK.toMonoidHom + (finitePlaceLocalArtinInput v x)) = 1) : + finitePlaceArtinMonoidHomOfExtension + (K := K) (L := L) v w x = 1 := by + rw [finitePlaceArtinMonoidHomOfExtension_factor, + MonoidHom.comp_apply] + have hlocal : + finitePlaceLocalArtinMonoidHom + (K := K) (L := L) v w x = 1 := by + rw [finitePlaceLocalArtinMonoidHom_apply_normalized] + exact + @abelianLocalArtinMonoidHom_eq_one_of_semilinear + (HeightOneSpectrum.adicAbv K v).Completion K' + (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) L' + (inferInstance : Field + (HeightOneSpectrum.adicAbv K v).Completion) + (finitePlaceLocalArtinCompletionValuativeRel v) + (inferInstance : TopologicalSpace + (HeightOneSpectrum.adicAbv K v).Completion) + (finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v) + (inferInstance : Field K') + (inferInstance : ValuativeRel K') + (inferInstance : TopologicalSpace K') + (inferInstance : IsNonarchimedeanLocalField K') + (inferInstance : Field + (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w)) + (inferInstance : Field L') + (finitePlaceLocalArtinLocalizedAlgebra v w) + (inferInstance : Algebra K' L') + (finitePlaceLocalArtinFiniteDimensional v w) + (finitePlaceLocalArtinIsAbelianGalois v w hKLfinite) + (inferInstance : FiniteDimensional K' L') + (inferInstance : IsAbelianGalois K' L') + eK eL hcomm hExt (finitePlaceLocalArtinInput v x) htrivial + rw [hlocal, map_one] + +/-- The chosen primitive cyclotomic root in the localized prime-power extension. -/ +noncomputable def rationalCyclotomicPrincipalPrimeLocalizedRoot + (p : Nat.Primes) (n : ℕ) : + rationalCyclotomicArtinLocalizedField + (rationalCyclotomicPrincipalPrimeModulus p n) p := + rationalCyclotomicLocalizedPrimitiveRoot + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p) + +/-- The residue modulo `p^(n+1)` of the `p`-adic unit part of a rational unit. -/ +noncomputable def rationalCyclotomicPrincipalPrimeResidueUnit + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + (ZMod (p.1 ^ (n + 1)))ˣ := + Units.map + (PadicInt.toZModPow (p := p.1) (n + 1)).toMonoidHom + (padicIntUnitOfRat p + (rationalPrimeUnit x p : ℚ) + (rationalPrimeUnit x p).ne_zero + (padicValRat_rationalPrimeUnit x p)) + +theorem rationalCyclotomicPrincipalPrime_localizedBase_commutes + (p : Nat.Primes) (n : ℕ) + (y : (rationalCyclotomicArtinBaseAbv p).Completion) : + rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + (algebraMap (rationalCyclotomicArtinBaseAbv p).Completion + (rationalCyclotomicArtinLocalizedField + (rationalCyclotomicPrincipalPrimeModulus p n) p) y) = + algebraMap ℚ_[p.1] + (RationalCyclotomicPrincipalPrimePadicLevel p n) + (rationalFinitePlaceCompletionRingEquivPadic p y) := by + let m := rationalCyclotomicPrincipalPrimeModulus p n + let E := rationalCyclotomicArtinLocalizedField m p + let eL := rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + have hy : + algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E y = + algebraMap ℚ_[p.1] E + (rationalFinitePlaceCompletionRingEquivPadic p y) := by + change + algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E y = + algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E + ((rationalFinitePlaceCompletionRingEquivPadic p).symm + (rationalFinitePlaceCompletionRingEquivPadic p y)) + exact + (congrArg + (algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E) + ((rationalFinitePlaceCompletionRingEquivPadic p).symm_apply_apply y)).symm + calc + eL (algebraMap (rationalCyclotomicArtinBaseAbv p).Completion E y) = + eL (algebraMap ℚ_[p.1] E + (rationalFinitePlaceCompletionRingEquivPadic p y)) := + congrArg eL hy + _ = algebraMap ℚ_[p.1] + (RationalCyclotomicPrincipalPrimePadicLevel p n) + (rationalFinitePlaceCompletionRingEquivPadic p y) := + eL.commutes (rationalFinitePlaceCompletionRingEquivPadic p y) + +/-- Specialized ramified-prime bridge from the standard `p`-adic Artin value +to the canonical global finite-place Artin value. The localized completion +and all of its dependent instances remain private to this provider. -/ +theorem + rationalCyclotomicPrincipalPrime_finitePlaceArtinOfExtension_eq_one_of_padic + (p : Nat.Primes) (n : ℕ) + (x : ((RayClass.rationalPrime p).adicCompletion ℚ)ˣ) + (htrivial : + abelianLocalArtinMonoidHom ℚ_[p.1] + (RationalCyclotomicPrincipalPrimePadicLevel p n) + (Units.map + (rationalFinitePlaceCompletionRingEquivPadic p).toMonoidHom + (finitePlaceLocalArtinInput (RayClass.rationalPrime p) x)) = 1) : + finitePlaceArtinMonoidHomOfExtension + (K := ℚ) + (L := KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) + (RayClass.rationalPrime p) + (rationalCyclotomicChosenFinitePlaceExtension + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p)) x = 1 := by + exact + finitePlaceArtinMonoidHomOfExtension_eq_one_of_semilinear + (K := ℚ) + (L := KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) + (K' := ℚ_[p.1]) + (L' := RationalCyclotomicPrincipalPrimePadicLevel p n) + (RayClass.rationalPrime p) + (rationalCyclotomicChosenFinitePlaceExtension + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p)) + (rationalFinitePlaceCompletionRingEquivPadic p) + (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n).toRingEquiv + (rationalCyclotomicPrincipalPrime_localizedBase_commutes p n) + (rationalFinitePlaceCompletionRingEquivPadic_semilinearValuationCompatible p) + x htrivial + +theorem + padicMultiplicativePrimitiveRoot_rationalPrimeUnitParameterGaloisAction + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + standardLubinTateUnitParameterEquivGal + (padicLocalField p.1) + (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n + (standardLubinTateUnitParameterClass + (padicLocalField p.1) n + (rationalPrimeUnitValuationSubringUnit x p)) + (padicMultiplicativePrimitiveRoot p.1 n) = + padicMultiplicativePrimitiveRoot p.1 n ^ + (PadicInt.toZModPow (p := p.1) (n + 1) + (padicIntUnitOfRat p + (rationalPrimeUnit x p : ℚ) + (rationalPrimeUnit x p).ne_zero + (padicValRat_rationalPrimeUnit x p) : ℤ_[p.1])).val := by + let uZ : ℤ_[p.1]ˣ := + padicIntUnitOfRat p + (rationalPrimeUnit x p : ℚ) + (rationalPrimeUnit x p).ne_zero + (padicValRat_rationalPrimeUnit x p) + let u : (padicLocalField p.1).valuationSubringˣ := + Units.map (padicIntEquivValuationSubring p.1).toMonoidHom uZ + have huRational : + rationalPrimeUnitValuationSubringUnit x p = u := by + rfl + have huPreimage : + (padicIntEquivValuationSubring p.1).symm + ((u : (padicLocalField p.1).valuationSubringˣ) : + (padicLocalField p.1).valuationSubring) = + (uZ : ℤ_[p.1]) := by + change + (padicIntEquivValuationSubring p.1).symm + (padicIntEquivValuationSubring p.1 (uZ : ℤ_[p.1])) = + (uZ : ℤ_[p.1]) + exact + (padicIntEquivValuationSubring p.1).symm_apply_apply + (uZ : ℤ_[p.1]) + have hAction := + padicMultiplicativePrimitiveRoot_unitParameterGaloisAction + p.1 n u + rw [huPreimage] at hAction + rw [huRational] + exact hAction + +private noncomputable def rationalCyclotomicPrincipalPrimePadicTargetArtin + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + Gal(RationalCyclotomicPrincipalPrimePadicLevel p n / ℚ_[p.1]) := + @LocalClassFieldTheory.abelianLocalArtinMonoidHom + ℚ_[p.1] (RationalCyclotomicPrincipalPrimePadicLevel p n) + (inferInstance : Field ℚ_[p.1]) + (inferInstance : Field + (RationalCyclotomicPrincipalPrimePadicLevel p n)) + (inferInstance : Algebra ℚ_[p.1] + (RationalCyclotomicPrincipalPrimePadicLevel p n)) + (inferInstance : ValuativeRel ℚ_[p.1]) + (inferInstance : TopologicalSpace ℚ_[p.1]) + (inferInstance : IsNonarchimedeanLocalField ℚ_[p.1]) + (rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional p n) + (standardLubinTateLevelField_isAbelianGalois + (padicLocalField p.1) + (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n) + (Units.map + (rationalFinitePlaceCompletionRingEquivPadic p).toMonoidHom + (rationalPrincipalFinitePlaceInput x p)) + +/-- The cyclotomic Galois automorphism corresponding to the unit parameter of `x` +under the standard Lubin–Tate equivalence. -/ +noncomputable def + rationalCyclotomicPrincipalPrimePadicUnitParameterArtin + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + Gal(RationalCyclotomicPrincipalPrimePadicLevel p n / ℚ_[p.1]) := + standardLubinTateUnitParameterEquivGal + (padicLocalField p.1) + (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n + (standardLubinTateUnitParameterClass + (padicLocalField p.1) n + (rationalPrimeUnitValuationSubringUnit x p)) + +private theorem + rationalCyclotomicPrincipalPrime_padicTargetArtin_eq_unitParameter + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + rationalCyclotomicPrincipalPrimePadicTargetArtin p n x = + rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x := by + let T := RationalCyclotomicPrincipalPrimePadicLevel p n + let eK := rationalFinitePlaceCompletionRingEquivPadic p + let : FiniteDimensional ℚ_[p.1] T := + rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional p n + let hpi := padicMultiplicativeLubinTateSeries_isUniformizer p.1 + let : IsAbelianGalois ℚ_[p.1] T := + standardLubinTateLevelField_isAbelianGalois + (padicLocalField p.1) hpi n + have hsource : + Units.map eK.toMonoidHom (rationalPrincipalFinitePlaceInput x p) = + Units.map (algebraMap ℚ ℚ_[p.1]).toMonoidHom x := by + rw [rationalPrincipalFinitePlaceInput_eq_algebraMap] + apply Units.ext + exact rationalFinitePlaceCompletionRingEquivPadic_algebraMap p (x : ℚ) + change + LocalClassFieldTheory.abelianLocalArtinMonoidHom ℚ_[p.1] T + (Units.map eK.toMonoidHom + (rationalPrincipalFinitePlaceInput x p)) = + standardLubinTateUnitParameterEquivGal + (padicLocalField p.1) hpi n + (standardLubinTateUnitParameterClass + (padicLocalField p.1) n + (rationalPrimeUnitValuationSubringUnit x p)) + rw [hsource] + rw [ + padicMultiplicativeAbelianLocalArtin_eq_uniformizerUnitPart, + rationalPadicFieldUnit_uniformizerUnitPart, + padicMultiplicativeAbelianLocalArtin_eq_unitParameter] + +theorem + rationalCyclotomicPrincipalPrime_padicArtin_action_eq_unitParameter + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + (@LocalClassFieldTheory.abelianLocalArtinMonoidHom + ℚ_[p.1] (RationalCyclotomicPrincipalPrimePadicLevel p n) + (inferInstance : Field ℚ_[p.1]) + (inferInstance : Field + (RationalCyclotomicPrincipalPrimePadicLevel p n)) + (inferInstance : Algebra ℚ_[p.1] + (RationalCyclotomicPrincipalPrimePadicLevel p n)) + (inferInstance : ValuativeRel ℚ_[p.1]) + (inferInstance : TopologicalSpace ℚ_[p.1]) + (inferInstance : IsNonarchimedeanLocalField ℚ_[p.1]) + (rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional p n) + (standardLubinTateLevelField_isAbelianGalois + (padicLocalField p.1) + (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n) + (Units.map + (rationalFinitePlaceCompletionRingEquivPadic p).toMonoidHom + (finitePlaceLocalArtinInput + (K := ℚ) (RayClass.rationalPrime p) + (IdeleGroup.finiteComponent + (RayClass.rationalPrime p) + (IdeleGroup.principalIdele ℚ x))))) + ((rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n).toRingEquiv + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) = + rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x + (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) := by + let eK := rationalFinitePlaceCompletionRingEquivPadic p + have hInput : + finitePlaceLocalArtinInput + (K := ℚ) (RayClass.rationalPrime p) + (IdeleGroup.finiteComponent + (RayClass.rationalPrime p) + (IdeleGroup.principalIdele ℚ x)) = + rationalPrincipalFinitePlaceInput x p := by + rfl + have hMapped : + Units.map eK.toMonoidHom + (finitePlaceLocalArtinInput + (K := ℚ) (RayClass.rationalPrime p) + (IdeleGroup.finiteComponent + (RayClass.rationalPrime p) + (IdeleGroup.principalIdele ℚ x))) = + Units.map eK.toMonoidHom + (rationalPrincipalFinitePlaceInput x p) := + congrArg (Units.map eK.toMonoidHom) hInput + calc + _ = rationalCyclotomicPrincipalPrimePadicTargetArtin p n x + (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) := by + exact congrArg + (fun uQp => + (@LocalClassFieldTheory.abelianLocalArtinMonoidHom + ℚ_[p.1] (RationalCyclotomicPrincipalPrimePadicLevel p n) + (inferInstance : Field ℚ_[p.1]) + (inferInstance : Field + (RationalCyclotomicPrincipalPrimePadicLevel p n)) + (inferInstance : Algebra ℚ_[p.1] + (RationalCyclotomicPrincipalPrimePadicLevel p n)) + (inferInstance : ValuativeRel ℚ_[p.1]) + (inferInstance : TopologicalSpace ℚ_[p.1]) + (inferInstance : IsNonarchimedeanLocalField ℚ_[p.1]) + (rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional p n) + (standardLubinTateLevelField_isAbelianGalois + (padicLocalField p.1) + (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n) + uQp) + (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n))) + hMapped + _ = rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x + (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) := + congrArg + (fun tau => tau + (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n))) + (rationalCyclotomicPrincipalPrime_padicTargetArtin_eq_unitParameter + p n x) + + +end RationalCyclotomicPrincipalPrime + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinBase.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinBase.lean new file mode 100644 index 0000000..3646afc --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinBase.lean @@ -0,0 +1,924 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.CompletionToIdeal +import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.IdealToCompletion +import ClassFieldTheory.AlgebraicNumberTheory.Completion.UnramifiedComparison.LocalNorm +import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.AlgEquiv +import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.BaseChange +import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.Core +import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.NormComparison +import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.NormalClosureNorm +import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.Tower +import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.TowerAlgEquivNaturality +import ClassFieldTheory.AlgebraicNumberTheory.Idele.ClassGroup.TowerBaseChange +import ClassFieldTheory.AlgebraicNumberTheory.Idele.Relative.FinitePlaceTensorNorm +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicFinitePlace +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicLocalization +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalPrimeFactorization +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalPrincipalLocalUnit +import ClassFieldTheory.LocalClassFieldTheory.Finite.LocalReciprocity.SemilinearNaturality +import ClassFieldTheory.LocalClassFieldTheory.Finite.LocalReciprocity.UnramifiedNormalization +import ClassFieldTheory.LocalClassFieldTheory.LubinTateApplication.PadicMultiplicativeArtinComparison +import ValuedFieldTheory.LocalField.DiscreteValuationField.PadicValuationComparison +import ValuedFieldTheory.LocalField.NonarchimedeanLocalField.UnramifiedFrobenius +import ValuedFieldTheory.LocalField.Padic.Cyclotomic.TotallyRamified.EisensteinPolynomial +import Mathlib.NumberTheory.NumberField.Cyclotomic.Galois + + +set_option autoImplicit false + +/-! +# Finite-place Artin symbols in rational cyclotomic levels + +At a rational prime away from the cyclotomic level, the chosen completed +extension is unramified. Its normalized local Artin map is therefore the +arithmetic Frobenius raised to the local valuation. The genuine primitive +root in the localized cyclotomic level identifies the image of arithmetic +Frobenius under the global cyclotomic character with the residue prime. +-/ + +open scoped Classical NNReal NumberField ValuativeRel +open NumberField IsDedekindDomain + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +-- Specializing the generic finite-place comparison to `ℚ` must retain its +-- `Algebra.id` owner rather than selecting the competing rational-field +-- instance introduced after specialization. +@[reducible] noncomputable local instance + rationalFinitePlaceCompletionRatAlgebra + (v : HeightOneSpectrum (𝓞 ℚ)) : + Algebra ℚ (HeightOneSpectrum.adicAbv ℚ v).Completion := by + letI : Algebra ℚ ℚ := Algebra.id ℚ + let hWith : Algebra ℚ + (WithAbs (HeightOneSpectrum.adicAbv ℚ v)) := + WithAbs.instAlgebra _ + let hUniform : UniformContinuousConstSMul ℚ + (WithAbs (HeightOneSpectrum.adicAbv ℚ v)) := + WithAbs.instUniformContinuousConstSMulReal _ + exact + @UniformSpace.Completion.algebra + (WithAbs (HeightOneSpectrum.adicAbv ℚ v)) _ _ _ _ + ℚ _ hWith hUniform + +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open LocalClassFieldTheory +open LocalFieldTheory +open LocalFieldTheory.DiscreteValuationField +open LocalFieldTheory.DiscreteValuationField.Examples.Qp +open LubinTate + +theorem mappedAbelianLocalArtin_eq_frobenius_zpow + {F E G : Type} + [Field F] [ValuativeRel F] [TopologicalSpace F] + [IsNonarchimedeanLocalField F] + [Field E] [ValuativeRel E] [UniformSpace E] [IsUniformAddGroup E] + [IsNonarchimedeanLocalField E] + [Algebra F E] [FiniteDimensional F E] [IsAbelianGalois F E] + [Valuation.HasExtension + (ValuativeRel.valuation F) (ValuativeRel.valuation E)] + [IsNonarchimedeanLocalField.IsUnramifiedValuedExtension F E] + [Group G] + (f : (E ≃ₐ[F] E) →* G) (x : Fˣ) : + f (LocalClassFieldTheory.abelianLocalArtinMonoidHom F E x) = + (f (arithmeticFrobeniusOfUnramifiedValuation F E)) ^ + IsNonarchimedeanLocalField.valuationMap F + (Additive.ofMul x) := by + rw [LocalClassFieldTheory.abelianLocalArtinMonoidHom_eq_frobenius_zpow, + map_zpow] + +local instance primeFact (q : Nat.Primes) : Fact q.1.Prime := + ⟨q.2⟩ + +local instance levelNeZero (m : ℕ+) : NeZero (m : ℕ) := + ⟨m.ne_zero⟩ + +noncomputable local instance + rationalCyclotomicLevelFiniteDimensional + (m : ℕ+) : + FiniteDimensional ℚ + (KummerTheory.rationalCyclotomicLevel m) := + IsCyclotomicExtension.finiteDimensional + {(m : ℕ)} ℚ (KummerTheory.rationalCyclotomicLevel m) + +noncomputable local instance + rationalCyclotomicLevelIsAbelianGalois + (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 _ _ } + +@[reducible] +noncomputable local instance rationalFinitePlaceBaseNontriviallyNormedField + (q : Nat.Primes) : + NontriviallyNormedField + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion := + absoluteValueExtension_completionNontriviallyNormedField + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)) + (RayClass.adicAbv_isNontrivial + (RayClass.rationalPrime q)) + +noncomputable local instance rationalFinitePlaceBaseLocallyCompactSpace + (q : Nat.Primes) : + LocallyCompactSpace + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion := + AbsoluteValue.Completion.locallyCompactSpace + (finitePlaceCompletionBaseMap_isometry + (RayClass.rationalPrime q)) + +noncomputable local instance rationalFinitePlaceBaseIsUltrametricDist + (q : Nat.Primes) : + IsUltrametricDist + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion := + finitePlaceArtinCompletionIsUltrametricDist + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)) + (HeightOneSpectrum.isNonarchimedean_adicAbv + ℚ (RayClass.rationalPrime q)) + +@[reducible] +noncomputable local instance rationalFinitePlaceBaseValued + (q : Nat.Primes) : + Valued + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion ℝ≥0 := + finitePlaceArtinCompletionValued + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)) + (HeightOneSpectrum.isNonarchimedean_adicAbv + ℚ (RayClass.rationalPrime q)) + +@[reducible] +noncomputable local instance rationalFinitePlaceBaseValuativeRel + (q : Nat.Primes) : + ValuativeRel + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion := + finitePlaceLocalArtinCompletionValuativeRel + (K := ℚ) (RayClass.rationalPrime q) + +noncomputable local instance + rationalFinitePlaceBaseValuationIsNontrivial + (q : Nat.Primes) : + (Valued.v : + Valuation + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + ℝ≥0).IsNontrivial := + (inferInstance : + (NormedField.valuation + (K := + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion)).IsNontrivial) + +noncomputable local instance rationalFinitePlaceBaseValuationCompatible + (q : Nat.Primes) : + (Valued.v : + Valuation + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + ℝ≥0).Compatible := + Valuation.Compatible.ofValuation _ + +noncomputable local instance + rationalFinitePlaceBaseValuativeRelIsNontrivial + (q : Nat.Primes) : + ValuativeRel.IsNontrivial + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion := + (ValuativeRel.isNontrivial_iff_isNontrivial + (Valued.v : + Valuation + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + ℝ≥0)).2 inferInstance + +noncomputable local instance rationalFinitePlaceBaseIsValuativeTopology + (q : Nat.Primes) : + IsValuativeTopology + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion := + isValuativeTopology_of_valued_ofValuation + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion ℝ≥0 + +noncomputable local instance + rationalFinitePlaceBaseIsNonarchimedeanLocalField + (q : Nat.Primes) : + IsNonarchimedeanLocalField + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion := + finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField + (K := ℚ) (RayClass.rationalPrime q) + + +/-- Rational cyclotomic levels are finite-dimensional over `ℚ`. -/ +theorem rationalCyclotomicPrincipalPrimeLevelFiniteDimensional + (m : ℕ+) : + FiniteDimensional ℚ (KummerTheory.rationalCyclotomicLevel m) := + rationalCyclotomicLevelFiniteDimensional m + +/-- Rational cyclotomic levels are abelian Galois extensions of `ℚ`. -/ +theorem rationalCyclotomicPrincipalPrimeLevelIsAbelianGalois + (m : ℕ+) : + IsAbelianGalois ℚ (KummerTheory.rationalCyclotomicLevel m) := + rationalCyclotomicLevelIsAbelianGalois m + +/-- The canonical nontrivially normed field structure on the completion of +`ℚ` at the rational prime `p`, exposed for principal-prime constructions. -/ +@[reducible] +noncomputable def rationalPrimeFactorCompletionNontriviallyNormedField + (p : Nat.Primes) : + NontriviallyNormedField + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion := + rationalFinitePlaceBaseNontriviallyNormedField p + +/-- The completion of `ℚ` at `p` is locally compact. -/ +theorem rationalPrimeFactorCompletionLocallyCompactSpace + (p : Nat.Primes) : + LocallyCompactSpace + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion := + rationalFinitePlaceBaseLocallyCompactSpace p + +/-- The completion of `ℚ` at `p` carries its canonical ultrametric distance. -/ +theorem rationalPrimeFactorCompletionIsUltrametricDist + (p : Nat.Primes) : + IsUltrametricDist + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion := + rationalFinitePlaceBaseIsUltrametricDist p + +/-- The canonical `ℝ≥0`-valued structure on the completion of `ℚ` at `p`. -/ +@[reducible] +noncomputable def rationalPrimeFactorCompletionValued + (p : Nat.Primes) : + Valued + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion ℝ≥0 := + rationalFinitePlaceBaseValued p + +/-- The valuative relation induced by the canonical valuation on the +completion of `ℚ` at `p`. -/ +@[reducible] +noncomputable def rationalPrimeFactorCompletionValuativeRel + (p : Nat.Primes) : + ValuativeRel + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion := + rationalFinitePlaceBaseValuativeRel p + +/-- The canonical valuation on the completion of `ℚ` at `p` is nontrivial. -/ +theorem rationalPrimeFactorCompletionValuationIsNontrivial + (p : Nat.Primes) : + (Valued.v : Valuation + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion ℝ≥0).IsNontrivial := + rationalFinitePlaceBaseValuationIsNontrivial p + +/-- The canonical valuation on the completion of `ℚ` at `p` is compatible +with its field structure. -/ +theorem rationalPrimeFactorCompletionValuationCompatible + (p : Nat.Primes) : + (Valued.v : Valuation + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion ℝ≥0).Compatible := + rationalFinitePlaceBaseValuationCompatible p + +/-- The canonical valuative relation on the completion at `p` is nontrivial. -/ +theorem rationalPrimeFactorCompletionValuativeRelIsNontrivial + (p : Nat.Primes) : + ValuativeRel.IsNontrivial + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion := + rationalFinitePlaceBaseValuativeRelIsNontrivial p + +/-- The completion topology at `p` is induced by its canonical valuation. -/ +theorem rationalPrimeFactorCompletionIsValuativeTopology + (p : Nat.Primes) : + IsValuativeTopology + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion := + rationalFinitePlaceBaseIsValuativeTopology p + +/-- The completion of `ℚ` at `p` is a nonarchimedean local field. -/ +theorem rationalPrimeFactorCompletionIsNonarchimedeanLocalField + (p : Nat.Primes) : + IsNonarchimedeanLocalField + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion := + rationalFinitePlaceBaseIsNonarchimedeanLocalField p + +/-- The positive conductor of the `n`-th ramified cyclotomic level at +`p`. -/ +def rationalCyclotomicPrincipalPrimeModulus + (p : Nat.Primes) (n : ℕ) : ℕ+ := + ⟨p.1 ^ (n + 1), pow_pos p.2.pos (n + 1)⟩ + +/-- The rational finite-place completion used at the prime `p`. -/ +abbrev RationalCyclotomicPrincipalPrimeCompletion + (p : Nat.Primes) := + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion + +/-- The chosen localized cyclotomic field at level `p ^ (n + 1)`. -/ +abbrev RationalCyclotomicPrincipalPrimeLocalizedLevel + (p : Nat.Primes) (n : ℕ) := + rationalCyclotomicLocalizedCompletion + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p) + +/-- The standard multiplicative Lubin--Tate field at level `n`. -/ +abbrev RationalCyclotomicPrincipalPrimePadicLevel + (p : Nat.Primes) (n : ℕ) := + standardLubinTateLevelField + (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n + +/-- The valuation ring of the absolute-value completion at `q`, identified +with the standard p-adic integer ring `ℤ_q`. -/ +noncomputable def rationalFinitePlaceCompletionIntegerRingEquivPadicInt + (q : Nat.Primes) : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion] ≃+* + ℤ_[q.1] := by + let v : HeightOneSpectrum (𝓞 ℚ) := + RayClass.rationalPrime q + let vQ := HeightOneSpectrum.adicAbv ℚ v + let eConcreteIntegers : + 𝒪[vQ.Completion] ≃+* + v.adicCompletionIntegers ℚ := + finitePlaceCompletionIntegerRingEquiv v + exact + eConcreteIntegers.trans + (PadicInt.adicCompletionIntegersEquiv + (𝓞 ℚ) q).symm.toRingEquiv + +/-- The absolute-value completion at the rational prime `q`, identified +with the standard field `ℚ_q`. -/ +noncomputable def rationalFinitePlaceCompletionRingEquivPadic + (q : Nat.Primes) : + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion ≃+* + ℚ_[q.1] := + IsFractionRing.ringEquivOfRingEquiv + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt q) + +/-- The completion-to-`ℚ_q` equivalence respects the rational embedding. -/ +theorem rationalFinitePlaceCompletionRingEquivPadic_algebraMap + (q : Nat.Primes) (a : ℚ) : + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap ℚ + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion a) = + algebraMap ℚ ℚ_[q.1] a := by + exact + (rationalFinitePlaceCompletionRingEquivPadic q).toRingHom.map_rat_algebraMap a + +/-- The completion field equivalence and its restriction to valuation +rings commute with the natural inclusions into the fields. -/ +theorem rationalFinitePlaceCompletionIntegerRingEquivPadicInt_coe + (q : Nat.Primes) + (a : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion]) : + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion] + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion a) = + algebraMap ℤ_[q.1] ℚ_[q.1] + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt q a) := by + exact + (IsFractionRing.ringEquivOfRingEquiv_algebraMap + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt q) a) + +/-- The canonical rational-completion equivalence preserves the canonical +valuations. -/ +theorem + rationalFinitePlaceCompletionRingEquivPadic_semilinearValuationCompatible + (p : Nat.Primes) : + SemilinearValuationCompatible + (RationalCyclotomicPrincipalPrimeCompletion p) ℚ_[p.1] + (rationalFinitePlaceCompletionRingEquivPadic p) := by + let F := RationalCyclotomicPrincipalPrimeCompletion p + let eK := rationalFinitePlaceCompletionRingEquivPadic p + let : Algebra F ℚ_[p.1] := eK.toRingHom.toAlgebra + change + (ValuativeRel.valuation F).HasExtension + (ValuativeRel.valuation ℚ_[p.1]) + let eO := + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt p).trans + (padicIntEquivValuationSubring p.1) + have hChosen : + (localCompleteDVF F).valuation.HasExtension + (padicDVRValuation p.1) := by + change + (localCompleteDVF F).valuation.HasExtension + (padicCompleteDVF p.1).valuation + apply + ValuationTheory.DiscreteValuationField.ValuedExtension.valuation_hasExtension_of_valuationSubring_equiv + (localCompleteDVF F) + (padicCompleteDVF p.1) + eO + intro z + change + algebraMap + (padicDVRValuation p.1).valuationSubring ℚ_[p.1] + (padicIntEquivValuationSubring p.1 + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt + p z)) = + rationalFinitePlaceCompletionRingEquivPadic p + (algebraMap 𝒪[F] F z) + symm + calc + rationalFinitePlaceCompletionRingEquivPadic p + (algebraMap 𝒪[F] F z) = + algebraMap ℤ_[p.1] ℚ_[p.1] + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt + p z) := + rationalFinitePlaceCompletionIntegerRingEquivPadicInt_coe + p z + _ = + algebraMap + (padicDVRValuation p.1).valuationSubring ℚ_[p.1] + (padicIntEquivValuationSubring p.1 + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt + p z)) := by + rw [PadicInt.algebraMap_apply, + ValuationSubring.algebraMap_apply] + exact + (padicIntEquivValuationSubring_coe p.1 + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt + p z)).symm + have hBase : + (ValuativeRel.valuation F).HasExtension + (padicDVRValuation p.1) := by + rw [← localCompleteDVF_valuation_eq] + exact hChosen + refine + { val_isEquiv_comap := ?_ } + exact + hBase.val_isEquiv_comap.trans + ((padicDVRValuation_isEquiv_valuativeRelValuation + p.1).comap (algebraMap F ℚ_[p.1])) + +/-- The rational prime, pulled back from `ℤ_q` to the valuation ring of +the absolute-value completion at `q`. -/ +noncomputable def rationalPrimeFinitePlaceInteger + (q : Nat.Primes) : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion] := + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt q).symm + (q.1 : ℤ_[q.1]) + +/-- The pulled-back rational prime is irreducible in the completion +valuation ring. -/ +theorem rationalPrimeFinitePlaceInteger_irreducible + (q : Nat.Primes) : + Irreducible (rationalPrimeFinitePlaceInteger q) := by + exact + (MulEquiv.irreducible_iff + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt + q).symm.toMulEquiv).2 + ((PadicInt.prime_p : + Prime (q.1 : ℤ_[q.1])).irreducible) + +/-- Coercing the pulled-back prime to the completion field gives the +ordinary image of the rational number `q`. -/ +theorem rationalPrimeFinitePlaceInteger_coe + (q : Nat.Primes) : + ((rationalPrimeFinitePlaceInteger q : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion]) : + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion) = + algebraMap ℚ + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (q.1 : ℚ) := by + apply + (rationalFinitePlaceCompletionRingEquivPadic q).injective + change + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion] + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeFinitePlaceInteger q)) = + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap ℚ + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (q.1 : ℚ)) + calc + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion] + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeFinitePlaceInteger q)) = + algebraMap ℤ_[q.1] ℚ_[q.1] + ((rationalFinitePlaceCompletionIntegerRingEquivPadicInt q) + (rationalPrimeFinitePlaceInteger q)) := + rationalFinitePlaceCompletionIntegerRingEquivPadicInt_coe + q (rationalPrimeFinitePlaceInteger q) + _ = (q.1 : ℚ_[q.1]) := by + rw [rationalPrimeFinitePlaceInteger, + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt + q).apply_symm_apply, + PadicInt.algebraMap_apply, + PadicInt.coe_natCast] + _ = + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap ℚ + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (q.1 : ℚ)) := by + rw [ + rationalFinitePlaceCompletionRingEquivPadic_algebraMap] + norm_num + +/-- The rational prime as a field unit of its absolute-value completion. -/ +noncomputable def rationalPrimeFinitePlaceFieldUnit + (q : Nat.Primes) : + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completionˣ := + Units.mk0 + (rationalPrimeFinitePlaceInteger q : + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion) + (by + intro hzero + exact + (rationalPrimeFinitePlaceInteger_irreducible q).ne_zero + (Subtype.ext hzero)) + +/-- In the inverse-standard local reciprocity normalization, the rational +prime itself has normalized additive value `-1`. -/ +theorem rationalPrimeFinitePlaceFieldUnit_valuationMap + (q : Nat.Primes) : + IsNonarchimedeanLocalField.valuationMap + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (Additive.ofMul + (rationalPrimeFinitePlaceFieldUnit q)) = + -1 := by + simpa [IsNonarchimedeanLocalField.valuationMap_apply] using + (LocalFieldTheory.v_integerRingIrreducibleFieldUnit + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeFinitePlaceInteger q) + (rationalPrimeFinitePlaceInteger_irreducible q) + (rationalPrimeFinitePlaceFieldUnit q) rfl) + +/-- The rational `q`-unit part of `x`, pulled back from `ℤ_qˣ` to the +valuation ring of the absolute-value completion. -/ +noncomputable def rationalPrimeUnitFinitePlaceIntegerUnit + (x : ℚˣ) (q : Nat.Primes) : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion]ˣ := + Units.map + (rationalFinitePlaceCompletionIntegerRingEquivPadicInt + q).symm.toMonoidHom + (padicIntUnitOfRat q + (rationalPrimeUnit x q : ℚ) + (rationalPrimeUnit x q).ne_zero + (padicValRat_rationalPrimeUnit x q)) + +/-- Forgetting the integrality proof from the pulled-back `q`-unit gives +the ordinary image of the rational `q`-unit in the completion field. -/ +theorem rationalPrimeUnitFinitePlaceIntegerUnit_coe + (x : ℚˣ) (q : Nat.Primes) : + (((rationalPrimeUnitFinitePlaceIntegerUnit x q : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion]ˣ) : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion]) : + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion) = + algebraMap ℚ + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeUnit x q : ℚ) := by + apply + (rationalFinitePlaceCompletionRingEquivPadic q).injective + change + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion] + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeUnitFinitePlaceIntegerUnit x q : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion])) = + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap ℚ + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeUnit x q : ℚ)) + calc + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion] + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeUnitFinitePlaceIntegerUnit x q : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion])) = + algebraMap ℤ_[q.1] ℚ_[q.1] + ((rationalFinitePlaceCompletionIntegerRingEquivPadicInt q) + (rationalPrimeUnitFinitePlaceIntegerUnit x q : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion])) := + rationalFinitePlaceCompletionIntegerRingEquivPadicInt_coe q + (rationalPrimeUnitFinitePlaceIntegerUnit x q : + 𝒪[(HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion]) + _ = + ((padicIntUnitOfRat q + (rationalPrimeUnit x q : ℚ) + (rationalPrimeUnit x q).ne_zero + (padicValRat_rationalPrimeUnit x q) : + ℤ_[q.1]) : ℚ_[q.1]) := by + rw [rationalPrimeUnitFinitePlaceIntegerUnit] + simp [PadicInt.algebraMap_apply] + _ = ((rationalPrimeUnit x q : ℚ) : ℚ_[q.1]) := by + rw [padicIntUnitOfRat_coe] + _ = + rationalFinitePlaceCompletionRingEquivPadic q + (algebraMap ℚ + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeUnit x q : ℚ)) := by + rw [ + rationalFinitePlaceCompletionRingEquivPadic_algebraMap] + simp + +/-- The completion field unit underlying the pulled-back rational `q`-unit +has normalized additive value zero. -/ +theorem rationalPrimeUnitFinitePlaceField_valuationMap + (x : ℚˣ) (q : Nat.Primes) : + IsNonarchimedeanLocalField.valuationMap + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (Additive.ofMul + (IsNonarchimedeanLocalField.integerUnitsToFieldUnits + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeUnitFinitePlaceIntegerUnit x q))) = + 0 := by + rw [IsNonarchimedeanLocalField.valuationMap_apply] + exact + IsNonarchimedeanLocalField.v_integerUnitsToFieldUnits + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (rationalPrimeUnitFinitePlaceIntegerUnit x q) + +/-- The rational prime `q`, regarded as a unit of `ℚ`. -/ +def rationalPrimeGeneratorUnit (q : Nat.Primes) : ℚˣ := + Units.mk0 (q.1 : ℚ) (by exact_mod_cast q.2.ne_zero) + +/-- The underlying rational number of the prime generator unit is `q`. -/ +@[simp] +theorem rationalPrimeGeneratorUnit_coe (q : Nat.Primes) : + (rationalPrimeGeneratorUnit q : ℚ) = q.1 := + rfl + +/-- Reattaching the removed `q`-power to the rational `q`-unit recovers +the original rational field unit. -/ +theorem rationalPrimeGeneratorUnit_zpow_mul_rationalPrimeUnit + (x : ℚˣ) (q : Nat.Primes) : + rationalPrimeGeneratorUnit q ^ + padicValRat q.1 (x : ℚ) * + rationalPrimeUnit x q = + x := by + rw [rationalPrimeGeneratorUnit, rationalPrimeUnit, + ← mul_assoc, ← zpow_add] + simp + +/-- The source unit in the absolute-value completion represented by the +finite component of a rational principal idele. -/ +noncomputable def rationalPrincipalFinitePlaceInput + (x : ℚˣ) (q : Nat.Primes) : + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completionˣ := + (finitePlaceCompletionUnitsContinuousMulEquiv + (RayClass.rationalPrime q)).symm + (IdeleGroup.finiteComponent + (RayClass.rationalPrime q) + (IdeleGroup.principalIdele ℚ x)) + +/-- The source unit represented by a principal finite component is the +ordinary image of the rational field unit in the absolute-value +completion. -/ +theorem rationalPrincipalFinitePlaceInput_eq_algebraMap + (x : ℚˣ) (q : Nat.Primes) : + rationalPrincipalFinitePlaceInput x q = + Units.map + (algebraMap ℚ + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion).toMonoidHom + x := by + apply Units.ext + let v : HeightOneSpectrum (𝓞 ℚ) := + RayClass.rationalPrime q + let vQ := HeightOneSpectrum.adicAbv ℚ v + let component : (v.adicCompletion ℚ)ˣ := + IdeleGroup.finiteComponent v + (IdeleGroup.principalIdele ℚ x) + apply (finitePlaceCompletionRingEquiv v).injective + change + finitePlaceCompletionRingEquiv v + (rationalPrincipalFinitePlaceInput x q : vQ.Completion) = + finitePlaceCompletionRingEquiv v + (algebraMap ℚ vQ.Completion (x : ℚ)) + have hCompletion : + finitePlaceCompletionRingEquiv v + (rationalPrincipalFinitePlaceInput x q : + vQ.Completion) = + (component : v.adicCompletion ℚ) := by + have hUnits := + congrArg Units.val + ((finitePlaceCompletionUnitsContinuousMulEquiv v).apply_symm_apply + component) + exact hUnits + have hComponent : + (component : v.adicCompletion ℚ) = + algebraMap ℚ (v.adicCompletion ℚ) (x : ℚ) := by + apply (Padic.adicCompletionEquiv (𝓞 ℚ) q).symm.injective + calc + (Padic.adicCompletionEquiv (𝓞 ℚ) q).symm + (component : v.adicCompletion ℚ) = + algebraMap ℚ ℚ_[q.1] (x : ℚ) := by + dsimp only [component] + rw [IdeleGroup.finiteComponent_principalIdele] + exact + (Padic.adicCompletionEquiv + (𝓞 ℚ) q).symm.commutes (x : ℚ) + _ = (Padic.adicCompletionEquiv (𝓞 ℚ) q).symm + (algebraMap ℚ (v.adicCompletion ℚ) (x : ℚ)) := by + symm + exact + (Padic.adicCompletionEquiv + (𝓞 ℚ) q).symm.commutes (x : ℚ) + calc + finitePlaceCompletionRingEquiv v + (rationalPrincipalFinitePlaceInput x q : + vQ.Completion) = + (component : v.adicCompletion ℚ) := hCompletion + _ = algebraMap ℚ (v.adicCompletion ℚ) (x : ℚ) := hComponent + _ = finitePlaceCompletionRingEquiv v + (algebraMap ℚ vQ.Completion (x : ℚ)) := by + symm + exact + (finitePlaceCompletionAlgEquiv (K := ℚ) v).commutes (x : ℚ) + +/-- The normalized local exponent of a rational principal finite +component is the negative of the usual `q`-adic exponent. The minus sign +records the inverse-standard local reciprocity convention in which a +prime element has normalized value `-1`. -/ +theorem rationalPrincipalFiniteComponent_valuationMap + (x : ℚˣ) (q : Nat.Primes) : + IsNonarchimedeanLocalField.valuationMap + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (Additive.ofMul + ((finitePlaceCompletionUnitsContinuousMulEquiv + (RayClass.rationalPrime q)).symm + (IdeleGroup.finiteComponent + (RayClass.rationalPrime q) + (IdeleGroup.principalIdele ℚ x)))) = + -padicValRat q.1 (x : ℚ) := by + let F := + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + let embed : ℚˣ →* Fˣ := + Units.map (algebraMap ℚ F).toMonoidHom + let primeUnit : Fˣ := + rationalPrimeFinitePlaceFieldUnit q + let integralUnit : 𝒪[F]ˣ := + rationalPrimeUnitFinitePlaceIntegerUnit x q + let unitPart : Fˣ := + IsNonarchimedeanLocalField.integerUnitsToFieldUnits + F integralUnit + have hInput : + rationalPrincipalFinitePlaceInput x q = + embed x := by + exact rationalPrincipalFinitePlaceInput_eq_algebraMap x q + have hPrime : + embed (rationalPrimeGeneratorUnit q) = + primeUnit := by + apply Units.ext + exact + (rationalPrimeFinitePlaceInteger_coe q).symm + have hUnit : + embed (rationalPrimeUnit x q) = + unitPart := by + apply Units.ext + exact + (rationalPrimeUnitFinitePlaceIntegerUnit_coe + x q).symm + change + IsNonarchimedeanLocalField.valuationMap F + (Additive.ofMul + (rationalPrincipalFinitePlaceInput x q)) = + -padicValRat q.1 (x : ℚ) + rw [hInput] + conv_lhs => + rw [← rationalPrimeGeneratorUnit_zpow_mul_rationalPrimeUnit + x q] + rw [map_mul, map_zpow, hPrime, hUnit, + IsNonarchimedeanLocalField.valuationMap_ofMul_mul, + IsNonarchimedeanLocalField.valuationMap_ofMul_zpow, + rationalPrimeFinitePlaceFieldUnit_valuationMap, + rationalPrimeUnitFinitePlaceField_valuationMap] + ring + +/-- The principal finite component of the rational prime itself has +normalized local exponent `-1`. -/ +theorem rationalPrimePrincipalFiniteComponent_valuationMap + (q : Nat.Primes) : + IsNonarchimedeanLocalField.valuationMap + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime q)).Completion + (Additive.ofMul + ((finitePlaceCompletionUnitsContinuousMulEquiv + (RayClass.rationalPrime q)).symm + (IdeleGroup.finiteComponent + (RayClass.rationalPrime q) + (IdeleGroup.principalIdele ℚ + (rationalPrimeGeneratorUnit q))))) = + -1 := by + rw [rationalPrincipalFiniteComponent_valuationMap, + rationalPrimeGeneratorUnit_coe, + padicValRat.self q.2.one_lt] + +/-- A cyclotomic automorphism which raises the selected primitive root to +the `q`-th power has cyclotomic character equal to the residue-prime unit. -/ +theorem rationalCyclotomicLevel_galEquivZMod_eq_unitOfCoprime + (m : ℕ+) (q : Nat.Primes) + (hq : ¬ q.1 ∣ (m : ℕ)) + (σ : KummerTheory.rationalCyclotomicLevel m ≃ₐ[ℚ] + KummerTheory.rationalCyclotomicLevel m) + (hσ : + σ (rationalCyclotomicLevelPrimitiveRoot m) = + rationalCyclotomicLevelPrimitiveRoot m ^ q.1) : + IsCyclotomicExtension.Rat.galEquivZMod + (m : ℕ) (KummerTheory.rationalCyclotomicLevel m) σ = + ZMod.unitOfCoprime q.1 + (q.2.coprime_iff_not_dvd.mpr hq) := by + let ζ := rationalCyclotomicLevelPrimitiveRoot m + have hζ : IsPrimitiveRoot ζ (m : ℕ) := + rationalCyclotomicLevelPrimitiveRoot_isPrimitiveRoot m + have hCharacterRoot : + σ ζ = + ζ ^ + (IsCyclotomicExtension.Rat.galEquivZMod + (m : ℕ) (KummerTheory.rationalCyclotomicLevel m) σ).val.val := + IsCyclotomicExtension.Rat.galEquivZMod_apply_of_pow_eq + (m : ℕ) (KummerTheory.rationalCyclotomicLevel m) σ + hζ.pow_eq_one + have hPowers : + ζ ^ + (IsCyclotomicExtension.Rat.galEquivZMod + (m : ℕ) (KummerTheory.rationalCyclotomicLevel m) σ).val.val = + ζ ^ q.1 := + hCharacterRoot.symm.trans hσ + rw [(hζ.isOfFinOrder m.ne_zero).pow_inj_mod, + ← hζ.eq_orderOf, + ← ZMod.natCast_eq_natCast_iff', + ZMod.natCast_val] at hPowers + apply Units.ext + simpa using hPowers + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinPadic.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinPadic.lean new file mode 100644 index 0000000..b430bec --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinPadic.lean @@ -0,0 +1,389 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicFinitePlaceArtinTower + + +set_option autoImplicit false + +open scoped Classical NNReal NumberField ValuativeRel +open NumberField IsDedekindDomain +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open LocalClassFieldTheory +open LocalFieldTheory +open LocalFieldTheory.DiscreteValuationField +open LocalFieldTheory.DiscreteValuationField.Examples.Qp +open LubinTate + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +attribute [local instance] + rationalFinitePlaceCompletionRatAlgebra + primeFact + levelNeZero + rationalCyclotomicLevelFiniteDimensional + rationalCyclotomicLevelIsAbelianGalois + rationalFinitePlaceBaseNontriviallyNormedField + rationalFinitePlaceBaseLocallyCompactSpace + rationalFinitePlaceBaseIsUltrametricDist + rationalFinitePlaceBaseValued + rationalFinitePlaceBaseValuativeRel + rationalFinitePlaceBaseValuationIsNontrivial + rationalFinitePlaceBaseValuationCompatible + rationalFinitePlaceBaseValuativeRelIsNontrivial + rationalFinitePlaceBaseIsValuativeTopology + rationalFinitePlaceBaseIsNonarchimedeanLocalField + rationalCyclotomicArtinExtensionAlgebra + rationalCyclotomicArtinExtensionSMul + rationalCyclotomicArtinCompletionAlgebra + rationalCyclotomicArtinLocalizedAlgebra + rationalCyclotomicArtinLocalizedGlobalAlgebra + rationalCyclotomicArtinLocalizedGlobalSMul + rationalCyclotomicArtinLocalizedScalarTower + rationalCyclotomicArtinLocalizedFiniteDimensional + rationalCyclotomicArtinLocalizedIsAbelianGalois + rationalCyclotomicArtinLocalizedIsSeparable + rationalCyclotomicArtinLocalizedIsCyclotomic + rationalCyclotomicArtinExtensionFiniteDimensional + rationalCyclotomicArtinExtensionContinuousSMul + rationalCyclotomicArtinExtensionLocallyCompact + rationalCyclotomicArtinLocalizedLocallyCompact + rationalCyclotomicArtinLocalizedIsUltrametricDist + rationalCyclotomicArtinLocalizedValued + rationalCyclotomicArtinLocalizedValuativeRel + rationalCyclotomicArtinLocalizedValuationCompatible + rationalCyclotomicArtinLocalizedValuationHasExtension + rationalCyclotomicArtinLocalizedValuationIsNontrivial + rationalCyclotomicArtinLocalizedValuativeRelIsNontrivial + rationalCyclotomicArtinLocalizedIsValuativeTopology + rationalCyclotomicArtinLocalizedIsNonarchimedeanLocalField + rationalCyclotomicArtinLocalizedIntegerAlgebra + rationalCyclotomicArtinLocalizedIsIntegralClosure + rationalCyclotomicArtinLocalizedIntegerModuleFinite + +section RationalCyclotomicPrincipalPrime + +/-! ## Ramified prime-power transport + +This section reuses the canonical finite-place Artin tower above. In +particular, it introduces no parallel completion/localization instance tower. -/ + +noncomputable local instance + rationalCyclotomicPrincipalPrimeLevelIsCyclotomicExtension + (p : Nat.Primes) (n : ℕ) : + IsCyclotomicExtension {p.1 ^ (n + 1)} ℚ + (KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) := by + change + IsCyclotomicExtension + {(rationalCyclotomicPrincipalPrimeModulus p n : ℕ)} ℚ + (KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) + exact + KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension + (rationalCyclotomicPrincipalPrimeModulus p n) + +private abbrev rationalCyclotomicPrincipalPrimePlace + (p : Nat.Primes) : HeightOneSpectrum (𝓞 ℚ) := + rationalCyclotomicArtinPlace p + +/-- The cyclotomic extension of `ℚ` generated by roots of unity of the given positive level. -/ +abbrev rationalCyclotomicPrincipalPrimeLevel + (m : ℕ+) := + rationalCyclotomicArtinLevel m + +private abbrev rationalCyclotomicPrincipalPrimeExtension + (m : ℕ+) (p : Nat.Primes) := + rationalCyclotomicArtinExtension m p + +/-- The `ℚ_[p]`-algebra structure on the localized cyclotomic completion, +transported through the canonical comparison with the `p`-adic completion. -/ +@[reducible] +noncomputable def + rationalCyclotomicPrincipalPrimeLocalizedPadicAlgebra + (m : ℕ+) (p : Nat.Primes) : + Algebra ℚ_[p.1] + (rationalCyclotomicLocalizedCompletion m + (RayClass.rationalPrime p)) := + ((algebraMap + (HeightOneSpectrum.adicAbv ℚ + (RayClass.rationalPrime p)).Completion + (rationalCyclotomicLocalizedCompletion m + (RayClass.rationalPrime p))).comp + (rationalFinitePlaceCompletionRingEquivPadic p).symm.toRingHom).toAlgebra + +@[reducible] +noncomputable local instance + rationalCyclotomicArtinLocalizedPadicAlgebra + (m : ℕ+) (p : Nat.Primes) : + Algebra ℚ_[p.1] (rationalCyclotomicArtinLocalizedField m p) := + rationalCyclotomicPrincipalPrimeLocalizedPadicAlgebra m p + +private noncomputable def rationalFinitePlaceCompletionAlgEquivPadic + (p : Nat.Primes) : + (rationalCyclotomicArtinBaseAbv p).Completion ≃ₐ[ℚ] ℚ_[p.1] := + AlgEquiv.ofRingEquiv + (f := rationalFinitePlaceCompletionRingEquivPadic p) + (rationalFinitePlaceCompletionRingEquivPadic_algebraMap p) + +noncomputable local instance + rationalCyclotomicArtinLocalizedPadicScalarTower + (m : ℕ+) (p : Nat.Primes) : + IsScalarTower ℚ ℚ_[p.1] + (rationalCyclotomicArtinLocalizedField m p) := by + constructor + intro r x y + simp only [Algebra.smul_def, map_mul, eq_ratCast, + map_ratCast, mul_assoc] + +private theorem rationalCyclotomicArtin_padic_algebraMap + (m : ℕ+) (p : Nat.Primes) : + algebraMap (rationalCyclotomicArtinBaseAbv p).Completion + (rationalCyclotomicArtinLocalizedField m p) = + (algebraMap ℚ_[p.1] + (rationalCyclotomicArtinLocalizedField m p)) ∘ + (rationalFinitePlaceCompletionAlgEquivPadic p) := by + funext a + change + algebraMap (rationalCyclotomicArtinBaseAbv p).Completion + (rationalCyclotomicArtinLocalizedField m p) a = + algebraMap (rationalCyclotomicArtinBaseAbv p).Completion + (rationalCyclotomicArtinLocalizedField m p) + ((rationalFinitePlaceCompletionRingEquivPadic p).symm + (rationalFinitePlaceCompletionRingEquivPadic p a)) + exact + congrArg + (algebraMap (rationalCyclotomicArtinBaseAbv p).Completion + (rationalCyclotomicArtinLocalizedField m p)) + ((rationalFinitePlaceCompletionRingEquivPadic p).symm_apply_apply a).symm + +private theorem rationalCyclotomicArtin_algebraAdjoin_restrictScalars + (m : ℕ+) (p : Nat.Primes) : + (Algebra.adjoin (rationalCyclotomicArtinBaseAbv p).Completion + ({rationalCyclotomicLocalizedPrimitiveRoot m + (rationalCyclotomicArtinPlace p)} : + Set (rationalCyclotomicArtinLocalizedField m p))).restrictScalars ℚ = + (Algebra.adjoin ℚ_[p.1] + ({rationalCyclotomicLocalizedPrimitiveRoot m + (rationalCyclotomicArtinPlace p)} : + Set (rationalCyclotomicArtinLocalizedField m p))).restrictScalars ℚ := by + exact + Algebra.restrictScalars_adjoin_of_algEquiv + (E := rationalCyclotomicArtinLocalizedField m p) + (rationalFinitePlaceCompletionAlgEquivPadic p) + (rationalCyclotomicArtin_padic_algebraMap m p) + ({rationalCyclotomicLocalizedPrimitiveRoot m + (rationalCyclotomicArtinPlace p)} : + Set (rationalCyclotomicArtinLocalizedField m p)) + +private theorem + rationalCyclotomicArtin_baseAlgebraAdjoin_restrict_eq_top + (m : ℕ+) (p : Nat.Primes) : + (Algebra.adjoin (rationalCyclotomicArtinBaseAbv p).Completion + ({rationalCyclotomicLocalizedPrimitiveRoot m + (rationalCyclotomicArtinPlace p)} : + Set (rationalCyclotomicArtinLocalizedField m p))).restrictScalars ℚ = + (⊤ : Subalgebra (rationalCyclotomicArtinBaseAbv p).Completion + (rationalCyclotomicArtinLocalizedField m p)).restrictScalars ℚ := by + have hRoot : IsPrimitiveRoot + (show rationalCyclotomicArtinLocalizedField m p from + rationalCyclotomicLocalizedPrimitiveRoot m + (rationalCyclotomicArtinPlace p)) + (m : ℕ) := + rationalCyclotomicLocalizedPrimitiveRoot_isPrimitiveRoot + m (rationalCyclotomicArtinPlace p) + have hTop : + Algebra.adjoin (rationalCyclotomicArtinBaseAbv p).Completion + ({rationalCyclotomicLocalizedPrimitiveRoot m + (rationalCyclotomicArtinPlace p)} : + Set (rationalCyclotomicArtinLocalizedField m p)) = ⊤ := + IsCyclotomicExtension.adjoin_primitive_root_eq_top + (A := (rationalCyclotomicArtinBaseAbv p).Completion) + (B := rationalCyclotomicArtinLocalizedField m p) hRoot + exact congrArg + (fun A : Subalgebra (rationalCyclotomicArtinBaseAbv p).Completion + (rationalCyclotomicArtinLocalizedField m p) => A.restrictScalars ℚ) + hTop + +private theorem rationalCyclotomicArtin_restrictScalars_top_base_eq_padic + (m : ℕ+) (p : Nat.Primes) : + (⊤ : Subalgebra (rationalCyclotomicArtinBaseAbv p).Completion + (rationalCyclotomicArtinLocalizedField m p)).restrictScalars ℚ = + (⊤ : Subalgebra ℚ_[p.1] + (rationalCyclotomicArtinLocalizedField m p)).restrictScalars ℚ := + (Subalgebra.restrictScalars_top ℚ).trans + (Subalgebra.restrictScalars_top ℚ).symm + +private theorem + rationalCyclotomicArtin_padicAlgebraAdjoin_restrict_eq_top + (m : ℕ+) (p : Nat.Primes) : + (Algebra.adjoin ℚ_[p.1] + ({rationalCyclotomicLocalizedPrimitiveRoot m + (rationalCyclotomicArtinPlace p)} : + Set (rationalCyclotomicArtinLocalizedField m p))).restrictScalars ℚ = + (⊤ : Subalgebra ℚ_[p.1] + (rationalCyclotomicArtinLocalizedField m p)).restrictScalars ℚ := by + exact + (rationalCyclotomicArtin_algebraAdjoin_restrictScalars m p).symm.trans + ((rationalCyclotomicArtin_baseAlgebraAdjoin_restrict_eq_top m p).trans + (rationalCyclotomicArtin_restrictScalars_top_base_eq_padic m p)) + +/-- The finite-dimensional instance for the standard multiplicative level, +named once so all consumers use the same proof term. -/ +theorem rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional + (p : Nat.Primes) (n : ℕ) : + FiniteDimensional ℚ_[p.1] + (standardLubinTateLevelField + (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n) := + standardLubinTateLevelField_finiteDimensional + (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n + +attribute [local instance] + rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional + +noncomputable local instance + rationalCyclotomicPrincipalPrimePadicLevelIsAbelianGalois + (p : Nat.Primes) (n : ℕ) : + IsAbelianGalois ℚ_[p.1] + (RationalCyclotomicPrincipalPrimePadicLevel p n) := + standardLubinTateLevelField_isAbelianGalois + (padicLocalField p.1) + (padicMultiplicativeLubinTateSeries_isUniformizer p.1) n + +@[reducible] +noncomputable local instance rationalPrimeFactorCompletionPadicAlgebra + (p : Nat.Primes) : + Algebra (RationalCyclotomicPrincipalPrimeCompletion p) ℚ_[p.1] := + (rationalFinitePlaceCompletionRingEquivPadic p).toRingHom.toAlgebra + +/-- The genuine multiplicative Lubin--Tate level is generated by its +primitive `p ^ (n + 1)`-st root of unity. -/ +theorem padicMultiplicativePrimitiveRoot_adjoin_eq_top + (p : ℕ) [Fact p.Prime] (n : ℕ) : + let hπ := padicMultiplicativeLubinTateSeries_isUniformizer p + let T := standardLubinTateLevelField hπ n + Algebra.adjoin ℚ_[p] + ({padicMultiplicativePrimitiveRoot p n} : Set T) = + ⊤ := by + let hπ := padicMultiplicativeLubinTateSeries_isUniformizer p + let T := standardLubinTateLevelField hπ n + let ζ : T := padicMultiplicativePrimitiveRoot p n + let m := p ^ (n + 1) + let : NeZero m := + ⟨pow_ne_zero _ (Fact.out : Nat.Prime p).ne_zero⟩ + let : FiniteDimensional ℚ_[p] T := + standardLubinTateLevelField_finiteDimensional hπ n + have hζ : IsPrimitiveRoot ζ m := by + simpa only [ζ, m] using + padicMultiplicativePrimitiveRoot_isPrimitiveRoot p n + let A : IntermediateField ℚ_[p] T := + IntermediateField.adjoin ℚ_[p] {ζ} + let : IsCyclotomicExtension {m} ℚ_[p] A := + hζ.intermediateField_adjoin_isCyclotomicExtension ℚ_[p] + have hAfin : + Module.finrank ℚ_[p] A = Nat.totient m := by + exact + IsCyclotomicExtension.finrank A + (by + simpa only [m] using + padicCyclotomicPolynomial_irreducible_prime_pow_succ + p n) + have hTfin : + Module.finrank ℚ_[p] T = Nat.totient m := by + rw [standardLubinTateLevelField_finrank hπ n] + have hcard : + Nat.card (padicLocalField p).residueField = p := by + simpa [padicLocalField] using + padicCompleteDVF_residueField_card p + rw [hcard, Nat.totient_prime_pow + (Fact.out : Nat.Prime p) (Nat.succ_pos n)] + simp [Nat.mul_comm] + have hAeq : A = ⊤ := by + apply IntermediateField.eq_of_le_of_finrank_eq le_top + simpa using hAfin.trans hTfin.symm + calc + Algebra.adjoin ℚ_[p] {ζ} = A.toSubalgebra := by + exact + (IntermediateField.adjoin_toSubalgebra + ({ζ} : Set T)).symm + _ = (⊤ : IntermediateField ℚ_[p] T).toSubalgebra := + congrArg IntermediateField.toSubalgebra hAeq + _ = ⊤ := rfl + +/-- The standard multiplicative Lubin--Tate level is the actual +`p ^ (n + 1)`-cyclotomic extension of `ℚ_p`. -/ +theorem padicMultiplicativeLevel_isCyclotomicExtension + (p : ℕ) [Fact p.Prime] (n : ℕ) : + let hπ := padicMultiplicativeLubinTateSeries_isUniformizer p + let T := standardLubinTateLevelField hπ n + IsCyclotomicExtension {p ^ (n + 1)} ℚ_[p] T := by + let hπ := padicMultiplicativeLubinTateSeries_isUniformizer p + let T := standardLubinTateLevelField hπ n + exact + padic_isCyclotomicExtension_of_primitiveRoot_adjoin_eq_top + (padicMultiplicativePrimitiveRoot p n) + (padicMultiplicativePrimitiveRoot_isPrimitiveRoot p n) + (padicMultiplicativePrimitiveRoot_adjoin_eq_top p n) + +private theorem + rationalCyclotomicPrincipalPrimeLocalizedPrimitiveRoot_isPrimitiveRoot + (p : Nat.Primes) (n : ℕ) : + IsPrimitiveRoot + (rationalCyclotomicLocalizedPrimitiveRoot + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p)) + (p.1 ^ (n + 1)) := by + change + IsPrimitiveRoot + (rationalCyclotomicLocalizedPrimitiveRoot + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p)) + (rationalCyclotomicPrincipalPrimeModulus p n : ℕ) + exact + rationalCyclotomicLocalizedPrimitiveRoot_isPrimitiveRoot + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p) + +private theorem + rationalCyclotomicPrincipalPrimeLocalizedPrimitiveRoot_adjoin_eq_top + (p : Nat.Primes) (n : ℕ) : + Algebra.adjoin ℚ_[p.1] + ({rationalCyclotomicLocalizedPrimitiveRoot + (rationalCyclotomicPrincipalPrimeModulus p n) + (rationalCyclotomicArtinPlace p)} : + Set (rationalCyclotomicArtinLocalizedField + (rationalCyclotomicPrincipalPrimeModulus p n) p)) = + ⊤ := by + exact + (Subalgebra.restrictScalars_injective ℚ) + (rationalCyclotomicArtin_padicAlgebraAdjoin_restrict_eq_top + (rationalCyclotomicPrincipalPrimeModulus p n) p) + +theorem + rationalCyclotomicPrincipalPrimeLocalizedLevel_isCyclotomicExtension + (p : Nat.Primes) (n : ℕ) : + IsCyclotomicExtension {p.1 ^ (n + 1)} ℚ_[p.1] + (rationalCyclotomicArtinLocalizedField + (rationalCyclotomicPrincipalPrimeModulus p n) p) := by + exact + padic_isCyclotomicExtension_of_primitiveRoot_adjoin_eq_top + (rationalCyclotomicLocalizedPrimitiveRoot + (rationalCyclotomicPrincipalPrimeModulus p n) + (rationalCyclotomicArtinPlace p)) + (rationalCyclotomicPrincipalPrimeLocalizedPrimitiveRoot_isPrimitiveRoot + p n) + (rationalCyclotomicPrincipalPrimeLocalizedPrimitiveRoot_adjoin_eq_top + p n) + + +end RationalCyclotomicPrincipalPrime + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinPrincipal.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinPrincipal.lean new file mode 100644 index 0000000..43c227c --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinPrincipal.lean @@ -0,0 +1,228 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicFinitePlaceArtinAction + + +set_option autoImplicit false + +open scoped Classical NNReal NumberField ValuativeRel +open NumberField IsDedekindDomain +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open LocalClassFieldTheory +open LocalFieldTheory +open LocalFieldTheory.DiscreteValuationField +open LocalFieldTheory.DiscreteValuationField.Examples.Qp +open LubinTate + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +section RationalCyclotomicPrincipalPrime + +attribute [local instance] + rationalFinitePlaceCompletionRatAlgebra + primeFact + levelNeZero + rationalCyclotomicLevelFiniteDimensional + rationalCyclotomicLevelIsAbelianGalois + rationalFinitePlaceBaseNontriviallyNormedField + rationalFinitePlaceBaseLocallyCompactSpace + rationalFinitePlaceBaseIsUltrametricDist + rationalFinitePlaceBaseValued + rationalFinitePlaceBaseValuativeRel + rationalFinitePlaceBaseValuationIsNontrivial + rationalFinitePlaceBaseValuationCompatible + rationalFinitePlaceBaseValuativeRelIsNontrivial + rationalFinitePlaceBaseIsValuativeTopology + rationalFinitePlaceBaseIsNonarchimedeanLocalField + rationalCyclotomicArtinExtensionAlgebra + rationalCyclotomicArtinExtensionSMul + rationalCyclotomicArtinCompletionAlgebra + rationalCyclotomicArtinLocalizedAlgebra + rationalCyclotomicArtinLocalizedGlobalAlgebra + rationalCyclotomicArtinLocalizedGlobalSMul + rationalCyclotomicArtinLocalizedScalarTower + rationalCyclotomicArtinLocalizedFiniteDimensional + rationalCyclotomicArtinLocalizedIsAbelianGalois + rationalCyclotomicArtinLocalizedIsSeparable + rationalCyclotomicArtinLocalizedIsCyclotomic + rationalCyclotomicArtinExtensionFiniteDimensional + rationalCyclotomicArtinExtensionContinuousSMul + rationalCyclotomicArtinExtensionLocallyCompact + rationalCyclotomicArtinLocalizedLocallyCompact + rationalCyclotomicArtinLocalizedIsUltrametricDist + rationalCyclotomicArtinLocalizedValued + rationalCyclotomicArtinLocalizedValuativeRel + rationalCyclotomicArtinLocalizedValuationCompatible + rationalCyclotomicArtinLocalizedValuationHasExtension + rationalCyclotomicArtinLocalizedValuationIsNontrivial + rationalCyclotomicArtinLocalizedValuativeRelIsNontrivial + rationalCyclotomicArtinLocalizedIsValuativeTopology + rationalCyclotomicArtinLocalizedIsNonarchimedeanLocalField + rationalCyclotomicArtinLocalizedIntegerAlgebra + rationalCyclotomicArtinLocalizedIsIntegralClosure + rationalCyclotomicArtinLocalizedIntegerModuleFinite + rationalCyclotomicPrincipalPrimeLevelIsCyclotomicExtension + rationalCyclotomicArtinLocalizedPadicAlgebra + rationalCyclotomicArtinLocalizedPadicScalarTower + rationalCyclotomicPrincipalPrimePadicLevelIsAbelianGalois + rationalPrimeFactorCompletionPadicAlgebra + rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional + +private theorem + rationalCyclotomicPrincipalPrime_padicUnitParameterArtin_action + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x + (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) = + (rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) ^ + (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val := by + let m := rationalCyclotomicPrincipalPrimeModulus p n + let E := rationalCyclotomicArtinLocalizedField m p + let T := RationalCyclotomicPrincipalPrimePadicLevel p n + let eL : E ≃ₐ[ℚ_[p.1]] T := + rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + let zetaE : E := rationalCyclotomicPrincipalPrimeLocalizedRoot p n + let tau : Gal(T / ℚ_[p.1]) := + rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x + let a := rationalCyclotomicPrincipalPrimeResidueUnit p n x + let zetaT : T := padicMultiplicativePrimitiveRoot p.1 n + have hzetaE : IsPrimitiveRoot zetaE (p.1 ^ (n + 1)) := by + change + IsPrimitiveRoot + (rationalCyclotomicLocalizedPrimitiveRoot m + (RayClass.rationalPrime p)) (m : ℕ) + exact + rationalCyclotomicLocalizedPrimitiveRoot_isPrimitiveRoot + m (RayClass.rationalPrime p) + have hrho : IsPrimitiveRoot (eL zetaE) (p.1 ^ (n + 1)) := + hzetaE.map_of_injective eL.injective + have hzetaT : IsPrimitiveRoot zetaT (p.1 ^ (n + 1)) := + padicMultiplicativePrimitiveRoot_isPrimitiveRoot p.1 n + have htauZetaT : tau zetaT = zetaT ^ a.val.val := + padicMultiplicativePrimitiveRoot_rationalPrimeUnitParameterGaloisAction + p n x + exact + map_primitiveRoot_eq_pow_of_eq_pow + tau.toMonoidHom zetaT (eL zetaE) + (p.1 ^ (n + 1)) a.val.val hzetaT hrho htauZetaT + +private theorem rationalCyclotomicPrincipalPrime_localArtin_action + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + finitePlaceLocalArtinMonoidHom + (K := ℚ) + (L := KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) + (RayClass.rationalPrime p) + (rationalCyclotomicChosenFinitePlaceExtension + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p)) + (IdeleGroup.finiteComponent + (RayClass.rationalPrime p) + (IdeleGroup.principalIdele ℚ x)) + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n) = + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n) ^ + (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val := by + let eL := rationalCyclotomicLocalizedCompletionPadicAlgEquiv p n + apply eL.injective + calc + _ = _ := + finitePlaceLocalArtinMonoidHom_apply_semilinear + (K := ℚ) + (L := KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) + (K' := ℚ_[p.1]) + (L' := RationalCyclotomicPrincipalPrimePadicLevel p n) + (RayClass.rationalPrime p) + (rationalCyclotomicChosenFinitePlaceExtension + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p)) + (rationalFinitePlaceCompletionRingEquivPadic p) + eL.toRingEquiv + (rationalCyclotomicPrincipalPrime_localizedBase_commutes p n) + (rationalFinitePlaceCompletionRingEquivPadic_semilinearValuationCompatible + p) + (IdeleGroup.finiteComponent + (RayClass.rationalPrime p) + (IdeleGroup.principalIdele ℚ x)) + (rationalCyclotomicPrincipalPrimeLocalizedRoot p n) + _ = rationalCyclotomicPrincipalPrimePadicUnitParameterArtin p n x + (eL (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) := + rationalCyclotomicPrincipalPrime_padicArtin_action_eq_unitParameter + p n x + _ = (eL (rationalCyclotomicPrincipalPrimeLocalizedRoot p n)) ^ + (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val := + rationalCyclotomicPrincipalPrime_padicUnitParameterArtin_action p n x + _ = eL ((rationalCyclotomicPrincipalPrimeLocalizedRoot p n) ^ + (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val) := + (map_pow eL (rationalCyclotomicPrincipalPrimeLocalizedRoot p n) + (rationalCyclotomicPrincipalPrimeResidueUnit p n x).val.val).symm + +/-- The finite-place Artin symbol at the ramified prime, in its canonical +local-to-global factored form. Keeping this specialization opaque prevents its +dependent local/global instance tower from being unfolded downstream. -/ +noncomputable def rationalCyclotomicPrincipalPrimeChosenArtin + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n) ≃ₐ[ℚ] + KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n) := + finitePlaceLocalToGlobalMonoidHom + (K := ℚ) + (L := KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) + (RayClass.rationalPrime p) + (rationalCyclotomicChosenFinitePlaceExtension + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p)) + (finitePlaceLocalArtinMonoidHom + (K := ℚ) + (L := KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) + (RayClass.rationalPrime p) + (rationalCyclotomicChosenFinitePlaceExtension + (rationalCyclotomicPrincipalPrimeModulus p n) + (RayClass.rationalPrime p)) + (IdeleGroup.finiteComponent + (RayClass.rationalPrime p) + (IdeleGroup.principalIdele ℚ x))) + +/-- At the ramified prime, the cyclotomic character of the chosen finite-place +Artin symbol is the direct reduction of the rational `p`-adic unit. -/ +theorem galEquivZMod_chosenFinitePlaceArtinMonoidHom_principal_at_prime + (p : Nat.Primes) (n : ℕ) (x : ℚˣ) : + IsCyclotomicExtension.Rat.galEquivZMod + (p.1 ^ (n + 1)) + (KummerTheory.rationalCyclotomicLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) + (hK := + KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension + (rationalCyclotomicPrincipalPrimeModulus p n)) + (rationalCyclotomicPrincipalPrimeChosenArtin p n x) = + Units.map + (PadicInt.toZModPow (p := p.1) (n + 1)).toMonoidHom + (padicIntUnitOfRat p + (rationalPrimeUnit x p : ℚ) + (rationalPrimeUnit x p).ne_zero + (padicValRat_rationalPrimeUnit x p)) := by + change _ = rationalCyclotomicPrincipalPrimeResidueUnit p n x + apply rationalCyclotomicPrincipalPrime_galEquivZMod_eq_of_action p n + simp only [rationalCyclotomicPrincipalPrimeChosenArtin] + apply finitePlaceLocalToGlobalMonoidHom_apply_pow_of_localized_action + (zLocal := rationalCyclotomicPrincipalPrimeLocalizedRoot p n) + · rfl + · exact rationalCyclotomicPrincipalPrime_localArtin_action p n x + +end RationalCyclotomicPrincipalPrime + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinTower.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinTower.lean new file mode 100644 index 0000000..77efaa0 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinTower.lean @@ -0,0 +1,357 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicFinitePlaceArtinBase + + +set_option autoImplicit false + +open scoped Classical NNReal NumberField ValuativeRel +open NumberField IsDedekindDomain +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open LocalClassFieldTheory +open LocalFieldTheory +open LocalFieldTheory.DiscreteValuationField +open LocalFieldTheory.DiscreteValuationField.Examples.Qp +open LubinTate + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +attribute [local instance] + rationalFinitePlaceCompletionRatAlgebra + primeFact + levelNeZero + rationalCyclotomicLevelFiniteDimensional + rationalCyclotomicLevelIsAbelianGalois + rationalFinitePlaceBaseNontriviallyNormedField + rationalFinitePlaceBaseLocallyCompactSpace + rationalFinitePlaceBaseIsUltrametricDist + rationalFinitePlaceBaseValued + rationalFinitePlaceBaseValuativeRel + rationalFinitePlaceBaseValuationIsNontrivial + rationalFinitePlaceBaseValuationCompatible + rationalFinitePlaceBaseValuativeRelIsNontrivial + rationalFinitePlaceBaseIsValuativeTopology + rationalFinitePlaceBaseIsNonarchimedeanLocalField + +/-- The finite place of `ℚ` determined by the rational prime `q`. -/ +abbrev rationalCyclotomicArtinPlace (q : Nat.Primes) : + HeightOneSpectrum (𝓞 ℚ) := + RayClass.rationalPrime q + +/-- The `q`-adic absolute value on `ℚ` used for the finite-place Artin map. -/ +abbrev rationalCyclotomicArtinBaseAbv (q : Nat.Primes) : + AbsoluteValue ℚ ℝ := + HeightOneSpectrum.adicAbv ℚ (rationalCyclotomicArtinPlace q) + +/-- The rational cyclotomic extension at the positive level `m`. -/ +abbrev rationalCyclotomicArtinLevel (m : ℕ+) := + KummerTheory.rationalCyclotomicLevel m + +/-- A chosen extension of the `q`-adic absolute value to the cyclotomic field. -/ +abbrev rationalCyclotomicArtinExtension + (m : ℕ+) (q : Nat.Primes) : + AbsoluteValueExtension + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinLevel m) := + chosenFinitePlaceExtension + (L := rationalCyclotomicArtinLevel m) + (rationalCyclotomicArtinPlace q) + +/-- The local completion of the cyclotomic field at the chosen place above `q`. -/ +abbrev rationalCyclotomicArtinLocalizedField + (m : ℕ+) (q : Nat.Primes) := + AlgebraicNumberTheory.Valuations.LocalizedCompletion + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinExtension m q) + +@[reducible] +noncomputable local instance rationalCyclotomicArtinExtensionAlgebra + (m : ℕ+) (q : Nat.Primes) : + Algebra ℚ + (rationalCyclotomicArtinExtension m q).1.Completion := + AbsoluteValue.extensionCompletionAlgebra + (K := ℚ) (rationalCyclotomicArtinExtension m q).1 + +@[reducible] +noncomputable local instance rationalCyclotomicArtinExtensionSMul + (m : ℕ+) (q : Nat.Primes) : + SMul ℚ + (rationalCyclotomicArtinExtension m q).1.Completion := + (rationalCyclotomicArtinExtensionAlgebra m q).toSMul + +@[reducible] +noncomputable local instance + rationalCyclotomicArtinCompletionAlgebra + (m : ℕ+) (q : Nat.Primes) : + Algebra (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinExtension m q).1.Completion := + AbsoluteValue.completionAlgebra + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinExtension m q).1 + (rationalCyclotomicArtinExtension m q).2 + +@[reducible] +noncomputable local instance rationalCyclotomicArtinLocalizedAlgebra + (m : ℕ+) (q : Nat.Primes) : + Algebra (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinLocalizedField m q) := + finitePlaceLocalArtinLocalizedAlgebra + (K := ℚ) (L := rationalCyclotomicArtinLevel m) + (rationalCyclotomicArtinPlace q) + (rationalCyclotomicArtinExtension m q) + +noncomputable local instance + rationalCyclotomicArtinLocalizedGlobalAlgebra + (m : ℕ+) (q : Nat.Primes) : + Algebra ℚ (rationalCyclotomicArtinLocalizedField m q) := + LocalClassFieldTheory.localizedCompletionGlobalAlgebra + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinExtension m q) + +noncomputable local instance + rationalCyclotomicArtinLocalizedGlobalSMul + (m : ℕ+) (q : Nat.Primes) : + SMul ℚ (rationalCyclotomicArtinLocalizedField m q) := + (rationalCyclotomicArtinLocalizedGlobalAlgebra m q).toSMul + +noncomputable local instance + rationalCyclotomicArtinLocalizedScalarTower + (m : ℕ+) (q : Nat.Primes) : + IsScalarTower ℚ + (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinLocalizedField m q) := by + constructor + intro r x y + simp only [Algebra.smul_def, map_mul, eq_ratCast, + map_ratCast, mul_assoc] + +noncomputable local instance + rationalCyclotomicArtinLocalizedFiniteDimensional + (m : ℕ+) (q : Nat.Primes) : + FiniteDimensional + (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinLocalizedField m q) := + finitePlaceLocalArtinFiniteDimensional + (K := ℚ) (L := rationalCyclotomicArtinLevel m) + (rationalCyclotomicArtinPlace q) + (rationalCyclotomicArtinExtension m q) + +noncomputable local instance + rationalCyclotomicArtinLocalizedIsAbelianGalois + (m : ℕ+) (q : Nat.Primes) : + IsAbelianGalois + (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinLocalizedField m q) := + finitePlaceLocalArtinIsAbelianGalois + (K := ℚ) (L := rationalCyclotomicArtinLevel m) + (rationalCyclotomicArtinPlace q) + (rationalCyclotomicArtinExtension m q) + (inferInstance : + FiniteDimensional ℚ (rationalCyclotomicArtinLevel m)) + +noncomputable local instance + rationalCyclotomicArtinLocalizedIsSeparable + (m : ℕ+) (q : Nat.Primes) : + Algebra.IsSeparable + (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinLocalizedField m q) := + (rationalCyclotomicArtinLocalizedIsAbelianGalois m q).toIsGalois.to_isSeparable + +noncomputable local instance + rationalCyclotomicArtinLocalizedIsCyclotomic + (m : ℕ+) (q : Nat.Primes) : + IsCyclotomicExtension {(m : ℕ)} + (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinLocalizedField m q) := + rationalCyclotomicLevel_localizedCompletion_isCyclotomicExtension + m (rationalCyclotomicArtinPlace q) + +noncomputable local instance + rationalCyclotomicArtinExtensionFiniteDimensional + (m : ℕ+) (q : Nat.Primes) : + FiniteDimensional + (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinExtension m q).1.Completion := + completionModuleFinite + (rationalCyclotomicArtinBaseAbv q) + (RayClass.adicAbv_isNontrivial + (rationalCyclotomicArtinPlace q)) + (rationalCyclotomicArtinExtension m q) + +noncomputable local instance + rationalCyclotomicArtinExtensionContinuousSMul + (m : ℕ+) (q : Nat.Primes) : + ContinuousSMul + (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinExtension m q).1.Completion := + continuousSMul_of_algebraMap _ _ + (AbsoluteValue.completionMap_isometry + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinExtension m q).1 + (rationalCyclotomicArtinExtension m q).2).continuous + +noncomputable local instance + rationalCyclotomicArtinExtensionLocallyCompact + (m : ℕ+) (q : Nat.Primes) : + LocallyCompactSpace + (rationalCyclotomicArtinExtension m q).1.Completion := + LocallyCompactSpace.of_finiteDimensional_of_complete + (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinExtension m q).1.Completion + +private noncomputable def + rationalCyclotomicArtinLocalizedEquivCompletion + (m : ℕ+) (q : Nat.Primes) : + rationalCyclotomicArtinLocalizedField m q ≃ᵢ + (rationalCyclotomicArtinExtension m q).1.Completion := + { toEquiv := + (localizedCompletionEquivCompletion + (rationalCyclotomicArtinBaseAbv q) + (RayClass.adicAbv_isNontrivial + (rationalCyclotomicArtinPlace q)) + (rationalCyclotomicArtinExtension m q)).toEquiv + isometry_toFun := + Isometry.of_dist_eq fun _ _ => rfl } + +noncomputable local instance + rationalCyclotomicArtinLocalizedLocallyCompact + (m : ℕ+) (q : Nat.Primes) : + LocallyCompactSpace + (rationalCyclotomicArtinLocalizedField m q) := + ((rationalCyclotomicArtinLocalizedEquivCompletion m q).toHomeomorph.locallyCompactSpace_iff).2 + inferInstance + +noncomputable local instance + rationalCyclotomicArtinLocalizedIsUltrametricDist + (m : ℕ+) (q : Nat.Primes) : + IsUltrametricDist + (rationalCyclotomicArtinLocalizedField m q) := + localizedCompletionIsUltrametricDist + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinExtension m q) + (HeightOneSpectrum.isNonarchimedean_adicAbv + ℚ (rationalCyclotomicArtinPlace q)) + +noncomputable local instance rationalCyclotomicArtinLocalizedValued + (m : ℕ+) (q : Nat.Primes) : + Valued (rationalCyclotomicArtinLocalizedField m q) ℝ≥0 := + localizedCompletionFinitePlaceValued + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinExtension m q) + (HeightOneSpectrum.isNonarchimedean_adicAbv + ℚ (rationalCyclotomicArtinPlace q)) + +@[reducible] +noncomputable local instance + rationalCyclotomicArtinLocalizedValuativeRel + (m : ℕ+) (q : Nat.Primes) : + ValuativeRel (rationalCyclotomicArtinLocalizedField m q) := + localizedCompletionFinitePlaceValuativeRel + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinExtension m q) + (HeightOneSpectrum.isNonarchimedean_adicAbv + ℚ (rationalCyclotomicArtinPlace q)) + +noncomputable local instance + rationalCyclotomicArtinLocalizedValuationCompatible + (m : ℕ+) (q : Nat.Primes) : + (Valued.v : Valuation + (rationalCyclotomicArtinLocalizedField m q) ℝ≥0).Compatible := + Valuation.Compatible.ofValuation _ + +noncomputable local instance + rationalCyclotomicArtinLocalizedValuationHasExtension + (m : ℕ+) (q : Nat.Primes) : + Valuation.HasExtension + (ValuativeRel.valuation + (rationalCyclotomicArtinBaseAbv q).Completion) + (ValuativeRel.valuation + (rationalCyclotomicArtinLocalizedField m q)) := + localizedCompletionValuationHasExtension + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinExtension m q) + (HeightOneSpectrum.isNonarchimedean_adicAbv + ℚ (rationalCyclotomicArtinPlace q)) + +noncomputable local instance + rationalCyclotomicArtinLocalizedValuationIsNontrivial + (m : ℕ+) (q : Nat.Primes) : + (ValuativeRel.valuation + (rationalCyclotomicArtinLocalizedField m q)).IsNontrivial := + Valuation.IsNontrivial.of_hasExtension + (ValuativeRel.valuation + (rationalCyclotomicArtinBaseAbv q).Completion) + (ValuativeRel.valuation + (rationalCyclotomicArtinLocalizedField m q)) + +noncomputable local instance + rationalCyclotomicArtinLocalizedValuativeRelIsNontrivial + (m : ℕ+) (q : Nat.Primes) : + ValuativeRel.IsNontrivial + (rationalCyclotomicArtinLocalizedField m q) := + (ValuativeRel.isNontrivial_iff_isNontrivial + (ValuativeRel.valuation + (rationalCyclotomicArtinLocalizedField m q))).2 inferInstance + +noncomputable local instance + rationalCyclotomicArtinLocalizedIsValuativeTopology + (m : ℕ+) (q : Nat.Primes) : + IsValuativeTopology + (rationalCyclotomicArtinLocalizedField m q) := + isValuativeTopology_of_valued_ofValuation + (rationalCyclotomicArtinLocalizedField m q) ℝ≥0 + +noncomputable local instance + rationalCyclotomicArtinLocalizedIsNonarchimedeanLocalField + (m : ℕ+) (q : Nat.Primes) : + IsNonarchimedeanLocalField + (rationalCyclotomicArtinLocalizedField m q) := + { toIsValuativeTopology := inferInstance + toLocallyCompactSpace := inferInstance + toIsNontrivial := inferInstance } + +noncomputable local instance + rationalCyclotomicArtinLocalizedIntegerAlgebra + (m : ℕ+) (q : Nat.Primes) : + Algebra + 𝒪[(rationalCyclotomicArtinBaseAbv q).Completion] + (rationalCyclotomicArtinLocalizedField m q) := + Algebra.ofSubsemiring + 𝒪[(rationalCyclotomicArtinBaseAbv q).Completion] + +noncomputable local instance + rationalCyclotomicArtinLocalizedIsIntegralClosure + (m : ℕ+) (q : Nat.Primes) : + IsIntegralClosure + 𝒪[rationalCyclotomicArtinLocalizedField m q] + 𝒪[(rationalCyclotomicArtinBaseAbv q).Completion] + (rationalCyclotomicArtinLocalizedField m q) := + localizedCompletionIsIntegralClosureWithExtension + (rationalCyclotomicArtinBaseAbv q) + (rationalCyclotomicArtinExtension m q) + (RayClass.adicAbv_isNontrivial + (rationalCyclotomicArtinPlace q)) + (HeightOneSpectrum.isNonarchimedean_adicAbv + ℚ (rationalCyclotomicArtinPlace q)) + +noncomputable local instance + rationalCyclotomicArtinLocalizedIntegerModuleFinite + (m : ℕ+) (q : Nat.Primes) : + Module.Finite + 𝒪[(rationalCyclotomicArtinBaseAbv q).Completion] + 𝒪[rationalCyclotomicArtinLocalizedField m q] := + integerRing_moduleFinite_of_isIntegralClosure + (rationalCyclotomicArtinBaseAbv q).Completion + (rationalCyclotomicArtinLocalizedField m q) + + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinTransport.lean b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinTransport.lean new file mode 100644 index 0000000..666b029 --- /dev/null +++ b/Lean4/ClassFieldTheory/GlobalClassFieldTheory/Reciprocity/RationalCyclotomicFinitePlaceArtinTransport.lean @@ -0,0 +1,375 @@ +/- +Copyright (c) 2026 Naganori Yamaguchi (https://github.com/n-yamaguchi-0729). All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Naganori Yamaguchi (assisted by OpenAI Codex) +-/ + +import ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.RationalCyclotomicFinitePlaceArtinPadic + + +set_option autoImplicit false + +open scoped Classical NNReal NumberField ValuativeRel +open NumberField IsDedekindDomain +open AlgebraicNumberTheory.Valuations +open HilbertRamification +open LocalClassFieldTheory +open LocalFieldTheory +open LocalFieldTheory.DiscreteValuationField +open LocalFieldTheory.DiscreteValuationField.Examples.Qp +open LubinTate + +noncomputable section + +namespace GlobalClassFieldTheory +namespace Reciprocity + +section RationalCyclotomicPrincipalPrime + +attribute [local instance] + rationalFinitePlaceCompletionRatAlgebra + primeFact + levelNeZero + rationalCyclotomicLevelFiniteDimensional + rationalCyclotomicLevelIsAbelianGalois + rationalFinitePlaceBaseNontriviallyNormedField + rationalFinitePlaceBaseLocallyCompactSpace + rationalFinitePlaceBaseIsUltrametricDist + rationalFinitePlaceBaseValued + rationalFinitePlaceBaseValuativeRel + rationalFinitePlaceBaseValuationIsNontrivial + rationalFinitePlaceBaseValuationCompatible + rationalFinitePlaceBaseValuativeRelIsNontrivial + rationalFinitePlaceBaseIsValuativeTopology + rationalFinitePlaceBaseIsNonarchimedeanLocalField + rationalCyclotomicArtinExtensionAlgebra + rationalCyclotomicArtinExtensionSMul + rationalCyclotomicArtinCompletionAlgebra + rationalCyclotomicArtinLocalizedAlgebra + rationalCyclotomicArtinLocalizedGlobalAlgebra + rationalCyclotomicArtinLocalizedGlobalSMul + rationalCyclotomicArtinLocalizedScalarTower + rationalCyclotomicArtinLocalizedFiniteDimensional + rationalCyclotomicArtinLocalizedIsAbelianGalois + rationalCyclotomicArtinLocalizedIsSeparable + rationalCyclotomicArtinLocalizedIsCyclotomic + rationalCyclotomicArtinExtensionFiniteDimensional + rationalCyclotomicArtinExtensionContinuousSMul + rationalCyclotomicArtinExtensionLocallyCompact + rationalCyclotomicArtinLocalizedLocallyCompact + rationalCyclotomicArtinLocalizedIsUltrametricDist + rationalCyclotomicArtinLocalizedValued + rationalCyclotomicArtinLocalizedValuativeRel + rationalCyclotomicArtinLocalizedValuationCompatible + rationalCyclotomicArtinLocalizedValuationHasExtension + rationalCyclotomicArtinLocalizedValuationIsNontrivial + rationalCyclotomicArtinLocalizedValuativeRelIsNontrivial + rationalCyclotomicArtinLocalizedIsValuativeTopology + rationalCyclotomicArtinLocalizedIsNonarchimedeanLocalField + rationalCyclotomicArtinLocalizedIntegerAlgebra + rationalCyclotomicArtinLocalizedIsIntegralClosure + rationalCyclotomicArtinLocalizedIntegerModuleFinite + rationalCyclotomicPrincipalPrimeLevelIsCyclotomicExtension + rationalCyclotomicArtinLocalizedPadicAlgebra + rationalCyclotomicArtinLocalizedPadicScalarTower + rationalCyclotomicPrincipalPrimePadicLevelIsAbelianGalois + rationalPrimeFactorCompletionPadicAlgebra + rationalCyclotomicPrincipalPrimePadicLevelFiniteDimensional + +/-- The chosen localized global cyclotomic level, transported over the +completion equivalence, is the standard multiplicative Lubin--Tate level. -/ +noncomputable def rationalCyclotomicLocalizedCompletionPadicAlgEquiv + (p : Nat.Primes) (n : ℕ) : + rationalCyclotomicArtinLocalizedField + (rationalCyclotomicPrincipalPrimeModulus p n) p ≃ₐ[ℚ_[p.1]] + RationalCyclotomicPrincipalPrimePadicLevel p n := by + letI : IsCyclotomicExtension {p.1 ^ (n + 1)} ℚ_[p.1] + (rationalCyclotomicArtinLocalizedField + (rationalCyclotomicPrincipalPrimeModulus p n) p) := + rationalCyclotomicPrincipalPrimeLocalizedLevel_isCyclotomicExtension p n + letI : IsCyclotomicExtension {p.1 ^ (n + 1)} ℚ_[p.1] + (RationalCyclotomicPrincipalPrimePadicLevel p n) := + padicMultiplicativeLevel_isCyclotomicExtension p.1 n + exact + IsCyclotomicExtension.algEquiv + {p.1 ^ (n + 1)} ℚ_[p.1] + (rationalCyclotomicArtinLocalizedField + (rationalCyclotomicPrincipalPrimeModulus p n) p) + (RationalCyclotomicPrincipalPrimePadicLevel p n) + +/-! ## The ramified principal finite-place factor -/ + +theorem + rationalCyclotomicPrincipalPrime_galEquivZMod_eq_of_action + (p : Nat.Primes) (n : ℕ) + (sigma : Gal( + rationalCyclotomicPrincipalPrimeLevel + (rationalCyclotomicPrincipalPrimeModulus p n) / ℚ)) + (a : (ZMod (p.1 ^ (n + 1)))ˣ) + (haction : + sigma (rationalCyclotomicLevelPrimitiveRoot + (rationalCyclotomicPrincipalPrimeModulus p n)) = + rationalCyclotomicLevelPrimitiveRoot + (rationalCyclotomicPrincipalPrimeModulus p n) ^ a.val.val) : + IsCyclotomicExtension.Rat.galEquivZMod + (p.1 ^ (n + 1)) + (rationalCyclotomicPrincipalPrimeLevel + (rationalCyclotomicPrincipalPrimeModulus p n)) + (hK := + KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension + (rationalCyclotomicPrincipalPrimeModulus p n)) sigma = + a := by + let m := rationalCyclotomicPrincipalPrimeModulus p n + let L := rationalCyclotomicPrincipalPrimeLevel m + let zeta : L := rationalCyclotomicLevelPrimitiveRoot m + have hzeta : IsPrimitiveRoot zeta (p.1 ^ (n + 1)) := by + change + IsPrimitiveRoot + (rationalCyclotomicLevelPrimitiveRoot m) (m : ℕ) + exact rationalCyclotomicLevelPrimitiveRoot_isPrimitiveRoot m + change + IsCyclotomicExtension.Rat.galEquivZMod + (p.1 ^ (n + 1)) L + (hK := + KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension m) + sigma = a + let c := + IsCyclotomicExtension.Rat.galEquivZMod + (p.1 ^ (n + 1)) L + (hK := + KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension m) + sigma + have hc : + sigma zeta = zeta ^ c.val.val := + IsCyclotomicExtension.Rat.galEquivZMod_apply_of_pow_eq + (hK := + KummerTheory.rationalCyclotomicLevel_isCyclotomicExtension m) + (p.1 ^ (n + 1)) L sigma hzeta.pow_eq_one + have hpowers : + zeta ^ c.val.val = zeta ^ a.val.val := + hc.symm.trans haction + rw [(hzeta.isOfFinOrder m.ne_zero).pow_inj_mod, + ← hzeta.eq_orderOf, + ← ZMod.natCast_eq_natCast_iff'] at hpowers + change + (c.val.val : ZMod (p.1 ^ (n + 1))) = + (a.val.val : ZMod (p.1 ^ (n + 1))) at hpowers + have hValues : c.val = a.val := by + calc + c.val = (c.val.val : ZMod (p.1 ^ (n + 1))) := + (ZMod.natCast_zmod_val c.val).symm + _ = (a.val.val : ZMod (p.1 ^ (n + 1))) := hpowers + _ = a.val := ZMod.natCast_zmod_val a.val + change c = a + apply Units.ext + exact hValues + +/-- The chosen finite-place Artin map factors through any extension identified +with the chosen one. -/ +theorem chosenFinitePlaceArtinMonoidHom_apply_factor_of_extension_eq + {K L : Type} + [Field K] [NumberField K] + [Field L] [Algebra K L] + [FiniteDimensional K L] [IsAbelianGalois K L] + (v : HeightOneSpectrum (𝓞 K)) + (w : AbsoluteValueExtension + (HeightOneSpectrum.adicAbv K v) L) + (hw : chosenFinitePlaceExtension (L := L) v = w) + (x : (v.adicCompletion K)ˣ) : + chosenFinitePlaceArtinMonoidHom + (K := K) (L := L) v x = + finitePlaceLocalToGlobalMonoidHom + (K := K) (L := L) v w + (finitePlaceLocalArtinMonoidHom + (K := K) (L := L) v w x) := by + subst w + exact + congrArg + (fun f : (v.adicCompletion K)ˣ →* (L ≃ₐ[K] L) => f x) + (finitePlaceArtinMonoidHomOfExtension_factor + (K := K) (L := L) v + (chosenFinitePlaceExtension (L := L) v)) + +private theorem + chosenFinitePlaceArtinMonoidHom_apply_factor_of_extension_eq_at + {K L : Type} + [Field K] [NumberField K] + [Field L] [Algebra K L] + [FiniteDimensional K L] [IsAbelianGalois K L] + (v : HeightOneSpectrum (𝓞 K)) + (w : AbsoluteValueExtension + (HeightOneSpectrum.adicAbv K v) L) + (hw : chosenFinitePlaceExtension (L := L) v = w) + (x : (v.adicCompletion K)ˣ) (z : L) : + chosenFinitePlaceArtinMonoidHom + (K := K) (L := L) v x z = + finitePlaceLocalToGlobalMonoidHom + (K := K) (L := L) v w + (finitePlaceLocalArtinMonoidHom + (K := K) (L := L) v w x) z := by + exact + congrArg (fun sigma : Gal(L / K) => sigma z) + (chosenFinitePlaceArtinMonoidHom_apply_factor_of_extension_eq + (K := K) (L := L) v w hw x) + +theorem finitePlaceLocalToGlobalMonoidHom_apply_pow_of_localized_action + {K L : Type} + [Field K] [NumberField K] + [Field L] [Algebra K L] + [FiniteDimensional K L] [IsAbelianGalois K L] + (v : HeightOneSpectrum (𝓞 K)) + (w : AbsoluteValueExtension + (HeightOneSpectrum.adicAbv K v) L) + (sigma : + let vK := HeightOneSpectrum.adicAbv K v + let E := LocalizedCompletion vK w + letI : Algebra vK.Completion E := + finitePlaceLocalArtinLocalizedAlgebra v w + Gal(E / vK.Completion)) + (z : L) + (zLocal : + let vK := HeightOneSpectrum.adicAbv K v + LocalizedCompletion vK w) + (e : ℕ) + (hLocalization : + let vK := HeightOneSpectrum.adicAbv K v + let E := LocalizedCompletion vK w + letI : Algebra vK.Completion E := + finitePlaceLocalArtinLocalizedAlgebra v w + let eLoc : L →+* E := + AbsoluteValue.toAlgebraicLocalization vK w.1 w.2 + eLoc z = zLocal) + (hlocal : sigma zLocal = zLocal ^ e) : + finitePlaceLocalToGlobalMonoidHom + (K := K) (L := L) v w sigma z = z ^ e := by + let vK := HeightOneSpectrum.adicAbv K v + let hvK : vK.IsNontrivial := RayClass.adicAbv_isNontrivial v + let E := LocalizedCompletion vK w + let : Algebra vK.Completion E := + finitePlaceLocalArtinLocalizedAlgebra v w + let eD : absoluteValueDecompositionGroup K w.1 ≃* Gal(E / vK.Completion) := + decompositionGroupEquivAlgebraicLocalizationAut vK hvK w + let eLoc : L →+* E := + AbsoluteValue.toAlgebraicLocalization vK w.1 w.2 + let delta : absoluteValueDecompositionGroup K w.1 := eD.symm sigma + have hDecomposition : eD delta = sigma := eD.apply_symm_apply sigma + apply eLoc.injective + calc + eLoc (finitePlaceLocalToGlobalMonoidHom + (K := K) (L := L) v w sigma z) = + eD delta (eLoc z) := + (localizationRamificationGroups_decompositionGroupEquiv_toLocalization + vK hvK w delta z).symm + _ = sigma (eLoc z) := + congrArg (fun tau : Gal(E / vK.Completion) => tau (eLoc z)) + hDecomposition + _ = sigma zLocal := + congrArg (fun y : E => sigma y) hLocalization + _ = zLocal ^ e := hlocal + _ = (eLoc z) ^ e := + congrArg (fun y : E => y ^ e) hLocalization.symm + _ = eLoc (z ^ e) := (map_pow eLoc z e).symm + +theorem map_primitiveRoot_eq_pow_of_eq_pow + {M : Type} [CommRing M] [IsDomain M] + (f : M →* M) (zeta rho : M) (order exponent : ℕ) + [NeZero order] + (hzeta : IsPrimitiveRoot zeta order) + (hrho : IsPrimitiveRoot rho order) + (hf : f zeta = zeta ^ exponent) : + f rho = rho ^ exponent := by + obtain ⟨j, -, hj⟩ := + hzeta.eq_pow_of_pow_eq_one hrho.pow_eq_one + calc + f rho = f (zeta ^ j) := congrArg f hj.symm + _ = (f zeta) ^ j := map_pow f zeta j + _ = (zeta ^ exponent) ^ j := congrArg (fun z => z ^ j) hf + _ = zeta ^ (exponent * j) := (pow_mul zeta exponent j).symm + _ = zeta ^ (j * exponent) := + congrArg (fun e : ℕ => zeta ^ e) (Nat.mul_comm exponent j) + _ = (zeta ^ j) ^ exponent := pow_mul zeta j exponent + _ = rho ^ exponent := congrArg (fun z => z ^ exponent) hj + +theorem finitePlaceLocalArtinMonoidHom_apply_semilinear + {K L K' L' : Type} + [Field K] [NumberField K] + [Field L] [Algebra K L] + [hKLfinite : FiniteDimensional K L] [IsAbelianGalois K L] + [Field K'] [ValuativeRel K'] [TopologicalSpace K'] + [IsNonarchimedeanLocalField K'] + [Field L'] [Algebra K' L'] + [FiniteDimensional K' L'] [IsAbelianGalois K' L'] + (v : HeightOneSpectrum (𝓞 K)) + (w : AbsoluteValueExtension + (HeightOneSpectrum.adicAbv K v) L) + (eK : (HeightOneSpectrum.adicAbv K v).Completion ≃+* K') + (eL : LocalizedCompletion + (HeightOneSpectrum.adicAbv K v) w ≃+* L') + (hcomm : ∀ y : (HeightOneSpectrum.adicAbv K v).Completion, + eL (@algebraMap + (HeightOneSpectrum.adicAbv K v).Completion + (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) + _ _ (finitePlaceLocalArtinLocalizedAlgebra v w) y) = + algebraMap K' L' (eK y)) + (hExt : SemilinearValuationCompatible + (HeightOneSpectrum.adicAbv K v).Completion K' eK) + (x : (v.adicCompletion K)ˣ) + (z : LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) : + eL (finitePlaceLocalArtinMonoidHom + (K := K) (L := L) v w x z) = + LocalClassFieldTheory.abelianLocalArtinMonoidHom K' L' + (Units.map eK.toMonoidHom + (finitePlaceLocalArtinInput v x)) (eL z) := by + calc + eL (finitePlaceLocalArtinMonoidHom + (K := K) (L := L) v w x z) = + eL ((@LocalClassFieldTheory.abelianLocalArtinMonoidHom + (HeightOneSpectrum.adicAbv K v).Completion + (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) + (inferInstance : Field + (HeightOneSpectrum.adicAbv K v).Completion) + (inferInstance : Field + (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w)) + (finitePlaceLocalArtinLocalizedAlgebra v w) + (finitePlaceLocalArtinCompletionValuativeRel v) + (inferInstance : TopologicalSpace + (HeightOneSpectrum.adicAbv K v).Completion) + (finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v) + (finitePlaceLocalArtinFiniteDimensional v w) + (finitePlaceLocalArtinIsAbelianGalois v w hKLfinite) + (finitePlaceLocalArtinInput v x)) z) := + congrArg eL + (finitePlaceLocalArtinMonoidHom_apply_normalized_at + (K := K) (L := L) v w x z) + _ = LocalClassFieldTheory.abelianLocalArtinMonoidHom K' L' + (Units.map eK.toMonoidHom + (finitePlaceLocalArtinInput v x)) (eL z) := + @abelianLocalArtinMonoidHom_semilinear_action + (HeightOneSpectrum.adicAbv K v).Completion K' + (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w) L' + (inferInstance : Field + (HeightOneSpectrum.adicAbv K v).Completion) + (finitePlaceLocalArtinCompletionValuativeRel v) + (inferInstance : TopologicalSpace + (HeightOneSpectrum.adicAbv K v).Completion) + (finitePlaceLocalArtinCompletionIsNonarchimedeanLocalField v) + (inferInstance : Field K') + (inferInstance : ValuativeRel K') + (inferInstance : TopologicalSpace K') + (inferInstance : IsNonarchimedeanLocalField K') + (inferInstance : Field + (LocalizedCompletion (HeightOneSpectrum.adicAbv K v) w)) + (inferInstance : Field L') + (finitePlaceLocalArtinLocalizedAlgebra v w) + (inferInstance : Algebra K' L') + (finitePlaceLocalArtinFiniteDimensional v w) + (finitePlaceLocalArtinIsAbelianGalois v w hKLfinite) + (inferInstance : FiniteDimensional K' L') + (inferInstance : IsAbelianGalois K' L') + eK eL hcomm hExt (finitePlaceLocalArtinInput v x) z + + +end RationalCyclotomicPrincipalPrime + +end Reciprocity +end GlobalClassFieldTheory diff --git a/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/FiniteResidueFinrankTransfer.lean b/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/FiniteResidueFinrankTransfer.lean index 1ff2c21..3705c23 100644 --- a/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/FiniteResidueFinrankTransfer.lean +++ b/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/FiniteResidueFinrankTransfer.lean @@ -9,6 +9,7 @@ import ClassFieldTheory.LocalClassFieldTheory.Finite.LocalReciprocity.FiniteResi import ValuedFieldTheory.LocalField.NonarchimedeanLocalField.ResidueExtension import ValuedFieldTheory.Valuation.UniqueRing + set_option autoImplicit false namespace LocalClassFieldTheory @@ -16,15 +17,6 @@ open CyclicCohomology RamificationTheory ClassFormation open LocalFieldTheory ValuationTheory -/-! -# Finite local reciprocity: comparison of the two finite residue-field models - -The residue-action exact sequence presents the residue field of a -finite fixed field intrinsically, inside the selected residue algebraic -closure. The norm formula uses the literal residue field of the spectral -valuation on that fixed field. This file compares those presentations by -the uniqueness of the finite extension valuation. --/ noncomputable section @@ -53,9 +45,27 @@ noncomputable def valuationSubringEquivDecompositionFieldOfEqTop let eFZ : F ≃ₐ[F] Z := (IntermediateField.botEquiv F Omega).symm.trans (IntermediateField.equivOfEq hZ.symm) - refine - { toFun := fun x => ⟨eFZ (x : F), ?_⟩ - invFun := fun z => ⟨eFZ.symm (z : Z), ?_⟩ + exact + { toFun := fun x => ⟨eFZ (x : F), by + change ((eFZ x : Z) : Omega) ∈ A + have he : ((eFZ x : Z) : Omega) = + algebraMap F Omega (x : F) := by + rfl + rw [he] + have hx : (x : F) ∈ A.comap (algebraMap F Omega) := by + rw [hC] + exact x.property + exact hx⟩ + invFun := fun z => ⟨eFZ.symm (z : Z), by + have hz : eFZ.symm (z : Z) ∈ A.comap (algebraMap F Omega) := by + change algebraMap F Omega (eFZ.symm (z : Z)) ∈ A + have he : algebraMap F Omega (eFZ.symm (z : Z)) = + ((z : Z) : Omega) := by + exact congrArg Subtype.val (eFZ.apply_symm_apply (z : Z)) + rw [he] + exact z.property + rw [hC] at hz + exact hz⟩ left_inv := fun x => by apply Subtype.ext exact eFZ.symm_apply_apply (x : F) @@ -68,24 +78,6 @@ noncomputable def valuationSubringEquivDecompositionFieldOfEqTop map_mul' := fun x y => by apply Subtype.ext exact map_mul eFZ (x : F) (y : F) } - · change ((eFZ x : Z) : Omega) ∈ A - have he : ((eFZ x : Z) : Omega) = - algebraMap F Omega (x : F) := by - rfl - rw [he] - have hx : (x : F) ∈ A.comap (algebraMap F Omega) := by - rw [hC] - exact x.property - exact hx - · have hz : eFZ.symm (z : Z) ∈ A.comap (algebraMap F Omega) := by - change algebraMap F Omega (eFZ.symm (z : Z)) ∈ A - have he : algebraMap F Omega (eFZ.symm (z : Z)) = - ((z : Z) : Omega) := by - exact congrArg Subtype.val (eFZ.apply_symm_apply (z : Z)) - rw [he] - exact z.property - rw [hC] at hz - exact hz /-- The corresponding equivalence between literal and intrinsic residue fields. -/ diff --git a/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/FixedFieldNormResidueNaturality.lean b/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/FixedFieldNormResidueNaturality.lean index 08eb9ea..dd20dc0 100644 --- a/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/FixedFieldNormResidueNaturality.lean +++ b/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/FixedFieldNormResidueNaturality.lean @@ -10,15 +10,9 @@ import ClassFieldTheory.LocalClassFieldTheory.Finite.LocalReciprocity.LocalHense import ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.Main import Mathlib.FieldTheory.Galois.Notation -set_option autoImplicit false -/-! -# Naturality of fixed-field norm-residue symbols +set_option autoImplicit false -This file transports norm-restriction and transfer-inclusion naturality -from the closed-subgroup class formation to actual fixed fields in a single -Galois ambient field. --/ noncomputable section @@ -521,7 +515,12 @@ theorem upperAbsoluteFinite /-- The fixed-field norm-residue symbol for the lower horizontal extension, induced by the canonical local class formation. -/ noncomputable def lowerNormResidueSymbol - (T : LocalFixedFieldNormRestrictionSquare k) := by + (T : LocalFixedFieldNormRestrictionSquare k) : + Additive (abstractFixedField k (SeparableClosure k) T.lowerBase)ˣ →+ + Additive (Abelianization + Gal(abstractRelativeFixedField k (SeparableClosure k) + T.lowerTop_le_lowerBase / + abstractFixedField k (SeparableClosure k) T.lowerBase)) := by letI := T.lowerNormal letI := T.lowerFinite letI := T.lowerAbsoluteFinite @@ -534,7 +533,12 @@ noncomputable def lowerNormResidueSymbol /-- The fixed-field norm-residue symbol for the upper horizontal extension, induced by the canonical local class formation. -/ noncomputable def upperNormResidueSymbol - (T : LocalFixedFieldNormRestrictionSquare k) := by + (T : LocalFixedFieldNormRestrictionSquare k) : + Additive (abstractFixedField k (SeparableClosure k) T.upperBase)ˣ →+ + Additive (Abelianization + Gal(abstractRelativeFixedField k (SeparableClosure k) + T.upperTop_le_upperBase / + abstractFixedField k (SeparableClosure k) T.upperBase)) := by letI := T.upperNormal letI := T.upperFinite letI := upperAbsoluteFinite T @@ -552,7 +556,15 @@ noncomputable def normUnits /-- Restriction between the abelianized actual relative Galois groups. -/ noncomputable def abelianizedRestriction - (T : LocalFixedFieldNormRestrictionSquare k) := by + (T : LocalFixedFieldNormRestrictionSquare k) : + Additive (Abelianization + Gal(abstractRelativeFixedField k (SeparableClosure k) + T.upperTop_le_upperBase / + abstractFixedField k (SeparableClosure k) T.upperBase)) →+ + Additive (Abelianization + Gal(abstractRelativeFixedField k (SeparableClosure k) + T.lowerTop_le_lowerBase / + abstractFixedField k (SeparableClosure k) T.lowerBase)) := by letI := T.lowerNormal letI := T.upperNormal exact @@ -681,7 +693,12 @@ theorem intermediateAbsoluteFinite /-- The fixed-field norm-residue symbol for the total extension, induced by the canonical local class formation. -/ noncomputable def baseNormResidueSymbol - (T : LocalFixedFieldTransferTower k) := by + (T : LocalFixedFieldTransferTower k) : + Additive (abstractFixedField k (SeparableClosure k) T.base)ˣ →+ + Additive (Abelianization + Gal(abstractRelativeFixedField k (SeparableClosure k) + (T.top_le_intermediate.trans T.intermediate_le_base) / + abstractFixedField k (SeparableClosure k) T.base)) := by letI := T.totalNormal letI := T.totalFinite letI := T.baseAbsoluteFinite @@ -695,7 +712,12 @@ noncomputable def baseNormResidueSymbol /-- The fixed-field norm-residue symbol after changing the base to the intermediate fixed field, induced by the canonical local class formation. -/ noncomputable def intermediateNormResidueSymbol - (T : LocalFixedFieldTransferTower k) := by + (T : LocalFixedFieldTransferTower k) : + Additive (abstractFixedField k (SeparableClosure k) T.intermediate)ˣ →+ + Additive (Abelianization + Gal(abstractRelativeFixedField k (SeparableClosure k) + T.top_le_intermediate / + abstractFixedField k (SeparableClosure k) T.intermediate)) := by letI := intermediateNormal T letI := intermediateFinite T letI := intermediateAbsoluteFinite T @@ -713,7 +735,15 @@ noncomputable def unitsInclusion /-- Transfer between the abelianized actual relative Galois groups. -/ noncomputable def abelianizedTransfer - (T : LocalFixedFieldTransferTower k) := by + (T : LocalFixedFieldTransferTower k) : + Additive (Abelianization + Gal(abstractRelativeFixedField k (SeparableClosure k) + (T.top_le_intermediate.trans T.intermediate_le_base) / + abstractFixedField k (SeparableClosure k) T.base)) →+ + Additive (Abelianization + Gal(abstractRelativeFixedField k (SeparableClosure k) + T.top_le_intermediate / + abstractFixedField k (SeparableClosure k) T.intermediate)) := by letI := T.totalNormal letI := T.totalFinite exact diff --git a/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/LocalResidueDatum.lean b/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/LocalResidueDatum.lean index bc7a1de..9da0120 100644 --- a/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/LocalResidueDatum.lean +++ b/Lean4/ClassFieldTheory/LocalClassFieldTheory/Finite/LocalReciprocity/LocalResidueDatum.lean @@ -9,6 +9,7 @@ import ValuedFieldTheory.Valuation.DiscreteValuationField.FiniteIntegralClosure import ValuedFieldTheory.Ramification.GaloisValuation.AbsoluteGalois.FiniteExtensionCorrespondence import ValuedFieldTheory.LocalField.NonarchimedeanLocalField.FiniteExtensionCompleteDVF + set_option autoImplicit false namespace LocalClassFieldTheory @@ -17,24 +18,6 @@ open ClassFormation open ValuationTheory RamificationTheory LocalFieldTheory -/-! -# Finite local reciprocity: the local residue degree datum - -For a nonarchimedean local field `K`, this file makes the choices implicit in -the construction explicit. The canonical local valuation is packaged as a complete -DVF, Chevalley's theorem chooses an extension to `AlgebraicClosure K`, and -that valuation is pulled back to `SeparableClosure K`. Finite-separable -uniqueness shows that its decomposition subgroup is the whole Galois group. -The residue field of the decomposition field is then identified with the -finite residue field of `K`. - -The remaining step is topological: the reduction action is shown continuous -for the two Krull topologies and is composed with the intrinsic finite-field -degree map from `ResidueAlgebraicClosureDegree`. The selected residue field -is algebraically closed because its extension to the residue of -`AlgebraicClosure K` is purely inseparable and the selected residue field is -perfect over the finite base residue field. --/ noncomputable section @@ -187,9 +170,23 @@ private noncomputable def localBaseValuationSubringEquivDecompositionField : let eKZ : K ≃ₐ[K] Z := (IntermediateField.botEquiv K (SeparableClosure K)).symm.trans (IntermediateField.equivOfEq hZ.symm) - refine - { toFun := fun x => ⟨eKZ (x : K), ?_⟩ - invFun := fun z => ⟨eKZ.symm (z : Z), ?_⟩ + exact + { toFun := fun x => ⟨eKZ (x : K), by + change ((eKZ x : Z) : SeparableClosure K) ∈ A + have he : ((eKZ x : Z) : SeparableClosure K) = + algebraMap K (SeparableClosure K) (x : K) := by + rfl + rw [he] + exact (localSeparableValuationSubring_pullback K (x : K)).2 x.property⟩ + invFun := fun z => ⟨eKZ.symm (z : Z), by + change eKZ.symm (z : Z) ∈ + (localCompleteDVF K).valuation.valuationSubring + apply (localSeparableValuationSubring_pullback K (eKZ.symm (z : Z))).1 + have he : algebraMap K (SeparableClosure K) (eKZ.symm (z : Z)) = + ((z : Z) : SeparableClosure K) := by + exact congrArg Subtype.val (eKZ.apply_symm_apply (z : Z)) + rw [he] + exact z.property⟩ left_inv := fun x => by apply Subtype.ext exact eKZ.symm_apply_apply (x : K) @@ -202,20 +199,6 @@ private noncomputable def localBaseValuationSubringEquivDecompositionField : map_mul' := fun x y => by apply Subtype.ext exact map_mul eKZ (x : K) (y : K) } - · change ((eKZ x : Z) : SeparableClosure K) ∈ A - have he : ((eKZ x : Z) : SeparableClosure K) = - algebraMap K (SeparableClosure K) (x : K) := by - rfl - rw [he] - exact (localSeparableValuationSubring_pullback K (x : K)).2 x.property - · change eKZ.symm (z : Z) ∈ - (localCompleteDVF K).valuation.valuationSubring - apply (localSeparableValuationSubring_pullback K (eKZ.symm (z : Z))).1 - have he : algebraMap K (SeparableClosure K) (eKZ.symm (z : Z)) = - ((z : Z) : SeparableClosure K) := by - exact congrArg Subtype.val (eKZ.apply_symm_apply (z : Z)) - rw [he] - exact z.property /-- The residue field in the residue-action exact sequence is canonically the finite residue field of the original local field. -/ diff --git a/Lean4/ClassFieldTheory/LubinTate/Padic/CompletedChangedUniformizerFixedField.lean b/Lean4/ClassFieldTheory/LubinTate/Padic/CompletedChangedUniformizerFixedField.lean index c747c98..aa28793 100644 --- a/Lean4/ClassFieldTheory/LubinTate/Padic/CompletedChangedUniformizerFixedField.lean +++ b/Lean4/ClassFieldTheory/LubinTate/Padic/CompletedChangedUniformizerFixedField.lean @@ -9,6 +9,7 @@ import ClassFieldTheory.LubinTate.Padic.CompletedChangedUniformizerPrimitive import ClassFieldTheory.LubinTate.Padic.CompletedChangedUniformizerThetaFixed import ClassFieldTheory.LubinTate.Padic.CompletedUnramifiedFrobeniusFixed + set_option autoImplicit false /-! @@ -42,7 +43,8 @@ noncomputable def padicCompletedChangedUniformizerFrobeniusAlgEquiv (u : (padicLocalField p).valuationSubringˣ) (n : ℕ) : padicCompletedLevelField p n ≃ₐ[ℚ_[p]] padicCompletedLevelField p n := - AlgEquiv.ofRingEquiv (by + AlgEquiv.ofRingEquiv + (f := padicCompletedUnitFrobeniusLiftEquiv p n u⁻¹) (by intro b change padicCompletedUnitFrobeniusLiftEquiv p n u⁻¹ diff --git a/Lean4/GaloisCohomology/Cyclic/Herbrand/HerbrandLowDegree/Basic.lean b/Lean4/GaloisCohomology/Cyclic/Herbrand/HerbrandLowDegree/Basic.lean index ea6356d..eb19ced 100644 --- a/Lean4/GaloisCohomology/Cyclic/Herbrand/HerbrandLowDegree/Basic.lean +++ b/Lean4/GaloisCohomology/Cyclic/Herbrand/HerbrandLowDegree/Basic.lean @@ -14,6 +14,7 @@ import Mathlib.GroupTheory.OrderOfElement import Mathlib.GroupTheory.QuotientGroup.Basic import Mathlib.GroupTheory.SpecificGroups.Cyclic + set_option autoImplicit false namespace CyclicCohomology @@ -34,8 +35,7 @@ namespace Herbrand universe uG uA uB uC -/-- Herbrand-quotient theory: the finite-group norm `N_G a = ∏ g, g • a` -for a multiplicative `G`-module. -/ + def tateNorm (G : Type uG) (A : Type uA) [Group G] [Fintype G] [CommGroup A] [MulDistribMulAction G A] (a : A) : A := ∏ g : G, g • a @@ -92,9 +92,8 @@ theorem fixed_of_forall_mem_zpowers_of_sigmaMinusOne_eq_one omit [Group G] [Fintype G] [CommGroup A] [CommGroup B] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- First-isomorphism cardinality source for finite exactness calculations: -the cardinality of the source of a group homomorphism is the product of the -cardinalities of its kernel and range. -/ + + theorem monoidHom_card_eq_card_ker_mul_card_range {X : Type uA} {Y : Type uB} [Group X] [Group Y] [Finite X] (f : X →* Y) : Nat.card X = Nat.card (MonoidHom.ker f) * Nat.card (MonoidHom.range f) := by @@ -128,9 +127,8 @@ theorem card_subgroupOf_eq_card omit [Fintype G] [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- The multiplicative induced module from the trivial subgroup, represented -as functions on `G` with the right-regular action. This is the concrete model -used in the low-degree Herbrand comparison. -/ + + @[reducible] def rightRegularFunctionMulDistribMulAction : MulDistribMulAction G (G → B) where smul g f := fun x => f (x * g) @@ -255,7 +253,7 @@ def tateNormSubgroup (G : Type uG) (A : Type uA) [Group G] [Fintype G] [CommGrou [MulDistribMulAction G A] : Subgroup A := MonoidHom.range (tateNormHom (G := G) (A := A)) -/-- Herbrand-quotient theory: the norm kernel `{a | N_G a = 1}`. -/ + def normKernelSubgroup (G : Type uG) (A : Type uA) [Group G] [Fintype G] [CommGroup A] [MulDistribMulAction G A] : Subgroup A := MonoidHom.ker (tateNormHom (G := G) (A := A)) @@ -267,7 +265,7 @@ def augmentationSubgroup (G : Type uG) (A : Type uA) [Group G] [CommGroup A] omit [Fintype G] [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- If `σ` generates `G`, the kernel of `a ↦ a^(σ-1)` is the fixed subgroup. -/ + theorem sigmaMinusOneHom_ker_eq_fixedSubgroup (σ : G) (hgen : ∀ g : G, g ∈ Subgroup.zpowers σ) : MonoidHom.ker (sigmaMinusOneHom (G := G) (A := A) σ) = fixedSubgroup G A := by @@ -282,8 +280,8 @@ theorem sigmaMinusOneHom_ker_eq_fixedSubgroup omit [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Finite-module source: the norm homomorphism factors the cardinality of -`A` into norm-kernel and norm-image cardinalities. -/ + + theorem card_eq_card_normKernelSubgroup_mul_card_tateNormSubgroup [Finite A] : Nat.card A = Nat.card (normKernelSubgroup G A) * Nat.card (tateNormSubgroup G A) := by simpa [normKernelSubgroup, tateNormSubgroup] using @@ -291,9 +289,8 @@ theorem card_eq_card_normKernelSubgroup_mul_card_tateNormSubgroup [Finite A] : omit [Fintype G] [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Finite-module source: for a cyclic generator `σ`, the coboundary -homomorphism factors the cardinality of `A` into fixed and augmentation -cardinalities. -/ + + theorem card_eq_card_fixedSubgroup_mul_card_augmentationSubgroup (σ : G) (hgen : ∀ g : G, g ∈ Subgroup.zpowers σ) [Finite A] : Nat.card A = Nat.card (fixedSubgroup G A) * Nat.card (augmentationSubgroup G A σ) := by @@ -304,8 +301,8 @@ theorem card_eq_card_fixedSubgroup_mul_card_augmentationSubgroup omit [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Finite-module cardinality balance behind `h(G,A)=1`: for a finite cyclic -group action, the product `#A^G · #I_G A` equals `#ker N_G · #N_G A`. -/ + + theorem herbrand_finite_module_cardinality_balance (σ : G) (hgen : ∀ g : G, g ∈ Subgroup.zpowers σ) [Finite A] : Nat.card (fixedSubgroup G A) * Nat.card (augmentationSubgroup G A σ) = @@ -380,7 +377,7 @@ def HerbrandH0.mk : fixedSubgroup G A →* HerbrandH0 G A := by omit [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Canonical projection from the norm kernel to `H⁻¹(G,A)`. -/ + def HerbrandHMinusOne.mk (σ : G) : normKernelSubgroup G A →* HerbrandHMinusOne G A σ := by unfold HerbrandHMinusOne @@ -422,7 +419,7 @@ theorem HerbrandH0.mk_surjective : omit [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Every degree-minus-one Herbrand class has a norm-kernel representative. -/ + theorem HerbrandHMinusOne.mk_surjective (σ : G) : Function.Surjective (HerbrandHMinusOne.mk (G := G) (A := A) σ) := by intro q @@ -458,8 +455,8 @@ theorem HerbrandH0.mk_eq_one_iff (a : fixedSubgroup G A) : omit [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- A norm-kernel representative gives the trivial degree-minus-one class -exactly when it is an augmentation. -/ + + @[simp] theorem HerbrandHMinusOne.mk_eq_one_iff (σ : G) (a : normKernelSubgroup G A) : @@ -573,8 +570,8 @@ protected theorem HerbrandH0.inductionOn omit [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Eliminate a degree-minus-one Herbrand class through an arbitrary -norm-kernel representative and the canonical class map. -/ + + protected theorem HerbrandHMinusOne.inductionOn (σ : G) {motive : HerbrandHMinusOne G A σ → Prop} (q : HerbrandHMinusOne G A σ) @@ -649,7 +646,7 @@ def HerbrandH0.lift {M : Type*} [Group M] omit [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Descend a homomorphism on the norm kernel through `H⁻¹(G,A)`. -/ + def HerbrandHMinusOne.lift {M : Type*} [Group M] (σ : G) (f : normKernelSubgroup G A →* M) (h : (augmentationSubgroup G A σ).subgroupOf (normKernelSubgroup G A) ≤ @@ -703,7 +700,7 @@ noncomputable instance herbrandHMinusOneFiniteOfFinite (σ : G) [Finite A] : omit [Fintype G] [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Fixed subgroup of the right-regular multiplicative induced module. -/ + abbrev rightRegularFunctionFixedSubgroup : Subgroup (G → B) := by letI := rightRegularFunctionMulDistribMulAction (G := G) (B := B) exact fixedSubgroup G (G → B) @@ -711,7 +708,7 @@ abbrev rightRegularFunctionFixedSubgroup : Subgroup (G → B) := by omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Norm image subgroup of the right-regular multiplicative induced module. -/ + abbrev rightRegularFunctionTateNormSubgroup : Subgroup (G → B) := by letI := rightRegularFunctionMulDistribMulAction (G := G) (B := B) exact tateNormSubgroup G (G → B) @@ -719,8 +716,8 @@ abbrev rightRegularFunctionTateNormSubgroup : Subgroup (G → B) := by omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- `H⁰` of the right-regular multiplicative induced module. -/ -def rightRegularFunctionHerbrandH0 := by + +def rightRegularFunctionHerbrandH0 : Type (max uG uB) := by letI := rightRegularFunctionMulDistribMulAction (G := G) (B := B) exact HerbrandH0 G (G → B) @@ -737,7 +734,7 @@ noncomputable instance rightRegularFunctionHerbrandH0CommGroup : omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Norm-kernel subgroup of the right-regular multiplicative induced module. -/ + abbrev rightRegularFunctionNormKernelSubgroup : Subgroup (G → B) := by letI := rightRegularFunctionMulDistribMulAction (G := G) (B := B) exact normKernelSubgroup G (G → B) @@ -745,7 +742,7 @@ abbrev rightRegularFunctionNormKernelSubgroup : Subgroup (G → B) := by omit [Fintype G] [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Augmentation subgroup of the right-regular multiplicative induced module. -/ + abbrev rightRegularFunctionAugmentationSubgroup (σ : G) : Subgroup (G → B) := by letI := rightRegularFunctionMulDistribMulAction (G := G) (B := B) exact augmentationSubgroup G (G → B) σ @@ -753,8 +750,8 @@ abbrev rightRegularFunctionAugmentationSubgroup (σ : G) : Subgroup (G → B) := omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- `H^{-1}` of the right-regular multiplicative induced module. -/ -def rightRegularFunctionHerbrandHMinusOne (σ : G) := by + +def rightRegularFunctionHerbrandHMinusOne (σ : G) : Type (max uG uB) := by letI := rightRegularFunctionMulDistribMulAction (G := G) (B := B) exact HerbrandHMinusOne G (G → B) σ @@ -791,7 +788,7 @@ theorem tateNorm_sigmaMinusOne_eq_one (σ : G) (a : A) : _ = 1 := by rw [hshift, Finset.prod_inv_distrib, mul_inv_cancel] -/-- The augmentation image lies in the norm kernel. -/ + theorem augmentationSubgroup_le_normKernelSubgroup (σ : G) : augmentationSubgroup G A σ ≤ normKernelSubgroup G A := by intro a ha @@ -858,9 +855,8 @@ theorem herbrandH0_subsingleton_iff_fixed_le_tateNormSubgroup : omit [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- A quotient-level criterion for vanishing of `H^{-1}`: if every norm-kernel -element is an augmentation element, then the low-degree Herbrand `H^{-1}` -quotient is a subsingleton. -/ + + theorem herbrandHMinusOne_subsingleton_of_normKernel_le_augmentationSubgroup (σ : G) (h : normKernelSubgroup G A ≤ augmentationSubgroup G A σ) : Subsingleton (HerbrandHMinusOne G A σ) := by @@ -879,8 +875,7 @@ theorem herbrandHMinusOne_subsingleton_of_normKernel_le_augmentationSubgroup exact h a.2 rw [hq, hr] -/-- Degree-minus-one Herbrand cohomology is trivial exactly when every -norm-kernel element is an augmentation element. -/ + theorem herbrandHMinusOne_subsingleton_iff_normKernel_le_augmentationSubgroup (σ : G) : Subsingleton (HerbrandHMinusOne G A σ) ↔ @@ -986,8 +981,8 @@ theorem herbrandHMinusOne_subsingleton_of_mulEquiv omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Membership in the right-regular norm kernel is the single product -condition `∏ g, f g = 1`. -/ + + theorem rightRegularFunction_mem_normKernelSubgroup_iff (f : G → B) : f ∈ rightRegularFunctionNormKernelSubgroup (G := G) (B := B) ↔ (∏ g : G, f g) = 1 := by @@ -1031,9 +1026,8 @@ theorem rightRegularFunction_mem_normKernelSubgroup_iff (f : G → B) : omit [Fintype G] [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- The partial primitive along the cyclic powers of `σ`. This is the -candidate used to solve `b (x * σ) * (b x)⁻¹ = f x` on the right-regular -induced module. -/ + + def rightRegularCyclicPartialProduct (σ : G) (f : G → B) (i : ℕ) : B := (Finset.range i).prod (fun k => f (σ ^ k)) @@ -1266,8 +1260,8 @@ theorem rightRegularCyclicPrimitive_mul_sigma_mul_inv_of_partialProduct_eq_one omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- A right-regular norm-kernel element has product `1` along one full cyclic -enumeration by a generator. -/ + + theorem rightRegularFunction_prod_powers_eq_one_of_mem_normKernel (σ : G) (hgen : ∀ g : G, g ∈ Subgroup.zpowers σ) {f : G → B} @@ -1325,8 +1319,8 @@ theorem rightRegularFunction_mem_augmentationSubgroup_iff omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Concrete `H^{-1}` source for the right-regular multiplicative induced -module: every norm-kernel element is an augmentation element. -/ + + theorem rightRegularFunction_normKernel_le_augmentationSubgroup (σ : G) (hgen : ∀ g : G, g ∈ Subgroup.zpowers σ) : rightRegularFunctionNormKernelSubgroup (G := G) (B := B) ≤ @@ -1348,8 +1342,8 @@ theorem rightRegularFunction_normKernel_le_augmentationSubgroup omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- The `H^{-1}` quotient of the right-regular multiplicative induced module -is trivial for a cyclic group generated by `σ`. -/ + + theorem rightRegularFunction_herbrandHMinusOne_subsingleton (σ : G) (hgen : ∀ g : G, g ∈ Subgroup.zpowers σ) : Subsingleton (rightRegularFunctionHerbrandHMinusOne (G := G) (B := B) σ) := by @@ -1362,8 +1356,8 @@ theorem rightRegularFunction_herbrandHMinusOne_subsingleton omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- Concrete `H⁰` source for induced modules: for the right-regular -multiplicative induced module `G → B`, every fixed point is a norm. -/ + + theorem rightRegularFunction_fixed_le_tateNormSubgroup : rightRegularFunctionFixedSubgroup (G := G) (B := B) ≤ rightRegularFunctionTateNormSubgroup (G := G) (B := B) := by @@ -1420,8 +1414,8 @@ theorem rightRegularFunction_fixed_le_tateNormSubgroup : omit [CommGroup A] [CommGroup C] [MulDistribMulAction G A] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- The `H⁰` quotient of the right-regular multiplicative induced module is -trivial. This is the degree-zero half of the low-degree Herbrand comparison. -/ + + theorem rightRegularFunction_herbrandH0_subsingleton : Subsingleton (rightRegularFunctionHerbrandH0 (G := G) (B := B)) := by let := rightRegularFunctionMulDistribMulAction (G := G) (B := B) @@ -1677,8 +1671,8 @@ theorem card_normKernelSubgroup_eq_card_herbrandHMinusOne_mul_card_augmentationS omit [CommGroup B] [CommGroup C] [MulDistribMulAction G B] [MulDistribMulAction G C] in -/-- The two low-degree Herbrand quotients of a finite cyclic module have equal -cardinality, the finite-module source for Herbrand-quotient multiplicativity. -/ + + theorem herbrand_finite_module_card_eq (σ : G) (hgen : ∀ g : G, g ∈ Subgroup.zpowers σ) [Finite A] : Nat.card (HerbrandH0 G A) = Nat.card (HerbrandHMinusOne G A σ) := by diff --git a/Lean4/ValuedFieldTheory/LocalField/Padic/UnitDecomposition.lean b/Lean4/ValuedFieldTheory/LocalField/Padic/UnitDecomposition.lean index c3ea784..4f582bb 100644 --- a/Lean4/ValuedFieldTheory/LocalField/Padic/UnitDecomposition.lean +++ b/Lean4/ValuedFieldTheory/LocalField/Padic/UnitDecomposition.lean @@ -12,14 +12,9 @@ import Mathlib.NumberTheory.Padics.ValuativeRel import Mathlib.NumberTheory.Padics.ProperSpace import Mathlib.GroupTheory.Torsion -set_option autoImplicit false -/-! -# Unit decomposition of the p-adic integers +set_option autoImplicit false -This file constructs the reusable topological decomposition of -`ℤ_[p]ˣ` into its finite factor and its principal `p`-adic factor. --/ open scoped Topology @@ -457,7 +452,7 @@ noncomputable def padicPrincipalData rfl have htop : directTopology = standardTopology := hdirect.trans (padicPrincipalUnitDirectTopology_eq_standard p) - let P := fun T : TopologicalSpace U => by + let P : TopologicalSpace U → Type := fun T => by letI : TopologicalSpace U := T exact Σ a : ℕ, Multiplicative diff --git a/lakefile.toml b/lakefile.toml index ed5e179..5e8b720 100644 --- a/lakefile.toml +++ b/lakefile.toml @@ -10,8 +10,8 @@ relaxedAutoImplicit = false [[require]] name = "mathlib" -scope = "leanprover-community" -rev = "5ed2965256430c3649e86755f9576b54eca72435" +git = "https://github.com/leanprover-community/mathlib4.git" +rev = "d13f23b723b8a846827a245b89c10fc7d3f11612" [[lean_lib]] name = "ClassFieldTheory.All" diff --git a/lean-toolchain b/lean-toolchain index 12359f9..ba8ebf2 100644 --- a/lean-toolchain +++ b/lean-toolchain @@ -1 +1 @@ -leanprover/lean4:v4.34.0 +leanprover/lean4:v4.34.1