OAI/Geometry/HyperbolicGroups/PairingForest.lean
10 declarations, 0 contain sorry, 0 declared as axioms
- def
OAI.HyperbolicObstruction.PictureSwitch.forestEdgesline 21Source documentation
Kruskal's spanning forest, retaining literal paired-side indices.
def forestEdges (s : Setoid D) : List (D × D) → List (D × D) | [] => [] | (a,b)::l => if s a b then forestEdges s l else (a,b)::forestEdges (glue s a b) l
- lemma
OAI.HyperbolicObstruction.PictureSwitch.forestEdges_sublistline 25 - lemma
OAI.HyperbolicObstruction.PictureSwitch.forestEdges_joinsline 34 - lemma
OAI.HyperbolicObstruction.PictureSwitch.forestEdges_cardline 46 - lemma
OAI.HyperbolicObstruction.PictureSwitch.forestEdges_cyclesline 62 - lemma
OAI.HyperbolicObstruction.PictureSwitch.setoid_eq_of_card_eqline 80 - lemma
OAI.HyperbolicObstruction.PictureSwitch.PictureMap.swap_subpairline 96 - lemma
OAI.HyperbolicObstruction.PictureSwitch.PictureMap.subpairing_mulline 106 - lemma
OAI.HyperbolicObstruction.PictureSwitch.PictureMap.swaps_subpairingline 118 - theorem
OAI.HyperbolicObstruction.PictureSwitch.PictureMap.spanning_forestline 130Source documentation
An actual spanning forest sub-pairing. It has precisely one boundary cycle per component; no topological drawing, tree axiom, or separator is assumed. This constructor is valid even before imposing genus zero.
theorem spanning_forest : ∃ q : Perm D, (∀ x, q x = x ∨ q x = M.edge x) ∧ SameCycle.setoid M.vertex ⊔ SameCycle.setoid q = M.components ∧ cycles (M.vertex * q) = (Nat.card (Quotient M.components) : ℤ) := by …