Paper IX · Lean source

PolynomialParameterChart.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.

polynomial_parameter_towers/formalization/PolynomialParameterChart.lean201 lines

Original source pathpreserved/PRSC_IX_Consolidated_Manuscript/polynomial_parameter_towers/formalization/PolynomialParameterChart.lean
Skip declarations and read code

Skip source text

1 module
2 public import PolynomialLocalInverse
3 public import PolynomialParameterSystem
4 
5 @[expose] public section
6 noncomputable section
7 set_option autoImplicit false
8 
9 namespace Komorebi.PolynomialParameterChart
10 open Komorebi.PolynomialObstruction Komorebi.PolynomialDigitBridge
11 open Komorebi.PolynomialPadicLift Komorebi.PolynomialPadicUnique
12 open Komorebi.PolynomialLocalSurjective Komorebi.PolynomialLocalInverse
13 open Komorebi.PolynomialParameterSystem
14 variable {e q : ℕ}
15 
16 /-- The target with zero polynomial residual and the prescribed free coordinates. -/
17 def chartTarget (p L : ℕ) [Fact (Nat.Prime p)]
18     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
19     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
20     (t : residueBall p L (freePart x)) :
21     residueBall p L (evalSystem (augmented F) x) :=
22   ⟨join 0 t.val, by
23     intro i
24     refine Fin.addCases (fun j => ?_) (fun j => ?_) i
25     · simpa only [join_solved, Pi.zero_apply, evalSystem_augmented, zero_sub] using
26         dvd_neg.mpr ((int_pow_dvd_iff p L _).mp (hx j))
27     · simpa only [evalSystem_augmented, join_free] using t.property j⟩
28 
29 theorem continuous_chartTarget (p L : ℕ) [Fact (Nat.Prime p)]
30     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
31     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i) :
32     Continuous (chartTarget p L F x hx) := by
33   apply Continuous.subtype_mk
34   exact continuous_join.comp (continuous_const.prodMk continuous_subtype_val)
35 
36 def chartPoint (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
37     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
38     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
39     (hJ : Function.Surjective (solvedJacobian p F x))
40     (t : residueBall p L (freePart x)) : residueBall p L x :=
41   (localHomeomorph p L hL (augmented F) x
42     (augmented_jacobian_surjective p F x hJ)).symm (chartTarget p L F x hx t)
43 
44 theorem chartPoint_spec (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
45     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
46     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
47     (hJ : Function.Surjective (solvedJacobian p F x))
48     (t : residueBall p L (freePart x)) :
49     padicEval p F (chartPoint p L hL F x hx hJ t).val = 0 ∧
50       freePart (chartPoint p L hL F x hx hJ t).val = t.val := by
51   apply (padicEval_augmented_iff p F _ t.val).mp
52   exact localHomeomorph_symm_eval p L hL (augmented F) x
53     (augmented_jacobian_surjective p F x hJ) (chartTarget p L F x hx t)
54 
55 theorem chartPoint_root (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
56     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
57     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
58     (hJ : Function.Surjective (solvedJacobian p F x))
59     (t : residueBall p L (freePart x)) :
60     padicEval p F (chartPoint p L hL F x hx hJ t).val = 0 :=
61   (chartPoint_spec p L hL F x hx hJ t).1
62 
63 theorem chartPoint_free (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
64     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
65     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
66     (hJ : Function.Surjective (solvedJacobian p F x))
67     (t : residueBall p L (freePart x)) :
68     freePart (chartPoint p L hL F x hx hJ t).val = t.val :=
69   (chartPoint_spec p L hL F x hx hJ t).2
70 
71 theorem chartPoint_unique (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
72     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
73     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
74     (hJ : Function.Surjective (solvedJacobian p F x))
75     (t : residueBall p L (freePart x)) (z : residueBall p L x)
76     (hz : padicEval p F z.val = 0) (ht : freePart z.val = t.val) :
77     z = chartPoint p L hL F x hx hJ t := by
78   apply (localHomeomorph p L hL (augmented F) x
79     (augmented_jacobian_surjective p F x hJ)).injective
80   apply Subtype.ext
81   change padicEval p (augmented F) z.val =
82     padicEval p (augmented F) (chartPoint p L hL F x hx hJ t).val
83   rw [padicEval_augmented, padicEval_augmented, hz, ht,
84     chartPoint_root, chartPoint_free]
85 
86 theorem continuous_chartPoint (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
87     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
88     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
89     (hJ : Function.Surjective (solvedJacobian p F x)) :
90     Continuous (chartPoint p L hL F x hx hJ) :=
91   (localHomeomorph p L hL (augmented F) x
92     (augmented_jacobian_surjective p F x hJ)).symm.continuous.comp
93       (continuous_chartTarget p L F x hx)
94 
95 theorem chartPoint_congruent (p L N : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
96     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
97     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
98     (hJ : Function.Surjective (solvedJacobian p F x))
99     (t u : residueBall p L (freePart x))
100     (htu : ∀ j, (p : ℤ_[p])^N ∣ t.val j - u.val j) :
101     ∀ i, (p : ℤ_[p])^N ∣ (chartPoint p L hL F x hx hJ t).val i -
102       (chartPoint p L hL F x hx hJ u).val i := by
103   apply localHomeomorph_symm_congruent p L N hL (augmented F) x
104     (augmented_jacobian_surjective p F x hJ)
105   intro i
106   change (p : ℤ_[p])^N ∣ join (0 : Fin e → ℤ_[p]) t.val i - join 0 u.val i
107   refine Fin.addCases (fun j => ?_) (fun j => ?_) i
108   · simp only [join_solved, sub_self, dvd_zero]
109   · simpa only [join_free] using htu j
110 
111 def chartPhi (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
112     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
113     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
114     (hJ : Function.Surjective (solvedJacobian p F x))
115     (t : residueBall p L (freePart x)) : Fin e → ℤ_[p] :=
116   solvedPart (chartPoint p L hL F x hx hJ t).val
117 
118 theorem continuous_chartPhi (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
119     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
120     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
121     (hJ : Function.Surjective (solvedJacobian p F x)) :
122     Continuous (chartPhi p L hL F x hx hJ) :=
123   continuous_solvedPart.comp (continuous_subtype_val.comp
124     (continuous_chartPoint p L hL F x hx hJ))
125 
126 theorem chartPoint_graph (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
127     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
128     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
129     (hJ : Function.Surjective (solvedJacobian p F x))
130     (t : residueBall p L (freePart x)) :
131     join (chartPhi p L hL F x hx hJ t) t.val =
132       (chartPoint p L hL F x hx hJ t).val := by
133   rw [← chartPoint_free p L hL F x hx hJ t]
134   exact join_parts _
135 
136 theorem chartGraph_iff (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
137     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
138     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
139     (hJ : Function.Surjective (solvedJacobian p F x))
140     (t : residueBall p L (freePart x)) (z : residueBall p L x) :
141     (padicEval p F z.val = 0 ∧ freePart z.val = t.val) ↔
142       z.val = join (chartPhi p L hL F x hx hJ t) t.val := by
143   rw [chartPoint_graph]
144   constructor
145   · rintro ⟨hz, ht⟩
146     exact congrArg Subtype.val (chartPoint_unique p L hL F x hx hJ t z hz ht)
147   · intro h
148     rw [h]
149     exact chartPoint_spec p L hL F x hx hJ t
150 
151 theorem chartPoint_congruent_iff (p L N : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
152     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
153     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
154     (hJ : Function.Surjective (solvedJacobian p F x))
155     (t u : residueBall p L (freePart x)) :
156     (∀ j, (p : ℤ_[p])^N ∣ t.val j - u.val j) ↔
157       (∀ i, (p : ℤ_[p])^N ∣ (chartPoint p L hL F x hx hJ t).val i -
158         (chartPoint p L hL F x hx hJ u).val i) := by
159   constructor
160   · exact chartPoint_congruent p L N hL F x hx hJ t u
161   · intro h j
162     have ht := congrFun (chartPoint_free p L hL F x hx hJ t) j
163     have hu := congrFun (chartPoint_free p L hL F x hx hJ u) j
164     simpa only [freePart] using (ht ▸ hu ▸ h (Fin.natAdd e j))
165 
166 /-- The whole root locus is continuously and uniquely parameterized by its free coordinates. -/
167 def parameterHomeomorph (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
168     (F : Fin e → MvPolynomial (Fin (e + q)) ℤ) (x : Fin (e + q) → ℤ)
169     (hx : ∀ i, (p : ℤ)^L ∣ evalSystem F x i)
170     (hJ : Function.Surjective (solvedJacobian p F x)) :
171     residueBall p L (freePart x) ≃ₜ {z : residueBall p L x // padicEval p F z.val = 0} where
172   toFun t := ⟨chartPoint p L hL F x hx hJ t, chartPoint_root p L hL F x hx hJ t⟩
173   invFun z := ⟨freePart z.val.val, fun j => z.val.property (Fin.natAdd e j)⟩
174   left_inv t := Subtype.ext (chartPoint_free p L hL F x hx hJ t)
175   right_inv z := by
176     apply Subtype.ext
177     exact (chartPoint_unique p L hL F x hx hJ _ z.val z.property rfl).symm
178   continuous_toFun := by
179     apply Continuous.subtype_mk
180     exact continuous_chartPoint p L hL F x hx hJ
181   continuous_invFun := by
182     apply Continuous.subtype_mk
183     exact continuous_freePart.comp (continuous_subtype_val.comp continuous_subtype_val)
184 
185 #print axioms chartTarget
186 #print axioms continuous_chartTarget
187 #print axioms chartPoint
188 #print axioms chartPoint_spec
189 #print axioms chartPoint_root
190 #print axioms chartPoint_free
191 #print axioms chartPoint_unique
192 #print axioms continuous_chartPoint
193 #print axioms chartPoint_congruent
194 #print axioms chartPhi
195 #print axioms continuous_chartPhi
196 #print axioms chartPoint_graph
197 #print axioms chartGraph_iff
198 #print axioms chartPoint_congruent_iff
199 #print axioms parameterHomeomorph
200 
201 end Komorebi.PolynomialParameterChart

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: 77fa77bfce3b270fe3388ffc70e3567caac9d9bea62baf70fe4cc1d604c01559

Original source on GitHub

Back to Paper IX: Arithmetic Packets, Dyadic Towers, and Local Polynomial Deformation