Paper IX · Lean source
PolynomialPrescribedControls.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/controls/PolynomialPrescribedControls.lean113 lines
Original source path
preserved/PRSC_IX_Consolidated_Manuscript/polynomial_joint_motion/controls/PolynomialPrescribedControls.leanSkip declarations and read code
1 module
2 public import PolynomialPrescribedLifts
3
4 @[expose] public section
5 noncomputable section
6 set_option autoImplicit false
7
8 namespace Komorebi.PolynomialPrescribedControls
9
10 open MvPolynomial PolynomialDigitBridge PolynomialPrescribedSystem
11 open PolynomialPrescribedLifts PolynomialParameterSystem
12 open PolynomialObstruction NativeAffine FiniteFiberCounts
13
14 /-- The equation only sees the parameter coordinate. -/
15 def parameterOnly : Fin 1 → MvPolynomial (Fin (1 + 1)) ℤ := fun _ => X 1
16
17 /-- Full Jacobian surjectivity does not imply freedom to prescribe parameters. -/
18 theorem full_jacobian_surjective :
19 Function.Surjective (digitJacobian 2 parameterOnly (fun _ => 0)) := by
20 intro t
21 refine ⟨![0, t 0], ?_⟩
22 ext i
23 simp [digitJacobian, parameterOnly, Fin.eq_zero i, Fin.sum_univ_two]
24
25 theorem solved_jacobian_zero :
26 PolynomialPrescribedSystem.solvedJacobian 2 parameterOnly (fun _ => 0) = 0 := by
27 ext u i
28 simp [PolynomialPrescribedSystem.solvedJacobian, parameterOnly, Fin.eq_zero i]
29
30 /-- The nonzero prescribed parameter digit obstructs lifting already modulo four. -/
31 theorem digit_one_empty :
32 ¬ Nonempty (PrescribedDigits 2 parameterOnly (fun _ => 0) (fun _ => 0) (fun _ => 1)) := by
33 rintro ⟨u, hu⟩
34 have hi := congrFun hu 0
35 norm_num [parameterResidual, reduction, parameterJacobian,
36 PolynomialPrescribedSystem.solvedJacobian, parameterOnly, Pi.single_apply, Fin.ext_iff] at hi
37
38 /-- A zero parameter digit leaves precisely the solved-coordinate digit free. -/
39 def zeroDigitEquiv :
40 PrescribedDigits 2 parameterOnly (fun _ => 0) (fun _ => 0) (fun _ => 0) ≃
41 (Fin 1 → ZMod 2) where
42 toFun := Subtype.val
43 invFun u := ⟨u, by
44 ext i
45 simp [parameterResidual, reduction, parameterJacobian,
46 PolynomialPrescribedSystem.solvedJacobian, parameterOnly, Fin.eq_zero i]⟩
47 left_inv _ := rfl
48 right_inv _ := rfl
49
50 theorem zero_digit_card :
51 Nat.card (PrescribedDigits 2 parameterOnly (fun _ => 0) (fun _ => 0) (fun _ => 0)) = 2 := by
52 rw [Nat.card_congr zeroDigitEquiv]
53 simp [Nat.card_eq_fintype_card]
54
55 theorem zero_residual : evalSystem parameterOnly (fun _ => 0) = (2 : ℤ)^1 • (fun _ => 0) := by
56 ext i
57 simp [evalSystem, parameterOnly]
58
59 /-- The obstructed digit has no actual next-level polynomial residue lift. -/
60 theorem prescribed_one_no_actual_lift :
61 ¬ Nonempty (PrescribedLifts 2 1 parameterOnly (fun _ => 0) (fun _ => 1)) := by
62 rintro ⟨y⟩
63 exact digit_one_empty ⟨(prescribedDigitEquivLifts 2 1 (by decide) (by decide)
64 parameterOnly (fun _ => 0) (fun _ => 0) zero_residual (fun _ => 1)).symm y⟩
65
66 /-- The unobstructed digit has exactly two actual residue lifts modulo four. -/
67 theorem prescribed_zero_actual_card :
68 Nat.card (PrescribedLifts 2 1 parameterOnly (fun _ => 0) (fun _ => 0)) = 2 := by
69 rw [← Nat.card_congr (prescribedDigitEquivLifts 2 1 (by decide) (by decide)
70 parameterOnly (fun _ => 0) (fun _ => 0) zero_residual (fun _ => 0))]
71 exact zero_digit_card
72
73 /-- An odd-prime control distinguishes the required plus sign from a minus sign. -/
74 def parameterPlusThree : Fin 1 → MvPolynomial (Fin (1 + 1)) ℤ := fun _ => X 1 + 1 + 1 + 1
75
76 theorem three_residual :
77 evalSystem parameterPlusThree (fun _ => 0) = (3 : ℤ)^1 • (fun _ => 1) := by
78 ext i
79 norm_num [evalSystem, parameterPlusThree]
80
81 theorem digit_one_for_three_empty :
82 ¬ Nonempty (PrescribedDigits 3 parameterPlusThree (fun _ => 0) (fun _ => 1)
83 (fun _ => 1)) := by
84 rintro ⟨u, hu⟩
85 have hi := congrFun hu 0
86 norm_num [parameterResidual, reduction, parameterJacobian,
87 PolynomialPrescribedSystem.solvedJacobian, parameterPlusThree,
88 Pi.single_apply, Fin.ext_iff, MvPolynomial.pderiv_one] at hi
89 exact (by decide : (2 : ZMod 3) ≠ 0) hi
90
91 theorem digit_two_for_three_exists :
92 Nonempty (PrescribedDigits 3 parameterPlusThree (fun _ => 0) (fun _ => 1)
93 (fun _ => 2)) := by
94 refine ⟨⟨fun _ => 0, ?_⟩⟩
95 ext i
96 norm_num [parameterResidual, reduction, parameterJacobian,
97 PolynomialPrescribedSystem.solvedJacobian, parameterPlusThree,
98 Pi.single_apply, Fin.ext_iff, Fin.eq_zero i, MvPolynomial.pderiv_one]
99 exact (by decide : (3 : ZMod 3) = 0)
100
101 theorem prescribed_one_for_three_no_actual_lift :
102 ¬ Nonempty (PrescribedLifts 3 1 parameterPlusThree (fun _ => 0) (fun _ => 1)) := by
103 rintro ⟨y⟩
104 exact digit_one_for_three_empty ⟨(prescribedDigitEquivLifts 3 1 (by decide) (by decide)
105 parameterPlusThree (fun _ => 0) (fun _ => 1) three_residual (fun _ => 1)).symm y⟩
106
107 theorem prescribed_two_for_three_actual_lift :
108 Nonempty (PrescribedLifts 3 1 parameterPlusThree (fun _ => 0) (fun _ => 2)) := by
109 obtain ⟨u⟩ := digit_two_for_three_exists
110 exact ⟨prescribedDigitEquivLifts 3 1 (by decide) (by decide)
111 parameterPlusThree (fun _ => 0) (fun _ => 1) three_residual (fun _ => 2) u⟩
112
113 end Komorebi.PolynomialPrescribedControls
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: 5cce4a5e5295ba98e65ea52efe72741b92e2607bfbe4844e8d5ad647c8be8a5a
Back to Paper IX: Arithmetic Packets, Dyadic Towers, and Local Polynomial Deformation