Paper XI · Lean source
HeisenbergGeometry.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.
PaperXI/HeisenbergGeometry.lean82 lines
Original source path
formalization/PaperXI/HeisenbergGeometry.leanSkip declarations and read code
1 import Mathlib.LinearAlgebra.BilinearForm.Orthogonal
2 import Mathlib.FieldTheory.Finiteness
3 import Mathlib.Tactic
4
5 /-!
6 # Maximal isotropic subspaces
7
8 Maximality is by inclusion among subspaces on which the alternating form vanishes.
9 The equality with the orthogonal complement is derived from that hypothesis.
10 -/
11
12 set_option autoImplicit false
13
14 namespace PaperXI.HeisenbergGeometry
15
16 open Module
17
18 variable {K V : Type*} [Field K] [AddCommGroup V] [Module K V]
19
20 /-- A subspace on which the form vanishes identically. -/
21 def IsIsotropic (B : LinearMap.BilinForm K V) (L : Submodule K V) : Prop :=
22 ∀ u ∈ L, ∀ v ∈ L, B u v = 0
23
24 /-- Maximality among isotropic subspaces, ordered by inclusion. -/
25 def IsMaximalIsotropic (B : LinearMap.BilinForm K V) (L : Submodule K V) : Prop :=
26 IsIsotropic B L ∧ ∀ M : Submodule K V, IsIsotropic B M → L ≤ M → M = L
27
28 theorem isotropic_iff_le_orthogonal (B : LinearMap.BilinForm K V)
29 (L : Submodule K V) : IsIsotropic B L ↔ L ≤ B.orthogonal L := by
30 constructor
31 · intro h v hv u hu
32 exact h u hu v hv
33 · intro h u hu v hv
34 exact h hv u hu
35
36 /-- Adjoining an orthogonal vector preserves isotropy for an alternating form. -/
37 theorem isotropic_sup_span (B : LinearMap.BilinForm K V) (hB : B.IsAlt)
38 (L : Submodule K V) (hL : IsIsotropic B L) (x : V)
39 (hx : x ∈ B.orthogonal L) : IsIsotropic B (L ⊔ K ∙ x) := by
40 intro u hu v hv
41 obtain ⟨l, hl, z, hz, rfl⟩ := Submodule.mem_sup.mp hu
42 obtain ⟨a, rfl⟩ := Submodule.mem_span_singleton.mp hz
43 obtain ⟨m, hm, w, hw, rfl⟩ := Submodule.mem_sup.mp hv
44 obtain ⟨c, rfl⟩ := Submodule.mem_span_singleton.mp hw
45 have hxl : B x m = 0 := hB.isRefl _ _ (hx m hm)
46 simp [map_add, map_smul, LinearMap.add_apply, LinearMap.smul_apply,
47 hL l hl m hm, hx l hl, hxl, hB x]
48
49 /-- Maximality supplies the reverse inclusion in the orthogonal complement. -/
50 theorem orthogonal_eq (B : LinearMap.BilinForm K V) (hB : B.IsAlt)
51 (L : Submodule K V) (hL : IsMaximalIsotropic B L) : B.orthogonal L = L := by
52 apply le_antisymm
53 · intro x hx
54 have hsup := hL.2 (L ⊔ K ∙ x) (isotropic_sup_span B hB L hL.1 x hx) le_sup_left
55 rw [← hsup]
56 exact (show K ∙ x ≤ L ⊔ K ∙ x from le_sup_right)
57 (Submodule.mem_span_singleton_self x)
58 · exact (isotropic_iff_le_orthogonal B L).mp hL.1
59
60 theorem maximal_iff_orthogonal_eq (B : LinearMap.BilinForm K V) (hB : B.IsAlt)
61 (L : Submodule K V) : IsMaximalIsotropic B L ↔ B.orthogonal L = L := by
62 refine ⟨orthogonal_eq B hB L, fun h => ?_⟩
63 refine ⟨(isotropic_iff_le_orthogonal B L).mpr h.ge, ?_⟩
64 intro M hM hLM
65 apply le_antisymm _ hLM
66 calc
67 M ≤ B.orthogonal M := (isotropic_iff_le_orthogonal B M).mp hM
68 _ ≤ B.orthogonal L := LinearMap.BilinForm.orthogonal_le hLM
69 _ = L := h
70
71 /-- Every maximal isotropic subspace has half the dimension of a nondegenerate space. -/
72 theorem two_mul_finrank [FiniteDimensional K V]
73 (B : LinearMap.BilinForm K V) (hB : B.IsAlt) (hnd : B.Nondegenerate)
74 (L : Submodule K V) (hL : IsMaximalIsotropic B L) :
75 2 * finrank K L = finrank K V := by
76 have h := LinearMap.BilinForm.finrank_add_finrank_orthogonal hB.isRefl L
77 rw [orthogonal_eq B hB L hL,
78 LinearMap.BilinForm.orthogonal_top_eq_bot hnd, inf_bot_eq,
79 finrank_bot, add_zero] at h
80 omega
81
82 end PaperXI.HeisenbergGeometry
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: df27cc30cbdcf1f4f8ac3ac85c90e2266dcc866bcd81ea3fbdc18d9ac3022c7c
Back to Paper XI: Packets, Arithmetic Realization, and Conditional Comparison