Paper XI · Lean source

DyadicHeisenbergLift.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/DyadicHeisenbergLift.lean155 lines

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

Skip source text

1 import PaperXI.HeisenbergCochain
2 import PaperXI.SymplecticCoordinates
3 
4 /-! A given quadratic refinement on an intrinsic finite F2-space supplies an
5 actual bilinear factor set, hence a finite Heisenberg extension. Coordinates are
6 constructed from the form; its square profile is the given refinement, not erased. -/
7 set_option autoImplicit false
8 noncomputable section
9 namespace PaperXI.DyadicHeisenbergLift
10 open scoped BigOperators Classical
11 open PaperXI.Dyadic PaperXI.DyadicAffine PaperXI.DyadicCoordinates PaperXI.BilinearHeisenberg
12 variable {ι : Type*} [Fintype ι]
13 
14 /-- The standard factor set with declared squares on both axes of every plane. -/
15 def coordinateFactor (a : ι → F2 × F2) :
16     LinearMap.BilinForm F2 (ι → F2 × F2) where
17   toFun x :=
18     { toFun := fun y => ∑ i, ((x i).1 * (y i).2 +
19         (a i).1 * (x i).1 * (y i).1 + (a i).2 * (x i).2 * (y i).2)
20       map_add' := by
21         intro y z
22         simp only [Pi.add_apply, Prod.fst_add, Prod.snd_add]
23         rw [← Finset.sum_add_distrib]
24         apply Finset.sum_congr rfl
25         intro i hi
26         ring
27       map_smul' := by
28         intro r y
29         change (∑ i, ((x i).1 * (r * (y i).2) +
30           (a i).1 * (x i).1 * (r * (y i).1) + (a i).2 * (x i).2 * (r * (y i).2))) =
31           r * (∑ i, ((x i).1 * (y i).2 +
32           (a i).1 * (x i).1 * (y i).1 + (a i).2 * (x i).2 * (y i).2))
33         rw [Finset.mul_sum]
34         apply Finset.sum_congr rfl
35         intro i hi
36         ring }
37   map_add' := by
38     intro x z
39     apply LinearMap.ext
40     intro y
41     change (∑ i, (((x + z) i).1 * (y i).2 +
42       (a i).1 * ((x + z) i).1 * (y i).1 + (a i).2 * ((x + z) i).2 * (y i).2)) =
43       (∑ i, ((x i).1 * (y i).2 + (a i).1 * (x i).1 * (y i).1 +
44       (a i).2 * (x i).2 * (y i).2)) +
45       (∑ i, ((z i).1 * (y i).2 + (a i).1 * (z i).1 * (y i).1 +
46       (a i).2 * (z i).2 * (y i).2))
47     rw [← Finset.sum_add_distrib]
48     apply Finset.sum_congr rfl
49     intro i hi
50     simp only [Pi.add_apply, Prod.fst_add, Prod.snd_add]
51     ring
52   map_smul' := by
53     intro r x
54     apply LinearMap.ext
55     intro y
56     change (∑ i, ((r * (x i).1) * (y i).2 +
57       (a i).1 * (r * (x i).1) * (y i).1 + (a i).2 * (r * (x i).2) * (y i).2)) =
58       r * (∑ i, ((x i).1 * (y i).2 + (a i).1 * (x i).1 * (y i).1 +
59       (a i).2 * (x i).2 * (y i).2))
60     rw [Finset.mul_sum]
61     apply Finset.sum_congr rfl
62     intro i hi
63     ring
64 
65 @[simp] theorem coordinateFactor_apply (a x y : ι → F2 × F2) :
66     coordinateFactor a x y = ∑ i, ((x i).1 * (y i).2 +
67       (a i).1 * (x i).1 * (y i).1 + (a i).2 * (x i).2 * (y i).2) := rfl
68 
69 theorem coordinateFactor_commutator (a x y : ι → F2 × F2) :
70     coordinateFactor a x y - coordinateFactor a y x = symplectic x y := by
71   simp only [coordinateFactor_apply, symplectic_apply, ← Finset.sum_sub_distrib]
72   apply Finset.sum_congr rfl
73   intro i hi
74   rw [sub_eq_add_neg, CharTwo.neg_eq]
75   ring_nf
76   simp only [show (2 : F2) = 0 from rfl, mul_zero, add_zero]
77 
78 theorem coordinateFactor_diagonal (a x : ι → F2 × F2) :
79     coordinateFactor a x x = quadratic a x := by
80   simp only [coordinateFactor_apply, quadratic, plane]
81   apply Finset.sum_congr rfl
82   intro i hi
83   have hs (t : F2) : t * t = t := by fin_cases t <;> rfl
84   have hx := hs (x i).1
85   have hy := hs (x i).2
86   simp only [mul_assoc, hx, hy]
87 
88 variable {V : Type*} [AddCommGroup V] [Module F2 V]
89 
90 /-- Transport the actual quadratic refinement into the constructed coordinates. -/
91 def coordinateRefinementOf (b : LinearMap.BilinForm F2 V) (Q : Refinement b)
92     (e : V ≃ₗ[F2] (ι → F2 × F2))
93     (he : ∀ x y, b x y = symplectic (e x) (e y)) : Refinement (symplectic (ι := ι)) where
94   value x := Q.value (e.symm x)
95   polar x y := by
96     rw [map_add, Q.polar, he]
97     simp
98 
99 /-- Pull back the explicit factor set; no central extension is an input. -/
100 def factorOfCoordinates (b : LinearMap.BilinForm F2 V) (Q : Refinement b)
101     (e : V ≃ₗ[F2] (ι → F2 × F2))
102     (he : ∀ x y, b x y = symplectic (e x) (e y)) : LinearMap.BilinForm F2 V :=
103   (coordinateFactor (refinementCoefficients (coordinateRefinementOf b Q e he))).compl₁₂
104     e.toLinearMap e.toLinearMap
105 
106 theorem factorOfCoordinates_commutator (b : LinearMap.BilinForm F2 V) (Q : Refinement b)
107     (e : V ≃ₗ[F2] (ι → F2 × F2))
108     (he : ∀ x y, b x y = symplectic (e x) (e y)) (x y : V) :
109     factorOfCoordinates b Q e he x y - factorOfCoordinates b Q e he y x = b x y := by
110   change coordinateFactor _ (e x) (e y) - coordinateFactor _ (e y) (e x) = b x y
111   rw [coordinateFactor_commutator, ← he]
112 
113 theorem factorOfCoordinates_diagonal (b : LinearMap.BilinForm F2 V) (Q : Refinement b)
114     (e : V ≃ₗ[F2] (ι → F2 × F2))
115     (he : ∀ x y, b x y = symplectic (e x) (e y)) (x : V) :
116     factorOfCoordinates b Q e he x x = Q.value x := by
117   change coordinateFactor _ (e x) (e x) = Q.value x
118   rw [coordinateFactor_diagonal, ← refinement_coordinate_formula]
119   simp [coordinateRefinementOf]
120 
121 variable [FiniteDimensional F2 V]
122 
123 /-- Every refinement of a finite nondegenerate alternating F2-form has an actual
124 bilinear lift, including the supplied square data. A basis is constructed, not assumed. -/
125 theorem exists_factor (b : LinearMap.BilinForm F2 V) (ha : b.IsAlt)
126     (hb : b.SeparatingLeft) (Q : Refinement b) :
127     ∃ c : LinearMap.BilinForm F2 V,
128       (∀ x y, c x y - c y x = b x y) ∧ (∀ x, c x x = Q.value x) := by
129   obtain ⟨r, e, he⟩ := SymplecticCoordinates.exists_coordinates b ha hb
130   exact ⟨factorOfCoordinates b Q e he,
131     factorOfCoordinates_commutator b Q e he, factorOfCoordinates_diagonal b Q e he⟩
132 
133 /-- A deterministic-in-the-foundations choice of bilinear lift. It is not a
134 claim of canonical functoriality or a normalized symplectic-group action. -/
135 def factor (b : LinearMap.BilinForm F2 V) (ha : b.IsAlt)
136     (hb : b.SeparatingLeft) (Q : Refinement b) : LinearMap.BilinForm F2 V :=
137   Classical.choose (exists_factor b ha hb Q)
138 
139 theorem factor_commutator (b : LinearMap.BilinForm F2 V) (ha : b.IsAlt)
140     (hb : b.SeparatingLeft) (Q : Refinement b) (x y : V) :
141     factor b ha hb Q x y - factor b ha hb Q y x = b x y :=
142   (Classical.choose_spec (exists_factor b ha hb Q)).1 x y
143 
144 theorem factor_diagonal (b : LinearMap.BilinForm F2 V) (ha : b.IsAlt)
145     (hb : b.SeparatingLeft) (Q : Refinement b) (x : V) :
146     factor b ha hb Q x x = Q.value x :=
147   (Classical.choose_spec (exists_factor b ha hb Q)).2 x
148 
149 /-- The actual group constructed from Q has exactly Q as its lift-square map. -/
150 theorem square_profile (b : LinearMap.BilinForm F2 V) (ha : b.IsAlt)
151     (hb : b.SeparatingLeft) (Q : Refinement b) (h : Element (factor b ha hb Q)) :
152     h * h = i (factor b ha hb Q) (Multiplicative.ofAdd (Q.value h.vector)) := by
153   rw [HeisenbergCochain.square, factor_diagonal]
154 
155 end PaperXI.DyadicHeisenbergLift

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: 916986a499526e1343b2b63906fe133ac8db3cb95e6cbbbe31d6ada8e17229b1

Original source on GitHub

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