Paper XI · Lean source

ActualELatticeResidue59.lean

Selected results recorded Coverage and evidence

Compiler/replay evidence is reported for a subset or bounded block. No whole-work coverage is implied.

This viewer reads the retained source; it does not run Lean or assign new claim mappings.

Local imports (2)

PaperXI/ActualELatticeResidue59.lean157 lines

Original source pathformalization/PaperXI/ActualELatticeResidue59.lean
Skip declarations and read code

Skip source text

1 import PaperXI.ActualIntegralGeneralLinear
2 import PaperXI.ActualLocalUnitDecomposition
3 import Mathlib.LinearAlgebra.Matrix.GeneralLinearGroup.Defs
4 
5 /-!
6 # Literal residue action on an extension-field lattice
7 
8 The group and the congruence kernel below are the actual integral matrices on
9 `E^n`, viewed as `K`-linear operators. The next lattice is multiplication of the
10 integral lattice by the chosen actual uniformizer.
11 -/
12 set_option autoImplicit false
13 noncomputable section
14 namespace PaperXI.ActualELatticeResidue59
15 open Matrix ValuativeRel
16 
17 variable (K E : Type*) [Field K] [Field E] [Algebra K E]
18 variable (n : Type*) [Fintype n] [DecidableEq n]
19 
20 def restrictScalarMatrix : GeneralLinearGroup n E →* ((n → E) ≃ₗ[K] (n → E)) where
21   toFun g := (GeneralLinearGroup.toLin g).toLinearEquiv.restrictScalars K
22   map_one' := by ext v i; simp
23   map_mul' g h := by ext v i; simp
24 
25 @[simp] theorem restrictScalarMatrix_apply (g : GeneralLinearGroup n E) (v : n → E) :
26     restrictScalarMatrix K E n g v = (g : Matrix n n E) *ᵥ v := rfl
27 
28 theorem restrictScalarMatrix_injective : Function.Injective (restrictScalarMatrix K E n) := by
29   intro g h he
30   apply GeneralLinearGroup.ext
31   intro i j
32   have hv := congrArg (fun f : ((n → E) ≃ₗ[K] (n → E)) => f (Pi.single j 1) i) he
33   simpa [Matrix.mulVec, dotProduct, Pi.single_apply] using hv
34 
35 variable [ValuativeRel E]
36 
37 def integralMatrix : GeneralLinearGroup n 𝒪[E] →* ((n → E) ≃ₗ[K] (n → E)) :=
38   (restrictScalarMatrix K E n).comp (ActualIntegralGeneralLinear.embedding E n)
39 
40 theorem integralMatrix_injective : Function.Injective (integralMatrix K E n) :=
41   (restrictScalarMatrix_injective K E n).comp
42     (ActualIntegralGeneralLinear.embedding_injective E n)
43 
44 def integralLattice : AddSubgroup (n → E) where
45   carrier := {v | ∀ i, v i ∈ (valuation E).integer}
46   zero_mem' := by intro i; exact (valuation E).integer.zero_mem
47   add_mem' := by intro v w hv hw i; exact (valuation E).integer.add_mem (hv i) (hw i)
48   neg_mem' := by intro v hv i; exact (valuation E).integer.neg_mem (hv i)
49 
50 omit [Fintype n] [DecidableEq n] in
51 @[simp] theorem mem_integralLattice (v : n → E) :
52     v ∈ integralLattice E n ↔ ∀ i, v i ∈ (valuation E).integer := Iff.rfl
53 
54 omit [Algebra K E] [Fintype n] [DecidableEq n] in
55 theorem integralLattice_coe (v : n → 𝒪[E]) :
56     (fun i => (v i : E)) ∈ integralLattice E n := fun i => (v i).property
57 
58 @[simp] theorem integralMatrix_coe (g : GeneralLinearGroup n 𝒪[E]) (v : n → 𝒪[E]) :
59     integralMatrix K E n g (fun i => (v i : E)) =
60       fun i => (((g : Matrix n n 𝒪[E]) *ᵥ v) i : E) := by
61   ext i
62   simp [integralMatrix, Matrix.mulVec, dotProduct]
63 
64 theorem integralMatrix_preserves (g : GeneralLinearGroup n 𝒪[E]) (v : n → E)
65     (hv : v ∈ integralLattice E n) : integralMatrix K E n g v ∈ integralLattice E n := by
66   let w : n → 𝒪[E] := fun i => ⟨v i, hv i⟩
67   change integralMatrix K E n g (fun i => (w i : E)) ∈ integralLattice E n
68   rw [integralMatrix_coe]
69   exact integralLattice_coe E n _
70 
71 variable [TopologicalSpace E] [IsNonarchimedeanLocalField E]
72 
73 /-- The actual next lattice is multiplication by the chosen `E`-uniformizer. -/
74 def nextLattice : AddSubgroup (n → E) :=
75   (integralLattice E n).map
76     ((ActualLocalUnitDecomposition.uniformizer E : E) • (LinearMap.id : (n → E) →ₗ[E] (n → E))).toAddMonoidHom
77 
78 omit [Fintype n] [DecidableEq n] in
79 @[simp] theorem mem_nextLattice (v : n → E) :
80     v ∈ nextLattice E n ↔ ∃ w ∈ integralLattice E n,
81       (ActualLocalUnitDecomposition.uniformizer E : E) • w = v := Iff.rfl
82 
83 omit [Algebra K E] [Fintype n] [DecidableEq n] in
84 theorem coe_mem_nextLattice_iff (v : n → 𝒪[E]) :
85     (fun i => (v i : E)) ∈ nextLattice E n ↔
86       ∀ i, v i ∈ IsLocalRing.maximalIdeal 𝒪[E] := by
87   classical
88   rw [mem_nextLattice]
89   have hπ := (IsDiscreteValuationRing.irreducible_iff_uniformizer
90     (ActualLocalUnitDecomposition.uniformizer E)).mp
91       (ActualLocalUnitDecomposition.uniformizer_irreducible E)
92   constructor
93   · rintro ⟨w, hw, he⟩ i
94     rw [hπ, Ideal.mem_span_singleton]
95     refine ⟨⟨w i, hw i⟩, ?_⟩
96     apply Subtype.ext
97     exact (congrFun he i).symm
98   · intro hv
99     have hd : ∀ i, ∃ w : 𝒪[E], v i = ActualLocalUnitDecomposition.uniformizer E * w := by
100       intro i
101       have hi := hv i
102       rw [hπ, Ideal.mem_span_singleton] at hi
103       obtain ⟨w, hw⟩ := hi
104       exact ⟨w, hw⟩
105     choose w hw using hd
106     refine ⟨fun i => (w i : E), integralLattice_coe E n w, ?_⟩
107     ext i
108     exact congrArg (fun x : 𝒪[E] => (x : E)) (hw i).symm
109 
110 /-- Congruence on the actual lattice is exactly entrywise residue reduction. -/
111 theorem reduction_kernel_iff (g : GeneralLinearGroup n 𝒪[E]) :
112     g ∈ (ActualResidueGeneralLinear.reduction E n).ker ↔
113       ∀ v ∈ integralLattice E n,
114         integralMatrix K E n g v - v ∈ nextLattice E n := by
115   classical
116   rw [ActualIntegralGeneralLinear.mem_reduction_kernel]
117   constructor
118   · intro hg v hv
119     let w : n → 𝒪[E] := fun i => ⟨v i, hv i⟩
120     change integralMatrix K E n g (fun i => (w i : E)) - (fun i => (w i : E)) ∈ _
121     rw [integralMatrix_coe]
122     change (fun i => ((((g : Matrix n n 𝒪[E]) *ᵥ w - w) i) : E)) ∈ _
123     rw [coe_mem_nextLattice_iff]
124     intro i
125     have he : ((g : Matrix n n 𝒪[E]) *ᵥ w - w) i =
126         ∑ j, (g i j - (1 : Matrix n n 𝒪[E]) i j) * w j := by
127       simp [Matrix.mulVec, dotProduct, sub_mul, Finset.sum_sub_distrib, Matrix.one_apply]
128     rw [he]
129     exact Ideal.sum_mem _ fun j _ => Ideal.mul_mem_right _ _ (hg i j)
130   · intro hg i j
131     let w : n → 𝒪[E] := Pi.single j 1
132     have hv := hg (fun i => (w i : E)) (integralLattice_coe E n w)
133     rw [integralMatrix_coe] at hv
134     change (fun i => ((((g : Matrix n n 𝒪[E]) *ᵥ w - w) i) : E)) ∈ _ at hv
135     rw [coe_mem_nextLattice_iff] at hv
136     simpa [w, Matrix.mulVec, dotProduct, Matrix.one_apply, Pi.single_apply, eq_comm] using hv i
137 
138 /-- The concrete integral matrix image among `K`-linear automorphisms. -/
139 def integralImage : Subgroup ((n → E) ≃ₗ[K] (n → E)) := (integralMatrix K E n).range
140 
141 def integralImageEquiv : GeneralLinearGroup n 𝒪[E] ≃* integralImage K E n :=
142   MonoidHom.ofInjective (integralMatrix_injective K E n)
143 
144 def residueAction : integralImage K E n →* GeneralLinearGroup n 𝓀[E] :=
145   (ActualResidueGeneralLinear.reduction E n).comp (integralImageEquiv K E n).symm.toMonoidHom
146 
147 theorem residueAction_surjective : Function.Surjective (residueAction K E n) :=
148   (ActualResidueGeneralLinear.reduction_surjective E n).comp
149     (integralImageEquiv K E n).symm.surjective
150 
151 /-- The literal finite residue group of this actual extension-field lattice. -/
152 def residueQuotientEquiv :
153     integralImage K E n ⧸ (residueAction K E n).ker ≃* GeneralLinearGroup n 𝓀[E] :=
154   QuotientGroup.quotientKerEquivOfSurjective (residueAction K E n)
155     (residueAction_surjective K E n)
156 
157 end PaperXI.ActualELatticeResidue59

Back to source controls

Original file and source record

This copy matches the recorded source file. Its publication here does not change the work’s review status.

SHA-256: 7adc864addc36f19b3d94431dcbaa62f118e45633f9bc356692c1c8c0698d5a3

Original source on GitHub

Back to Paper XI: Packets, Arithmetic Realization, and Conditional Comparison