Paper IX · Lean source
PolynomialLocalInverse.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_joint_motion/formalization/PolynomialLocalInverse.lean102 lines
Original source path
preserved/PRSC_IX_Consolidated_Manuscript/polynomial_joint_motion/formalization/PolynomialLocalInverse.leanSkip declarations and read code
1 module
2 public import PolynomialInverseCongruence
3 public import PolynomialLocalSurjective
4 public import Mathlib.Topology.Homeomorph.Lemmas
5
6 @[expose] public section
7 noncomputable section
8 set_option autoImplicit false
9
10 namespace Komorebi.PolynomialLocalInverse
11 open Komorebi.PolynomialObstruction Komorebi.PolynomialDigitBridge
12 open Komorebi.PolynomialPadicLift Komorebi.PolynomialInverseCongruence
13 open Komorebi.PolynomialLocalSurjective
14
15 variable {d e : ℕ}
16
17 /-- The actual polynomial evaluation restricted to its input and output residue balls. -/
18 def ballMap (p L : ℕ) [Fact (Nat.Prime p)]
19 (F : Fin e → MvPolynomial (Fin d) ℤ) (x : Fin d → ℤ) :
20 residueBall p L x → residueBall p L (evalSystem F x) := fun a =>
21 ⟨padicEval p F a.val, by
22 intro i
23 simpa only [padicEval_intCast] using
24 padicEval_congruent p L F a.val (fun k => (x k : ℤ_[p])) a.property i⟩
25
26 theorem continuous_ballMap (p L : ℕ) [Fact (Nat.Prime p)]
27 (F : Fin e → MvPolynomial (Fin d) ℤ) (x : Fin d → ℤ) :
28 Continuous (ballMap p L F x) := by
29 apply Continuous.subtype_mk
30 exact (continuous_pi (continuous_padicEval p F)).comp continuous_subtype_val
31
32 theorem ballMap_bijective (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
33 (F : Fin d → MvPolynomial (Fin d) ℤ) (x : Fin d → ℤ)
34 (hJ : Function.Surjective (digitJacobian p F x)) :
35 Function.Bijective (ballMap p L F x) := by
36 constructor
37 · intro a b hab
38 apply Subtype.ext
39 apply padic_map_injective p F x hJ a.val b.val
40 · intro i
41 exact ((by simpa only [pow_one] using pow_dvd_pow (p : ℤ_[p]) hL) :
42 (p : ℤ_[p]) ∣ (p : ℤ_[p])^L).trans
43 (a.property i)
44 · intro i
45 exact ((by simpa only [pow_one] using pow_dvd_pow (p : ℤ_[p]) hL) :
46 (p : ℤ_[p]) ∣ (p : ℤ_[p])^L).trans
47 (b.property i)
48 · exact congrArg Subtype.val hab
49 · intro t
50 obtain ⟨a, ha, hax⟩ := exists_padic_preimage p L hL F x hJ t.val t.property
51 exact ⟨⟨a, hax⟩, Subtype.ext ha⟩
52
53 /-- Smooth square polynomial evaluation is a homeomorphism of the complete residue balls. -/
54 def localHomeomorph (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
55 (F : Fin d → MvPolynomial (Fin d) ℤ) (x : Fin d → ℤ)
56 (hJ : Function.Surjective (digitJacobian p F x)) :
57 residueBall p L x ≃ₜ residueBall p L (evalSystem F x) := by
58 letI : CompactSpace (residueBall p L x) :=
59 isCompact_iff_compactSpace.mp (isCompact_residueBall p L x)
60 let f := Equiv.ofBijective (ballMap p L F x) (ballMap_bijective p L hL F x hJ)
61 exact Continuous.homeoOfEquivCompactToT2 (f := f) (continuous_ballMap p L F x)
62
63 theorem localHomeomorph_apply (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
64 (F : Fin d → MvPolynomial (Fin d) ℤ) (x : Fin d → ℤ)
65 (hJ : Function.Surjective (digitJacobian p F x)) (a : residueBall p L x) :
66 (localHomeomorph p L hL F x hJ a).val = padicEval p F a.val := rfl
67
68 theorem localHomeomorph_symm_eval (p L : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
69 (F : Fin d → MvPolynomial (Fin d) ℤ) (x : Fin d → ℤ)
70 (hJ : Function.Surjective (digitJacobian p F x))
71 (t : residueBall p L (evalSystem F x)) :
72 padicEval p F ((localHomeomorph p L hL F x hJ).symm t).val = t.val := by
73 exact congrArg Subtype.val ((localHomeomorph p L hL F x hJ).apply_symm_apply t)
74
75 theorem localHomeomorph_symm_congruent (p L N : ℕ) [Fact (Nat.Prime p)] (hL : 1 ≤ L)
76 (F : Fin d → MvPolynomial (Fin d) ℤ) (x : Fin d → ℤ)
77 (hJ : Function.Surjective (digitJacobian p F x))
78 (t u : residueBall p L (evalSystem F x))
79 (htu : ∀ i, (p : ℤ_[p])^N ∣ t.val i - u.val i) :
80 ∀ i, (p : ℤ_[p])^N ∣
81 ((localHomeomorph p L hL F x hJ).symm t).val i -
82 ((localHomeomorph p L hL F x hJ).symm u).val i := by
83 apply padic_inverse_congruence p N F x hJ
84 · intro i
85 exact ((by simpa only [pow_one] using pow_dvd_pow (p : ℤ_[p]) hL) :
86 (p : ℤ_[p]) ∣ (p : ℤ_[p])^L).trans
87 (((localHomeomorph p L hL F x hJ).symm t).property i)
88 · intro i
89 exact ((by simpa only [pow_one] using pow_dvd_pow (p : ℤ_[p]) hL) :
90 (p : ℤ_[p]) ∣ (p : ℤ_[p])^L).trans
91 (((localHomeomorph p L hL F x hJ).symm u).property i)
92 · simpa only [localHomeomorph_symm_eval] using htu
93
94 #print axioms ballMap
95 #print axioms continuous_ballMap
96 #print axioms ballMap_bijective
97 #print axioms localHomeomorph
98 #print axioms localHomeomorph_apply
99 #print axioms localHomeomorph_symm_eval
100 #print axioms localHomeomorph_symm_congruent
101
102 end Komorebi.PolynomialLocalInverse
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: 11d6dda31c7932a5175a1ecfb99f18e0a9d287098997bfc5a43789af8385f635
Back to Paper IX: Arithmetic Packets, Dyadic Towers, and Local Polynomial Deformation