Paper XI · Lean source

GluedPacketSections.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 (1)

PaperXI/GluedPacketSections.lean170 lines

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

Skip source text

1 import PaperXI.RepresentationGraph
2 import Mathlib.RepresentationTheory.Intertwining
3 
4 /-! Actual linear spaces of compatible sections, their representation, and the
5 map obtained from root holonomy tests. The final section equivalence is built;
6 a compatible family of comparison maps is not part of the input. -/
7 set_option autoImplicit false
8 set_option backward.isDefEq.respectTransparency false
9 noncomputable section
10 namespace PaperXI.GluedPacketSections
11 open Quiver GraphTransport GraphGauge
12 attribute [local instance] GraphTransport.symmetrifyAdd GraphTransport.symmetrifyModule
13 
14 variable {K α G : Type*} [Field K] [Quiver α] [Monoid G]
15 variable {V W : α → Type*}
16 variable [∀ v, AddCommGroup (V v)] [∀ v, Module K (V v)]
17 variable [∀ v, AddCommGroup (W v)] [∀ v, Module K (W v)]
18 variable (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[K] V v))
19 variable (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[K] W v))
20 
21 /-- Sections satisfy every original oriented-edge equation, not just tree edges. -/
22 def sections : Submodule K (∀ v, V v) where
23   carrier s := ∀ {u v : α} (e : u ⟶ v), A e (s u) = s v
24   zero_mem' := by intro u v e; simp
25   add_mem' := by intro a b ha hb u v e; simpa using (map_add (A e) (a u) (b u)).trans (congrArg₂ (· + ·) (ha e) (hb e))
26   smul_mem' := by intro c a ha u v e; simpa using (map_smul (A e) c (a u)).trans (congrArg (c • ·) (ha e))
27 
28 theorem section_edge (s : sections A) {u v : α} (e : Traversal u v) :
29     edge A e (s.val u) = s.val v := by
30   cases e using Sum.rec with
31   | inl e => exact s.property e
32   | inr e =>
33     change (A e).symm (s.val u) = s.val v
34     apply (A e).injective
35     simpa using (s.property e).symm
36 
37 theorem section_path (s : sections A) {u v : α} (p : Walk u v) :
38     path A p (s.val u) = s.val v := by
39   induction p with
40   | nil => rfl
41   | cons p e ih =>
42     change edge A e (path A p (s.val u)) = _
43     rw [ih, section_edge A s e]
44 
45 /-- Evaluation at a root is injective when actual paths reach every vertex. -/
46 theorem root_evaluation_injective {r : α} (P : ∀ v, Walk r v) :
47     Function.Injective (fun s : sections A => s.val r) := by
48   intro s t h
49   change s.val r = t.val r at h
50   apply Subtype.ext
51   funext v
52   exact (section_path A s (P v)).symm.trans
53     ((congrArg (path A (P v)) h).trans (section_path A t (P v)))
54 
55 /-- The actual fixed space of the based-loop representation. -/
56 def loopFixed (r : α) : Submodule K (V r) where
57   carrier x := ∀ p : Walk r r, path A p x = x
58   zero_mem' := by intro p; simp
59   add_mem' := by intro x y hx hy p; simp [hx p, hy p]
60   smul_mem' := by intro c x hx p; simp [hx p]
61 
62 /-- A loop-fixed root vector is transported to an edge-compatible global section. -/
63 def extendRoot {r : α} (P : ∀ v, Walk r v) (x : loopFixed A r) : sections A :=
64   ⟨fun v => path A (P v) x.val, by
65     intro u v e
66     have h := congrArg (path A (P v)) (x.property (cycle P e))
67     simpa [cycle, GraphTransport.comp, GraphTransport.cons, GraphTransport.reverse,
68       GraphTransport.edge] using h⟩
69 
70 /-- Global sections are exactly root vectors fixed by all actual loop transports. -/
71 def evaluationEquiv {r : α} (P : ∀ v, Walk r v) (hr : P r = .nil) :
72     sections A ≃ₗ[K] loopFixed A r where
73   toFun s := ⟨s.val r, fun p => section_path A s p⟩
74   invFun x := extendRoot A P x
75   left_inv s := by
76     apply Subtype.ext
77     funext v
78     exact section_path A s (P v)
79   right_inv x := by
80     apply Subtype.ext
81     change path A (P r) x.val = x.val
82     simp [hr]
83   map_add' s t := rfl
84   map_smul' c s := rfl
85 
86 variable (ρ : ∀ v, Representation K G (V v))
87 variable (τ : ∀ v, Representation K G (W v))
88 
89 /-- Coordinatewise action preserves the section space by the actual edge covariance. -/
90 def sectionRepresentation (hA : RepresentationGraph.EdgeEquivariant A ρ) :
91     Representation K G (sections A) where
92   toFun g := {
93     toFun s := ⟨fun v => ρ v g (s.val v), by
94       intro u v e
95       rw [hA e g, s.property e]⟩
96     map_add' s t := by ext v; exact map_add (ρ v g) (s.val v) (t.val v)
97     map_smul' c s := by ext v; exact map_smul (ρ v g) c (s.val v) }
98   map_one' := by ext s v; exact DFunLike.congr_fun (map_one (ρ v)) (s.val v)
99   map_mul' g h := by ext s v; exact DFunLike.congr_fun (map_mul (ρ v) g h) (s.val v)
100 
101 @[simp] theorem sectionRepresentation_apply
102     (hA : RepresentationGraph.EdgeEquivariant A ρ) (g : G) (s : sections A) (v : α) :
103     (sectionRepresentation A ρ hA g s).val v = ρ v g (s.val v) := rfl
104 
105 /-- An edge-compatible gauge induces a genuine invertible map of section spaces. -/
106 def ofGauge (F : ∀ v, V v ≃ₗ[K] W v) (hF : EdgeCompatible A B F) :
107     sections A ≃ₗ[K] sections B where
108   toFun s := ⟨fun v => F v (s.val v), by
109     intro u v e
110     rw [← hF e, s.property e]⟩
111   invFun t := ⟨fun v => (F v).symm (t.val v), by
112     intro u v e
113     apply (F v).injective
114     rw [hF e, LinearEquiv.apply_symm_apply, t.property e,
115       LinearEquiv.apply_symm_apply]⟩
116   left_inv s := by ext v; exact (F v).symm_apply_apply _
117   right_inv t := by ext v; exact (F v).apply_symm_apply _
118   map_add' s t := by ext v; exact map_add (F v) _ _
119   map_smul' c s := by ext v; exact map_smul (F v) c _
120 
121 /-- No numerical proxy: this is a Mathlib representation equivalence of the
122 actual spaces of parallel sections. -/
123 def equivOfGauge (hA : RepresentationGraph.EdgeEquivariant A ρ)
124     (hB : RepresentationGraph.EdgeEquivariant B τ)
125     (F : ∀ v, V v ≃ₗ[K] W v) (hF : EdgeCompatible A B F)
126     (hI : RepresentationGraph.Intertwines ρ τ F) :
127     Representation.Equiv (sectionRepresentation A ρ hA) (sectionRepresentation B τ hB) := by
128   refine Representation.Equiv.mk (ofGauge A B F hF) ?_
129   intro g
130   ext s v
131   exact hI v g (s.val v)
132 
133 /-- Constructed root-path gauge. The tree is derived from connectedness. -/
134 def gluedGauge {r : α} (hc : GraphTree.Connected (α := α)) (U : V r ≃ₗ[K] W r) :=
135   rootGauge A B U (GraphTree.rootPath (GraphTree.ofConnected r hc))
136 
137 /-- A root equivalence and fundamental-cycle tests produce a global equivalence. -/
138 def fromChords {r : α} (hc : GraphTree.Connected (α := α))
139     (hA : RepresentationGraph.EdgeEquivariant A ρ)
140     (hB : RepresentationGraph.EdgeEquivariant B τ)
141     (U : Representation.Equiv (ρ r) (τ r))
142     (hch : ∀ e : GraphTree.Chord (GraphTree.ofConnected r hc),
143       CycleCompatible A B U.toLinearEquiv (GraphTree.rootPath (GraphTree.ofConnected r hc)) e.val) :
144     Representation.Equiv (sectionRepresentation A ρ hA) (sectionRepresentation B τ hB) := by
145   let P := GraphTree.rootPath (GraphTree.ofConnected r hc)
146   apply equivOfGauge A B ρ τ hA hB (rootGauge A B U.toLinearEquiv P)
147   · exact (rootGauge_compatible_iff_chords A B U.toLinearEquiv _).mpr hch
148   · exact RepresentationGraph.rootGauge_intertwines A B ρ τ hA hB U.toLinearEquiv
149       (fun g x => DFunLike.congr_fun (U.toIntertwiningMap.isIntertwining' g) x) P
150 
151 /-- Pointwise description of the constructed map: B(path) U A(path)^(-1). -/
152 theorem fromChords_apply {r : α} (hc : GraphTree.Connected (α := α))
153     (hA : RepresentationGraph.EdgeEquivariant A ρ)
154     (hB : RepresentationGraph.EdgeEquivariant B τ)
155     (U : Representation.Equiv (ρ r) (τ r))
156     (hch : ∀ e : GraphTree.Chord (GraphTree.ofConnected r hc),
157       CycleCompatible A B U.toLinearEquiv (GraphTree.rootPath (GraphTree.ofConnected r hc)) e.val)
158     (s : sections A) (v : α) :
159     (fromChords A B ρ τ hc hA hB U hch s).val v =
160       gluedGauge A B hc U.toLinearEquiv v (s.val v) := rfl
161 
162 /-- The compatible family is unique once the root map is fixed. -/
163 theorem gauge_unique_at_root {r : α} (hc : GraphTree.Connected (α := α))
164     (U : V r ≃ₗ[K] W r) (F : ∀ v, V v ≃ₗ[K] W v)
165     (hF : EdgeCompatible A B F) (hr : F r = U) :
166     F = gluedGauge A B hc U := by
167   rw [GraphGauge.gauge_unique A B F hF (GraphTree.rootPath (GraphTree.ofConnected r hc)), hr]
168   rfl
169 
170 end PaperXI.GluedPacketSections

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: 5bf8047d59226ed80f93c4668b031aedab1df38bd5ee39456a9335f2685372bf

Original source on GitHub

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