Paper III · Lean source

source.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)

verification/release_full/003_KomorebiPaperIII_ReversibleConnections/source.lean506 lines

Original source pathformal/verification/release_full/003_KomorebiPaperIII_ReversibleConnections/source.lean
Skip declarations and read code

Skip source text

1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 
6 import KomorebiPaperIII.Transport
7 import Mathlib.Algebra.BigOperators.Group.Finset.Basic
8 
9 /-!
10 # Reversible connections, gauge covariance, and finite holonomy blocks
11 
12 This module strengthens the minimal homogeneous connection in `Transport` to
13 a family of possibly heterogeneous fibres.  Pair transport is normalized and
14 reverses by inversion, but no cocycle law is included in the structure.
15 
16 All paths and packet resolutions in this file are finite.  The gauge results
17 are purely algebraic conjugation identities; no topology or smooth structure
18 is assumed.
19 -/
20 
21 set_option autoImplicit false
22 
23 namespace Komorebi.PaperIII.Transport
24 
25 open scoped BigOperators
26 
27 universe u v w z
28 
29 /--
30 A normalized reversible pair connection on a family of linear fibres.
31 
32 `transport a b` maps the fibre at `a` to the fibre at `b`.  Normalization and
33 reverse-edge inversion are data, while the cocycle law is deliberately not.
34 -/
35 structure ReversibleConnection
36     (R : Type u) (X : Type v) (F : X → Type w)
37     [CommRing R] [∀ a, AddCommGroup (F a)] [∀ a, Module R (F a)] where
38   transport : ∀ a b, F a ≃ₗ[R] F b
39   transport_self : ∀ a, transport a a = LinearEquiv.refl R (F a)
40   transport_reverse : ∀ a b, transport b a = (transport a b).symm
41 
42 namespace ReversibleConnection
43 
44 variable {R : Type u} {X : Type v} {F : X → Type w}
45 variable [CommRing R] [∀ a, AddCommGroup (F a)] [∀ a, Module R (F a)]
46 variable (C : ReversibleConnection R X F)
47 
48 /-- A gauge is a fibrewise family of linear automorphisms. -/
49 abbrev Gauge := ∀ a, F a ≃ₗ[R] F a
50 
51 /-- The exact pair-cocycle condition at one ordered triple. -/
52 def CocycleAt (a b c : X) : Prop :=
53   (C.transport a b).trans (C.transport b c) = C.transport a c
54 
55 /-- Algebraic flatness is the pair-cocycle condition at every triple. -/
56 def Flat : Prop := ∀ a b c, C.CocycleAt a b c
57 
58 /--
59 The additive cocycle defect from the fibre at `a` to the fibre at `c`.
60 The indices are written in traversal order `a → b → c`.
61 -/
62 def cocycleDefect (a b c : X) : F a →ₗ[R] F c :=
63   (C.transport b c).toLinearMap.comp (C.transport a b).toLinearMap -
64     (C.transport a c).toLinearMap
65 
66 /-- Triangle holonomy based at `a`, traversing `a → b → c → a`. -/
67 def triangleHolonomy (a b c : X) : F a ≃ₗ[R] F a :=
68   ((C.transport a b).trans (C.transport b c)).trans (C.transport c a)
69 
70 /-- The additive triangle obstruction `H - id` on the base fibre. -/
71 def triangleObstruction (a b c : X) : F a →ₗ[R] F a :=
72   (C.triangleHolonomy a b c).toLinearMap - LinearMap.id
73 
74 /-- Vanishing additive defect is exactly the cocycle equation at a triple. -/
75 theorem cocycleDefect_eq_zero_iff_cocycleAt (a b c : X) :
76     C.cocycleDefect a b c = 0 ↔ C.CocycleAt a b c := by
77   constructor
78   · intro h
79     apply LinearEquiv.ext
80     intro x
81     have hx := congrArg (fun L : F a →ₗ[R] F c ↦ L x) h
82     change C.transport b c (C.transport a b x) = C.transport a c x
83     change C.transport b c (C.transport a b x) - C.transport a c x = 0 at hx
84     exact sub_eq_zero.mp hx
85   · intro h
86     ext x
87     have hx := congrArg (fun e : F a ≃ₗ[R] F c ↦ e x) h
88     change C.transport b c (C.transport a b x) - C.transport a c x = 0
89     rw [sub_eq_zero]
90     simpa [CocycleAt] using hx
91 
92 /--
93 Defect--holonomy identity:
94 `H - id = transport(c,a) ∘ Δ`.
95 -/
96 theorem triangleHolonomy_sub_id (a b c : X) :
97     C.triangleObstruction a b c =
98       (C.transport c a).toLinearMap.comp (C.cocycleDefect a b c) := by
99   ext x
100   simp only [triangleObstruction, triangleHolonomy, cocycleDefect,
101     LinearMap.sub_apply, LinearMap.id_apply, LinearMap.comp_apply,
102     LinearEquiv.coe_toLinearMap, LinearEquiv.trans_apply, map_sub]
103   rw [C.transport_reverse a c]
104   simp
105 
106 /-- The triangle obstruction vanishes exactly when the additive defect does. -/
107 theorem triangleObstruction_eq_zero_iff_cocycleDefect_eq_zero (a b c : X) :
108     C.triangleObstruction a b c = 0 ↔ C.cocycleDefect a b c = 0 := by
109   rw [C.triangleHolonomy_sub_id a b c]
110   constructor
111   · intro h
112     ext x
113     apply (C.transport c a).injective
114     have hx := congrArg (fun L : F a →ₗ[R] F a ↦ L x) h
115     simpa using hx
116   · intro h
117     simp [h]
118 
119 /-- `H - id` vanishes exactly when the triangle holonomy is the identity. -/
120 theorem triangleObstruction_eq_zero_iff_triangleHolonomy_eq_refl (a b c : X) :
121     C.triangleObstruction a b c = 0 ↔
122       C.triangleHolonomy a b c = LinearEquiv.refl R (F a) := by
123   constructor
124   · intro h
125     apply LinearEquiv.ext
126     intro x
127     have hx := congrArg (fun L : F a →ₗ[R] F a ↦ L x) h
128     change C.triangleHolonomy a b c x = x
129     change C.triangleHolonomy a b c x - x = 0 at hx
130     exact sub_eq_zero.mp hx
131   · intro h
132     ext x
133     have hx := congrArg (fun e : F a ≃ₗ[R] F a ↦ e x) h
134     change C.triangleHolonomy a b c x - x = 0
135     rw [sub_eq_zero]
136     simpa using hx
137 
138 /-- Additive flatness at a triple is equivalent to identity holonomy. -/
139 theorem cocycleDefect_eq_zero_iff_triangleHolonomy_eq_refl (a b c : X) :
140     C.cocycleDefect a b c = 0 ↔
141       C.triangleHolonomy a b c = LinearEquiv.refl R (F a) := by
142   rw [← C.triangleObstruction_eq_zero_iff_cocycleDefect_eq_zero a b c,
143     C.triangleObstruction_eq_zero_iff_triangleHolonomy_eq_refl]
144 
145 /-- Flatness is equivalent to identity holonomy on every ordered triangle. -/
146 theorem flat_iff_triangleHolonomy_eq_refl :
147     C.Flat ↔ ∀ a b c,
148       C.triangleHolonomy a b c = LinearEquiv.refl R (F a) := by
149   constructor
150   · intro hflat a b c
151     rw [← C.cocycleDefect_eq_zero_iff_triangleHolonomy_eq_refl a b c,
152       C.cocycleDefect_eq_zero_iff_cocycleAt]
153     exact hflat a b c
154   · intro hhol a b c
155     rw [← C.cocycleDefect_eq_zero_iff_cocycleAt,
156       C.cocycleDefect_eq_zero_iff_triangleHolonomy_eq_refl]
157     exact hhol a b c
158 
159 /-! ## Canonical reversible transport from a family of frames -/
160 
161 variable {M : Type z} [AddCommGroup M] [Module R M]
162 
163 /-- Canonical transport from fibre `a` to fibre `b` through the ambient frame. -/
164 def canonicalTransport (frame : ∀ a, F a ≃ₗ[R] M) (a b : X) :
165     F a ≃ₗ[R] F b :=
166   (frame a).trans (frame b).symm
167 
168 /--
169 The canonical reversible connection induced by fibre-to-ambient frames.
170 -/
171 def canonicalConnection (frame : ∀ a, F a ≃ₗ[R] M) :
172     ReversibleConnection R X F where
173   transport := canonicalTransport frame
174   transport_self a := by
175     apply LinearEquiv.ext
176     intro x
177     simp [canonicalTransport]
178   transport_reverse _ _ := rfl
179 
180 /-- Canonical frame transport satisfies the pair-cocycle law. -/
181 theorem canonicalConnection_flat (frame : ∀ a, F a ≃ₗ[R] M) :
182     (canonicalConnection frame).Flat := by
183   intro a b c
184   apply LinearEquiv.ext
185   intro x
186   simp [canonicalConnection, canonicalTransport]
187 
188 /-- Canonical frame transport has zero additive connection defect. -/
189 theorem canonicalTransport_zero_connectionDefect
190     (frame : ∀ a, F a ≃ₗ[R] M) (a b c : X) :
191     (canonicalConnection frame).cocycleDefect a b c = 0 := by
192   rw [cocycleDefect_eq_zero_iff_cocycleAt]
193   exact canonicalConnection_flat frame a b c
194 
195 /-- Canonical frame transport has identity triangle holonomy. -/
196 theorem canonicalTransport_triangleHolonomy_eq_refl
197     (frame : ∀ a, F a ≃ₗ[R] M) (a b c : X) :
198     (canonicalConnection frame).triangleHolonomy a b c =
199       LinearEquiv.refl R (F a) := by
200   rw [← cocycleDefect_eq_zero_iff_triangleHolonomy_eq_refl]
201   exact canonicalTransport_zero_connectionDefect frame a b c
202 
203 /--
204 The fibrewise gauge comparing a flat connection with canonical transport,
205 based at a chosen vertex `o`.
206 -/
207 def flatGauge (frame : ∀ a, F a ≃ₗ[R] M) (o : X) :
208     Gauge (R := R) (F := F) :=
209   fun a ↦ (canonicalTransport frame a o).trans (C.transport o a)
210 
211 /--
212 Every flat normalized reversible pair connection is a gauge transform of the
213 canonical connection induced by any family of ambient frames.
214 -/
215 theorem flat_isGaugeOfCanonical
216     (hflat : C.Flat) (frame : ∀ a, F a ≃ₗ[R] M) (o a b : X) :
217     C.transport a b =
218       ((C.flatGauge frame o a).symm.trans
219         ((canonicalConnection frame).transport a b)).trans
220           (C.flatGauge frame o b) := by
221   apply LinearEquiv.ext
222   intro x
223   have hg : (C.flatGauge frame o a).symm =
224       (C.transport o a).symm.trans (canonicalTransport frame a o).symm := rfl
225   rw [hg]
226   have hcanonical_symm (p q : X) :
227       (canonicalTransport frame p q).symm = canonicalTransport frame q p := rfl
228   rw [hcanonical_symm]
229   simp only [flatGauge, canonicalConnection, LinearEquiv.trans_apply]
230   rw [show (C.transport o a).symm = C.transport a o by
231     rw [C.transport_reverse o a]]
232   simp only [canonicalTransport, LinearEquiv.trans_apply,
233     LinearEquiv.symm_apply_apply, LinearEquiv.apply_symm_apply]
234   have hao : (C.transport a o).trans (C.transport o b) = C.transport a b :=
235     hflat a o b
236   exact (congrArg (fun e : F a ≃ₗ[R] F b ↦ e x) hao).symm
237 
238 /-! ## Finite path transport -/
239 
240 /-- Transport along a finite list of successive vertices. -/
241 def pathTransport (C : ReversibleConnection R X F) (start : X) :
242     (vertices : List X) → F start ≃ₗ[R] F (pathEndpoint start vertices)
243   | [] => LinearEquiv.refl R (F start)
244   | next :: rest =>
245       (C.transport start next).trans (pathTransport C next rest)
246 
247 /-- A finite path in a flat pair connection depends only on its endpoints. -/
248 theorem pathTransport_eq_direct_of_flat
249     (hflat : C.Flat) (start : X) (vertices : List X) :
250     C.pathTransport start vertices =
251       C.transport start (pathEndpoint start vertices) := by
252   induction vertices generalizing start with
253   | nil =>
254       change LinearEquiv.refl R (F start) = C.transport start start
255       exact (C.transport_self start).symm
256   | cons next rest ih =>
257       simp only [pathTransport, pathEndpoint]
258       rw [ih (start := next)]
259       exact hflat start next (pathEndpoint next rest)
260 
261 /-- A finite vertex path indexed by its source and target. -/
262 inductive VertexPath (X : Type v) : X → X → Type v where
263   | nil (a : X) : VertexPath X a a
264   | cons (a b c : X) (rest : VertexPath X b c) : VertexPath X a c
265 
266 /-- Transport along a source-and-target-indexed finite path. -/
267 def indexedPathTransport :
268     {a b : X} → VertexPath X a b → F a ≃ₗ[R] F b
269   | _, _, .nil _ => LinearEquiv.refl R _
270   | _, _, .cons a b _ rest =>
271       (C.transport a b).trans (indexedPathTransport rest)
272 
273 /-- Indexed finite path transport in a flat connection is endpoint-only. -/
274 theorem indexedPathTransport_eq_direct_of_flat (hflat : C.Flat) :
275     ∀ {a b : X} (path : VertexPath X a b),
276       indexedPathTransport C path = C.transport a b := by
277   intro a b path
278   induction path with
279   | nil a => exact (C.transport_self a).symm
280   | cons a b c rest ih =>
281       simp only [indexedPathTransport]
282       rw [ih]
283       exact hflat a b c
284 
285 /-- Every indexed finite loop in a flat connection has identity holonomy. -/
286 theorem indexedLoopTransport_eq_refl_of_flat
287     (hflat : C.Flat) {a : X} (path : VertexPath X a a) :
288     indexedPathTransport C path = LinearEquiv.refl R (F a) := by
289   rw [indexedPathTransport_eq_direct_of_flat C hflat path, C.transport_self]
290 
291 /-! ## Gauge action and covariance -/
292 
293 /-- Gauge action: `Γᴳ(a,b) = G(b) ∘ Γ(a,b) ∘ G(a)⁻¹`. -/
294 def gauge (G : Gauge (R := R) (F := F)) : ReversibleConnection R X F where
295   transport a b := ((G a).symm.trans (C.transport a b)).trans (G b)
296   transport_self a := by
297     apply LinearEquiv.ext
298     intro x
299     rw [C.transport_self]
300     simp
301   transport_reverse a b := by
302     rw [C.transport_reverse a b]
303     apply LinearEquiv.ext
304     intro x
305     simp
306 
307 /-- The additive cocycle defect is gauge covariant. -/
308 theorem gauge_cocycleDefect
309     (G : Gauge (R := R) (F := F)) (a b c : X) :
310     (C.gauge G).cocycleDefect a b c =
311       (G c).toLinearMap.comp
312         ((C.cocycleDefect a b c).comp (G a).symm.toLinearMap) := by
313   ext x
314   simp [gauge, cocycleDefect]
315 
316 /-- Triangle holonomy transforms by conjugation at its base vertex. -/
317 theorem gauge_triangleHolonomy
318     (G : Gauge (R := R) (F := F)) (a b c : X) :
319     (C.gauge G).triangleHolonomy a b c =
320       ((G a).symm.trans (C.triangleHolonomy a b c)).trans (G a) := by
321   apply LinearEquiv.ext
322   intro x
323   simp [gauge, triangleHolonomy]
324 
325 /-- The cocycle equation at a fixed triple is gauge invariant. -/
326 theorem gauge_cocycleAt_iff
327     (G : Gauge (R := R) (F := F)) (a b c : X) :
328     (C.gauge G).CocycleAt a b c ↔ C.CocycleAt a b c := by
329   constructor
330   · intro h
331     apply LinearEquiv.ext
332     intro x
333     have hx := congrArg
334       (fun e : F a ≃ₗ[R] F c ↦ (G c).symm (e (G a x))) h
335     simpa [CocycleAt, gauge] using hx
336   · intro h
337     apply LinearEquiv.ext
338     intro x
339     have hx := congrArg
340       (fun e : F a ≃ₗ[R] F c ↦ G c (e ((G a).symm x))) h
341     simpa [CocycleAt, gauge] using hx
342 
343 /-- Algebraic flatness is gauge invariant. -/
344 theorem gauge_flat_iff (G : Gauge (R := R) (F := F)) :
345     (C.gauge G).Flat ↔ C.Flat := by
346   constructor
347   · intro hflat a b c
348     exact (C.gauge_cocycleAt_iff G a b c).mp (hflat a b c)
349   · intro hflat a b c
350     exact (C.gauge_cocycleAt_iff G a b c).mpr (hflat a b c)
351 
352 /-- Identity/nonidentity of a fixed triangle holonomy is gauge invariant. -/
353 theorem gauge_triangleHolonomy_eq_refl_iff
354     (G : Gauge (R := R) (F := F)) (a b c : X) :
355     (C.gauge G).triangleHolonomy a b c = LinearEquiv.refl R (F a) ↔
356       C.triangleHolonomy a b c = LinearEquiv.refl R (F a) := by
357   rw [← (C.gauge G).cocycleDefect_eq_zero_iff_triangleHolonomy_eq_refl,
358     ← C.cocycleDefect_eq_zero_iff_triangleHolonomy_eq_refl,
359     (C.gauge G).cocycleDefect_eq_zero_iff_cocycleAt,
360     C.cocycleDefect_eq_zero_iff_cocycleAt,
361     C.gauge_cocycleAt_iff]
362 
363 end ReversibleConnection
364 end Komorebi.PaperIII.Transport
365 
366 namespace Komorebi.PaperIII.HolonomyBlocks
367 
368 open scoped BigOperators
369 
370 universe u v w
371 
372 variable {R : Type u} {M : Type v} {I : Type w}
373 variable [CommRing R] [AddCommGroup M] [Module R M]
374 
375 /--
376 A finite complete family of idempotent packet projectors.  Orthogonality is
377 not needed for exact two-sided reconstruction, so it is not assumed here.
378 -/
379 structure PacketResolution (R : Type u) (M : Type v) (I : Type w)
380     [CommRing R] [AddCommGroup M] [Module R M] [Fintype I] where
381   projector : I → M →ₗ[R] M
382   complete : ∑ i, projector i = LinearMap.id
383   idempotent : ∀ i, (projector i).comp (projector i) = projector i
384 
385 namespace PacketResolution
386 
387 variable [Fintype I]
388 variable (P : PacketResolution R M I)
389 
390 /-- The packet block from input packet `nu` to output packet `mu`. -/
391 def block (A : M →ₗ[R] M) (mu nu : I) : M →ₗ[R] M :=
392   (P.projector mu).comp (A.comp (P.projector nu))
393 
394 /-- A complete finite packet family reconstructs every linear map by blocks. -/
395 theorem sum_blocks (A : M →ₗ[R] M) :
396     ∑ mu, ∑ nu, P.block A mu nu = A := by
397   have hcomplete (x : M) : ∑ i, P.projector i x = x := by
398     have hx := congrArg (fun L : M →ₗ[R] M ↦ L x) P.complete
399     simpa using hx
400   ext x
401   simp only [block, LinearMap.sum_apply, LinearMap.comp_apply]
402   calc
403     (∑ mu, ∑ nu, P.projector mu (A (P.projector nu x))) =
404         ∑ mu, P.projector mu (A (∑ nu, P.projector nu x)) := by
405           apply Finset.sum_congr rfl
406           intro mu _
407           calc
408             (∑ nu, P.projector mu (A (P.projector nu x))) =
409                 P.projector mu (∑ nu, A (P.projector nu x)) := by
410                   exact (map_sum (P.projector mu)
411                     (fun nu ↦ A (P.projector nu x)) Finset.univ).symm
412             _ = P.projector mu (A (∑ nu, P.projector nu x)) := by
413                   congr 1
414                   exact (map_sum A
415                     (fun nu ↦ P.projector nu x) Finset.univ).symm
416     _ = ∑ mu, P.projector mu (A x) := by rw [hcomplete x]
417     _ = A x := hcomplete (A x)
418 
419 /-- All finite packet blocks vanish exactly when the total map vanishes. -/
420 theorem blocks_zero_iff (A : M →ₗ[R] M) :
421     (∀ mu nu, P.block A mu nu = 0) ↔ A = 0 := by
422   constructor
423   · intro h
424     rw [← P.sum_blocks A]
425     simp [h]
426   · intro h mu nu
427     simp [block, h]
428 
429 /-- A nonzero block supplies a vector supported in its input packet. -/
430 theorem exists_packetWitness_of_block_ne_zero
431     (A : M →ₗ[R] M) (mu nu : I) (hne : P.block A mu nu ≠ 0) :
432     ∃ x, P.projector nu x = x ∧ P.projector mu (A x) ≠ 0 := by
433   classical
434   have hexists : ∃ y, P.block A mu nu y ≠ 0 := by
435     by_contra h
436     apply hne
437     ext y
438     by_contra hy
439     exact h ⟨y, hy⟩
440   rcases hexists with ⟨y, hy⟩
441   refine ⟨P.projector nu y, ?_, ?_⟩
442   · have hid := congrArg (fun L : M →ₗ[R] M ↦ L y) (P.idempotent nu)
443     simpa using hid
444   · simpa [block] using hy
445 
446 end PacketResolution
447 
448 variable {X : Type w} {F : X → Type v}
449 variable [∀ a, AddCommGroup (F a)] [∀ a, Module R (F a)]
450 
451 /-- Exact double-sum reconstruction of a fixed triangle obstruction. -/
452 theorem obstruction_sum_blocks
453     (C : Transport.ReversibleConnection R X F)
454     {I : Type w} [Fintype I] (a b c : X)
455     (P : PacketResolution R (F a) I) :
456     ∑ mu, ∑ nu, P.block (C.triangleObstruction a b c) mu nu =
457       C.triangleObstruction a b c :=
458   P.sum_blocks (C.triangleObstruction a b c)
459 
460 /--
461 For a fixed triangle, all holonomy-obstruction blocks vanish exactly when the
462 additive cocycle defect vanishes.
463 -/
464 theorem obstructionBlocks_zero_iff
465     (C : Transport.ReversibleConnection R X F)
466     {I : Type w} [Fintype I] (a b c : X)
467     (P : PacketResolution R (F a) I) :
468     (∀ mu nu,
469       P.block (C.triangleObstruction a b c) mu nu = 0) ↔
470       C.cocycleDefect a b c = 0 := by
471   rw [P.blocks_zero_iff,
472     C.triangleObstruction_eq_zero_iff_cocycleDefect_eq_zero]
473 
474 /--
475 The four vanishing criteria in the obstruction-packet theorem are mutually
476 equivalent: zero defect, identity holonomy, zero total obstruction, and zero
477 of every finite packet block.
478 -/
479 theorem obstructionDetection_equivalences
480     (C : Transport.ReversibleConnection R X F)
481     {I : Type w} [Fintype I] (a b c : X)
482     (P : PacketResolution R (F a) I) :
483     (C.cocycleDefect a b c = 0 ↔
484       C.triangleHolonomy a b c = LinearEquiv.refl R (F a)) ∧
485     (C.triangleHolonomy a b c = LinearEquiv.refl R (F a) ↔
486       C.triangleObstruction a b c = 0) ∧
487     (C.triangleObstruction a b c = 0 ↔
488       ∀ mu nu, P.block (C.triangleObstruction a b c) mu nu = 0) := by
489   refine ⟨C.cocycleDefect_eq_zero_iff_triangleHolonomy_eq_refl a b c, ?_⟩
490   refine ⟨(C.triangleObstruction_eq_zero_iff_triangleHolonomy_eq_refl
491     a b c).symm, ?_⟩
492   exact (P.blocks_zero_iff (C.triangleObstruction a b c)).symm
493 
494 /-- A nonzero holonomy block gives an exact packet-supported witness. -/
495 theorem exists_packetWitness_of_obstructionBlock_ne_zero
496     (C : Transport.ReversibleConnection R X F)
497     {I : Type w} [Fintype I] (a b c : X)
498     (P : PacketResolution R (F a) I) (mu nu : I)
499     (hne : P.block (C.triangleObstruction a b c) mu nu ≠ 0) :
500     ∃ x,
501       P.projector nu x = x ∧
502       P.projector mu (C.triangleObstruction a b c x) ≠ 0 :=
503   P.exists_packetWitness_of_block_ne_zero
504     (C.triangleObstruction a b c) mu nu hne
505 
506 end Komorebi.PaperIII.HolonomyBlocks

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: 73c519dc279e7a782f32582779880c34c33468908fb3eed2efa59716b3666a1a

Original source on GitHub

Back to Paper III: Typed Transfer, Nonlinear Packets, and Obstruction Theory