Paper XI · Lean source

GraphResidual.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/GraphResidual.lean274 lines

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

Skip source text

1 import PaperXI.ContinuousHolonomyResidual
2 import PaperXI.GraphTransport
3 import PaperXI.GraphTree
4 import Mathlib.Analysis.Normed.Module.FiniteDimension
5 
6 /-! Paper XI, 14.6 and 14.7 on the actual rooted graph paths. Finite dimensionality
7 makes the given edge equivalences and their actual inverses continuous for the
8 specified norms. Parallel edges and self-loops keep their identities. -/
9 set_option autoImplicit false
10 noncomputable section
11 
12 namespace PaperXI.GraphResidual
13 
14 open Quiver GraphTree
15 
16 variable {α : Type*} [Quiver α]
17 variable {V W : α → Type*}
18 variable [∀ u, NormedAddCommGroup (V u)] [∀ u, NormedSpace ℂ (V u)]
19 variable [∀ u, FiniteDimensional ℂ (V u)]
20 variable [∀ u, NormedAddCommGroup (W u)] [∀ u, NormedSpace ℂ (W u)]
21 variable [∀ u, FiniteDimensional ℂ (W u)]
22 
23 /-- The bounded transport is exactly the algebraic transport on the given walk. -/
24 def pathL (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
25     {u v : α} (p : GraphTransport.Walk u v) : V u ≃L[ℂ] V v :=
26   (GraphTransport.path A p).toContinuousLinearEquiv
27 
28 @[simp] theorem pathL_toLinearEquiv
29     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
30     {u v : α} (p : GraphTransport.Walk u v) :
31     (pathL A p).toLinearEquiv = GraphTransport.path A p := rfl
32 
33 @[simp] theorem pathL_apply
34     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
35     {u v : α} (p : GraphTransport.Walk u v) (x : V u) :
36     pathL A p x = GraphTransport.path A p x := rfl
37 
38 @[simp] theorem pathL_symm_apply
39     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
40     {u v : α} (p : GraphTransport.Walk u v) (x : V v) :
41     (pathL A p).symm x = (GraphTransport.path A p).symm x := rfl
42 
43 @[simp] theorem pathL_reverse
44     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
45     {u v : α} (p : GraphTransport.Walk u v) :
46     pathL A p.reverse = (pathL A p).symm := by
47   ext x
48   exact LinearEquiv.congr_fun (GraphTransport.reverse A p) x
49 
50 @[simp] theorem pathL_comp
51     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
52     {u v w : α} (p : GraphTransport.Walk u v) (q : GraphTransport.Walk v w) :
53     pathL A (p.comp q) = (pathL A p).trans (pathL A q) := by
54   ext x
55   exact LinearEquiv.congr_fun (GraphTransport.comp A p q) x
56 
57 variable {r : α}
58 
59 /-- The continuous vertex gauge is constructed from the actual tree paths. -/
60 def gauge (T : GraphTree.Rooted α r)
61     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
62     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
63     (U : V r ≃ₗ[ℂ] W r) (v : α) : V v ≃L[ℂ] W v :=
64   ContinuousHolonomyResidual.transported U.toContinuousLinearEquiv
65     (pathL A (GraphTree.rootPath T v)) (pathL B (GraphTree.rootPath T v))
66 
67 @[simp] theorem gauge_toLinearEquiv (T : GraphTree.Rooted α r)
68     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
69     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
70     (U : V r ≃ₗ[ℂ] W r) (v : α) :
71     (gauge T A B U v).toLinearEquiv = HolonomyResidual.transported U
72       (GraphTransport.path A (GraphTree.rootPath T v)) (GraphTransport.path B (GraphTree.rootPath T v)) := rfl
73 
74 @[simp] theorem gauge_apply (T : GraphTree.Rooted α r)
75     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
76     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
77     (U : V r ≃ₗ[ℂ] W r) (v : α) (x : V v) :
78     gauge T A B U v x = GraphTransport.path B (GraphTree.rootPath T v)
79       (U ((GraphTransport.path A (GraphTree.rootPath T v)).symm x)) := rfl
80 
81 @[simp] theorem gauge_root (T : GraphTree.Rooted α r)
82     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
83     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
84     (U : V r ≃ₗ[ℂ] W r) : gauge T A B U r = U.toContinuousLinearEquiv := by
85   ext x
86   simp only [gauge_apply, GraphTree.rootPath_root]
87   rfl
88 
89 /-- The constructed gauge satisfies the selected tree-edge equation. -/
90 theorem gauge_parent (T : GraphTree.Rooted α r)
91     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
92     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
93     (U : V r ≃ₗ[ℂ] W r) (a : {a : α // a ≠ r}) (x : V (T.parent a)) :
94     gauge T A B U a.val (GraphTransport.edge A (T.parentEdge a) x) =
95       GraphTransport.edge B (T.parentEdge a) (gauge T A B U (T.parent a) x) := by
96   simp only [gauge_apply]
97   rw [← GraphTree.rootPath_parent T a]
98   change GraphTransport.edge B (T.parentEdge a)
99     (GraphTransport.path B (GraphTree.rootPath T (T.parent a))
100       (U ((GraphTransport.path A (GraphTree.rootPath T (T.parent a))).symm
101         ((GraphTransport.edge A (T.parentEdge a)).symm
102           (GraphTransport.edge A (T.parentEdge a) x))))) = _
103   rw [LinearEquiv.symm_apply_apply]
104 
105 /-- The literal residual of the constructed gauges and original edge maps. -/
106 def edgeResidual (T : GraphTree.Rooted α r)
107     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
108     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
109     (U : V r ≃ₗ[ℂ] W r) {u v : α} (e : u ⟶ v) : V u →L[ℂ] W v :=
110   (gauge T A B U v).toContinuousLinearMap.comp
111       (A e).toContinuousLinearEquiv.toContinuousLinearMap -
112     (B e).toContinuousLinearEquiv.toContinuousLinearMap.comp
113       (gauge T A B U u).toContinuousLinearMap
114 
115 /-- The defect uses the actual tree transports and the actual edge. -/
116 def cycleDefect (T : GraphTree.Rooted α r)
117     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
118     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
119     (U : V r ≃ₗ[ℂ] W r) {u v : α} (e : u ⟶ v) : V r →L[ℂ] W r :=
120   ContinuousHolonomyResidual.cycleDefect U.toContinuousLinearEquiv
121     (pathL A (GraphTree.rootPath T u)) (pathL A (GraphTree.rootPath T v))
122     (pathL B (GraphTree.rootPath T u)) (pathL B (GraphTree.rootPath T v))
123     (A e).toContinuousLinearEquiv (B e).toContinuousLinearEquiv
124 
125 theorem cycleDefect_toLinearMap (T : GraphTree.Rooted α r)
126     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
127     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
128     (U : V r ≃ₗ[ℂ] W r) {u v : α} (e : u ⟶ v) :
129     (cycleDefect T A B U e).toLinearMap = HolonomyResidual.cycleDefect U
130       (GraphTransport.path A (GraphTree.rootPath T u)) (GraphTransport.path A (GraphTree.rootPath T v))
131       (GraphTransport.path B (GraphTree.rootPath T u)) (GraphTransport.path B (GraphTree.rootPath T v))
132       (A e) (B e) := rfl
133 
134 theorem edgeResidual_toLinearMap (T : GraphTree.Rooted α r)
135     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
136     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
137     (U : V r ≃ₗ[ℂ] W r) {u v : α} (e : u ⟶ v) :
138     (edgeResidual T A B U e).toLinearMap = HolonomyResidual.edgeResidual U
139       (GraphTransport.path A (GraphTree.rootPath T u)) (GraphTransport.path A (GraphTree.rootPath T v))
140       (GraphTransport.path B (GraphTree.rootPath T u)) (GraphTransport.path B (GraphTree.rootPath T v))
141       (A e) (B e) := rfl
142 
143 /-- The defect compares the transports on the literal based fundamental loop. -/
144 theorem cycleDefect_loop (T : GraphTree.Rooted α r)
145     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
146     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
147     (U : V r ≃ₗ[ℂ] W r) {u v : α} (e : u ⟶ v) :
148     (cycleDefect T A B U e).toLinearMap =
149       U.toLinearMap.comp (GraphTransport.path A
150         (((GraphTree.rootPath T u).cons (Sum.inl e)).comp (GraphTree.rootPath T v).reverse)).toLinearMap -
151       (GraphTransport.path B
152         (((GraphTree.rootPath T u).cons (Sum.inl e)).comp (GraphTree.rootPath T v).reverse)).toLinearMap.comp
153           U.toLinearMap := by
154   rw (config := { transparency := .all })
155     [GraphTransport.comp A, GraphTransport.comp B,
156       GraphTransport.reverse A, GraphTransport.reverse B,
157       GraphTransport.cons A, GraphTransport.cons B]
158   ext x
159   simp [cycleDefect, ContinuousHolonomyResidual.cycleDefect]
160 
161 /-- Exact graph identity, in particular valid for every non-tree edge. -/
162 theorem residual_factorization (T : GraphTree.Rooted α r)
163     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
164     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
165     (U : V r ≃ₗ[ℂ] W r) {u v : α} (e : u ⟶ v) :
166     edgeResidual T A B U e = (pathL B (GraphTree.rootPath T v)).toContinuousLinearMap.comp
167       ((cycleDefect T A B U e).comp (pathL A (GraphTree.rootPath T u)).symm.toContinuousLinearMap) :=
168   ContinuousHolonomyResidual.residual_factorization U.toContinuousLinearEquiv
169     (pathL A (GraphTree.rootPath T u)) (pathL A (GraphTree.rootPath T v))
170     (pathL B (GraphTree.rootPath T u)) (pathL B (GraphTree.rootPath T v))
171     (A e).toContinuousLinearEquiv (B e).toContinuousLinearEquiv
172 
173 theorem residual_zero_iff (T : GraphTree.Rooted α r)
174     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
175     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
176     (U : V r ≃ₗ[ℂ] W r) {u v : α} (e : u ⟶ v) :
177     edgeResidual T A B U e = 0 ↔ cycleDefect T A B U e = 0 :=
178   ContinuousHolonomyResidual.residual_zero_iff U.toContinuousLinearEquiv
179     (pathL A (GraphTree.rootPath T u)) (pathL A (GraphTree.rootPath T v))
180     (pathL B (GraphTree.rootPath T u)) (pathL B (GraphTree.rootPath T v))
181     (A e).toContinuousLinearEquiv (B e).toContinuousLinearEquiv
182 
183 /-- The precise bound has only the two path conditioning factors. -/
184 theorem residual_norm_bound (T : GraphTree.Rooted α r)
185     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
186     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
187     (U : V r ≃ₗ[ℂ] W r) {u v : α} (e : u ⟶ v) :
188     ‖edgeResidual T A B U e‖ ≤
189       ‖(pathL B (GraphTree.rootPath T v)).toContinuousLinearMap‖ * ‖cycleDefect T A B U e‖ *
190         ‖(pathL A (GraphTree.rootPath T u)).symm.toContinuousLinearMap‖ :=
191   ContinuousHolonomyResidual.residual_norm_bound U.toContinuousLinearEquiv
192     (pathL A (GraphTree.rootPath T u)) (pathL A (GraphTree.rootPath T v))
193     (pathL B (GraphTree.rootPath T u)) (pathL B (GraphTree.rootPath T v))
194     (A e).toContinuousLinearEquiv (B e).toContinuousLinearEquiv
195 
196 theorem uniform_bound (T : GraphTree.Rooted α r)
197     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
198     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
199     (U : V r ≃ₗ[ℂ] W r) (C_B ε C_A : ℝ)
200     (hB : ∀ v, ‖(pathL B (GraphTree.rootPath T v)).toContinuousLinearMap‖ ≤ C_B)
201     (hD : ∀ {u v : α} (e : u ⟶ v), ‖cycleDefect T A B U e‖ ≤ ε)
202     (hA : ∀ u, ‖(pathL A (GraphTree.rootPath T u)).symm.toContinuousLinearMap‖ ≤ C_A)
203     {u v : α} (e : u ⟶ v) :
204     ‖edgeResidual T A B U e‖ ≤ C_B * ε * C_A :=
205   ContinuousHolonomyResidual.uniform_bound U.toContinuousLinearEquiv
206     (pathL A (GraphTree.rootPath T u)) (pathL A (GraphTree.rootPath T v))
207     (pathL B (GraphTree.rootPath T u)) (pathL B (GraphTree.rootPath T v))
208     (A e).toContinuousLinearEquiv (B e).toContinuousLinearEquiv
209     C_B ε C_A (hB v) (hD e) (hA u)
210 
211 /-- Uniform control is a bound on the mixed factor, with both actual norms. -/
212 theorem uniform_product_bound (T : GraphTree.Rooted α r)
213     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
214     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
215     (U : V r ≃ₗ[ℂ] W r) (C ε : ℝ)
216     (hC : ∀ {u v : α} (_e : u ⟶ v),
217       ‖(pathL B (GraphTree.rootPath T v)).toContinuousLinearMap‖ *
218         ‖(pathL A (GraphTree.rootPath T u)).symm.toContinuousLinearMap‖ ≤ C)
219     (hD : ∀ {u v : α} (e : u ⟶ v), ‖cycleDefect T A B U e‖ ≤ ε)
220     {u v : α} (e : u ⟶ v) : ‖edgeResidual T A B U e‖ ≤ C * ε :=
221   ContinuousHolonomyResidual.product_conditioning_bound U.toContinuousLinearEquiv
222     (pathL A (GraphTree.rootPath T u)) (pathL A (GraphTree.rootPath T v))
223     (pathL B (GraphTree.rootPath T u)) (pathL B (GraphTree.rootPath T v))
224     (A e).toContinuousLinearEquiv (B e).toContinuousLinearEquiv C ε (hC e) (hD e)
225 
226 /-- Only the tested chords require defect bounds. Tree-edge errors are not
227 included as hypotheses. -/
228 theorem uniform_chord_bound (T : GraphTree.Rooted α r)
229     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
230     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
231     (U : V r ≃ₗ[ℂ] W r) (C_B ε C_A : ℝ)
232     (hB : ∀ v, ‖(pathL B (GraphTree.rootPath T v)).toContinuousLinearMap‖ ≤ C_B)
233     (hD : ∀ e : GraphTree.Chord T, ‖cycleDefect T A B U e.val.2.2‖ ≤ ε)
234     (hA : ∀ u, ‖(pathL A (GraphTree.rootPath T u)).symm.toContinuousLinearMap‖ ≤ C_A)
235     (e : GraphTree.Chord T) :
236     ‖edgeResidual T A B U e.val.2.2‖ ≤ C_B * ε * C_A :=
237   ContinuousHolonomyResidual.uniform_bound U.toContinuousLinearEquiv
238     (pathL A (GraphTree.rootPath T e.val.1))
239     (pathL A (GraphTree.rootPath T e.val.2.1))
240     (pathL B (GraphTree.rootPath T e.val.1))
241     (pathL B (GraphTree.rootPath T e.val.2.1))
242     (A e.val.2.2).toContinuousLinearEquiv (B e.val.2.2).toContinuousLinearEquiv
243     C_B ε C_A (hB e.val.2.1) (hD e) (hA e.val.1)
244 
245 /-- Chord-only uniform control using the exact mixed path factor. -/
246 theorem uniform_chord_product_bound (T : GraphTree.Rooted α r)
247     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
248     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
249     (U : V r ≃ₗ[ℂ] W r) (C ε : ℝ)
250     (hC : ∀ e : GraphTree.Chord T,
251       ‖(pathL B (GraphTree.rootPath T e.val.2.1)).toContinuousLinearMap‖ *
252         ‖(pathL A (GraphTree.rootPath T e.val.1)).symm.toContinuousLinearMap‖ ≤ C)
253     (hD : ∀ e : GraphTree.Chord T, ‖cycleDefect T A B U e.val.2.2‖ ≤ ε)
254     (e : GraphTree.Chord T) : ‖edgeResidual T A B U e.val.2.2‖ ≤ C * ε :=
255   ContinuousHolonomyResidual.product_conditioning_bound U.toContinuousLinearEquiv
256     (pathL A (GraphTree.rootPath T e.val.1))
257     (pathL A (GraphTree.rootPath T e.val.2.1))
258     (pathL B (GraphTree.rootPath T e.val.1))
259     (pathL B (GraphTree.rootPath T e.val.2.1))
260     (A e.val.2.2).toContinuousLinearEquiv (B e.val.2.2).toContinuousLinearEquiv
261     C ε (hC e) (hD e)
262 
263 /-- Connectedness supplies the tree used in the quantitative statement. -/
264 theorem connected_residual_bound (hc : GraphTree.Connected (α := α))
265     (A : ∀ {u v : α}, (u ⟶ v) → (V u ≃ₗ[ℂ] V v))
266     (B : ∀ {u v : α}, (u ⟶ v) → (W u ≃ₗ[ℂ] W v))
267     (U : V r ≃ₗ[ℂ] W r) {u v : α} (e : u ⟶ v) :
268     let T := GraphTree.ofConnected r hc
269     ‖edgeResidual T A B U e‖ ≤
270       ‖(pathL B (GraphTree.rootPath T v)).toContinuousLinearMap‖ * ‖cycleDefect T A B U e‖ *
271         ‖(pathL A (GraphTree.rootPath T u)).symm.toContinuousLinearMap‖ :=
272   residual_norm_bound (GraphTree.ofConnected r hc) A B U e
273 
274 end PaperXI.GraphResidual

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: ffc35ff3cd92cf45144e94c501a36af8567e4bb7531e9dc21eb81401385adbf8

Original source on GitHub

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