Paper I · Lean source
GraphSourceBoundary.lean
Declared contract recorded Coverage and evidence
The cited release explicitly reports completion of its registered formal contract, under its exact hypotheses.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
Local imports (1)
PaperIRelease/GraphSourceBoundary.lean52 lines
Original source path
formal/current/PaperIRelease/GraphSourceBoundary.leanSkip declarations and read code
1 import PaperIRelease.GraphSourceProjection
2
3 set_option autoImplicit false
4
5 namespace Komorebi.PaperIRelease.FiniteDigraph
6
7 universe u
8 variable {I : Type u}
9
10 /-- With no edges each vertex is a source SCC. -/
11 theorem empty_graph_source_boundary (a : I) :
12 Source (fun _ _ : I => False) (component (fun _ _ : I => False) a) := by
13 apply (source_vertex_iff _ _).mpr
14 intro b hba
15 rcases hba.cases_head with h | ⟨c, hbc, _⟩
16 · subst b; exact .refl
17 · exact hbc.elim
18
19 def oneArrow (a b : Bool) : Prop := a = false ∧ b = true
20
21 theorem oneArrow_no_reverse : ¬ Reach oneArrow true false := by
22 intro h
23 rcases h.cases_tail with h | ⟨c, _, hc⟩
24 · cases h
25 · cases hc.2
26
27 /-- In the two-vertex one-arrow graph the tail is a source. -/
28 theorem oneArrow_source_boundary : Source oneArrow (component oneArrow false) := by
29 apply (source_vertex_iff _ _).mpr
30 intro b hb
31 cases b
32 · exact .refl
33 · exact (oneArrow_no_reverse hb).elim
34
35 /-- The arrow head is not a source, and cannot be confused with its tail SCC. -/
36 theorem oneArrow_not_source_boundary : ¬ Source oneArrow (component oneArrow true) := by
37 intro h
38 exact oneArrow_no_reverse ((source_vertex_iff _ _).mp h false (.single ⟨rfl, rfl⟩))
39
40 theorem oneArrow_components_distinct : component oneArrow false ≠ component oneArrow true := by
41 intro h
42 exact oneArrow_no_reverse ((component_eq_iff _ _ _).mp h).2
43
44 /-- The two-vertex directed cycle contracts to one strongly connected component. -/
45 theorem twoCycle_single_component_boundary (a b : Bool) :
46 component (fun x y : Bool => x ≠ y) a = component (fun x y : Bool => x ≠ y) b := by
47 apply (component_eq_iff _ _ _).mpr
48 by_cases h : a = b
49 · subst b; exact ⟨.refl, .refl⟩
50 · exact ⟨.single h, .single (fun hba => h hba.symm)⟩
51
52 end Komorebi.PaperIRelease.FiniteDigraph
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: 44576b028d18ef5063daa591bbce50ed3b89d1c3cbc12460980b21eff2706e18
Back to Paper I: Typed Operator Systems, Seed Rank, and Exact Packet Coordinates