Paper XI · Lean source
SymplecticCoordinates.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 (3)
PaperXI/SymplecticCoordinates.lean70 lines
Original source path
formalization/PaperXI/SymplecticCoordinates.leanSkip declarations and read code
1 import PaperXI.SymplecticSplit
2 import PaperXI.SymplecticAssembly
3 import PaperXI.DyadicDimension
4
5 /-! Symplectic coordinates constructed from alternation and nondegeneracy,
6 by strong induction on the dimension. -/
7 set_option autoImplicit false
8 noncomputable section
9 namespace PaperXI.SymplecticCoordinates
10 open scoped BigOperators Classical
11 open PaperXI.Dyadic PaperXI.DyadicCoordinates
12
13 variable {V : Type*} [AddCommGroup V] [Module F2 V] [FiniteDimensional F2 V]
14
15 /-- Every finite-dimensional alternating left-nondegenerate F2-form admits
16 actual form-preserving coordinates in finitely many hyperbolic planes. -/
17 theorem exists_coordinates (b : V →ₗ[F2] V →ₗ[F2] F2)
18 (ha : ∀ x, b x x = 0) (hn : ∀ x, (∀ y, b x y = 0) → x = 0) :
19 ∃ r : ℕ, ∃ e : V ≃ₗ[F2] (Fin r → F2 × F2),
20 ∀ x y, b x y = symplectic (e x) (e y) := by
21 suffices ∀ n, Module.finrank F2 V = n →
22 ∃ r : ℕ, ∃ e : V ≃ₗ[F2] (Fin r → F2 × F2),
23 ∀ x y, b x y = symplectic (e x) (e y) by
24 exact this _ rfl
25 intro n hdim
26 induction n using Nat.strong_induction_on generalizing V with
27 | h n ih =>
28 by_cases hz : n = 0
29 · have hzero : Module.finrank F2 V = 0 := hdim.trans hz
30 let : Subsingleton V := (Module.finrank_zero_iff (R := F2) (M := V)).mp hzero
31 refine ⟨0, LinearEquiv.ofSubsingleton (R := F2) V (Fin 0 → F2 × F2), ?_⟩
32 intro x y
33 have hx : x = 0 := Subsingleton.elim _ _
34 simp [hx, symplectic_apply]
35 · let : Nontrivial V := (Module.finrank_pos_iff (R := F2) (M := V)).mp (by omega)
36 obtain ⟨W, e, he, haW, hnW, hW⟩ :=
37 PaperXI.SymplecticSplit.exists_split b ha hn
38 obtain ⟨r, f, hf⟩ := ih (Module.finrank F2 W) (by omega)
39 (b.compl₁₂ W.subtype W.subtype) haW hnW rfl
40 refine ⟨r + 1, PaperXI.SymplecticAssembly.assemble r e f, ?_⟩
41 exact PaperXI.SymplecticAssembly.assemble_form r b
42 (b.compl₁₂ W.subtype W.subtype) e f he hf
43
44 /-- The chosen coordinate count is exactly half the dimension. -/
45 theorem exists_coordinates_dimension (b : V →ₗ[F2] V →ₗ[F2] F2)
46 (ha : ∀ x, b x x = 0) (hn : ∀ x, (∀ y, b x y = 0) → x = 0) :
47 ∃ r : ℕ, ∃ e : V ≃ₗ[F2] (Fin r → F2 × F2),
48 (∀ x y, b x y = symplectic (e x) (e y)) ∧
49 Module.finrank F2 V = 2 * r := by
50 obtain ⟨r, e, he⟩ := exists_coordinates b ha hn
51 refine ⟨r, e, he, ?_⟩
52 simpa using PaperXI.DyadicDimension.finrank_eq_twice_card e
53
54 theorem even_finrank (b : V →ₗ[F2] V →ₗ[F2] F2)
55 (ha : ∀ x, b x x = 0) (hn : ∀ x, (∀ y, b x y = 0) → x = 0) :
56 Even (Module.finrank F2 V) := by
57 obtain ⟨r, _, _, hr⟩ := exists_coordinates_dimension b ha hn
58 exact ⟨r, by omega⟩
59
60 /-- Coordinates with the canonical half-dimension index. -/
61 theorem exists_half_coordinates (b : V →ₗ[F2] V →ₗ[F2] F2)
62 (ha : ∀ x, b x x = 0) (hn : ∀ x, (∀ y, b x y = 0) → x = 0) :
63 ∃ e : V ≃ₗ[F2] (Fin (Module.finrank F2 V / 2) → F2 × F2),
64 ∀ x y, b x y = symplectic (e x) (e y) := by
65 obtain ⟨r, e, he, hr⟩ := exists_coordinates_dimension b ha hn
66 have h : r = Module.finrank F2 V / 2 := by omega
67 subst r
68 exact ⟨e, he⟩
69
70 end PaperXI.SymplecticCoordinates
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: b9b5ab88baf7b682acac5698d8cd558de3acf406eaec991f76a8b16e63500ecf
Back to Paper XI: Packets, Arithmetic Realization, and Conditional Comparison