OAI/Probability/FKMaps/MapEncoding.lean
81 declarations, 0 contain sorry, 0 declared as axioms
The exact edge-reversal tour of the rotation-system maps.
- lemma
OAI.FKCRT.orbit_eq_iffline 11 - lemma
OAI.FKCRT.orbit_permline 14 - lemma
OAI.FKCRT.closed_of_sameCycleline 19 - lemma
OAI.FKCRT.connected_dart_inductionline 31Source documentation
Graph connectivity propagates a dart property through the two generating permutations. This is the precise permutation form of connected rooted-map rigidity, including loops and repeated edges.
lemma connected_dart_induction {n : ℕ} {a s : Equiv.Perm (Dart n)} (ha : Function.Involutive a) (hc : (spanningGraph a s univ).Connected) {P : Dart n → Prop} {d₀ : Dart n} (h₀ : P d₀) (haP : ∀ d,P d → P (a d)) (hsP : ∀ d,P d → P (s d)) : ∀ d,P d := by …Mentions: OAI.FKCRT.Dart, OAI.FKCRT.spanningGraph
- lemma
OAI.FKCRT.MapIso.reflline 53 - lemma
OAI.FKCRT.MapIso.symmline 56 - lemma
OAI.FKCRT.MapIso.transline 67 - lemma
OAI.FKCRT.mapIso_eqvGenline 78 - lemma
OAI.FKCRT.rooted_automorphism_eq_oneline 91Source documentation
A rooted connected rotation system has no nontrivial automorphisms. Consequently the source's distinguished corners carry no symmetry divisor.
lemma rooted_automorphism_eq_one {n : ℕ} (M : LabelledMap n) (r : Equiv.Perm (Dart n)) (h₀ : r 0=0) (ha : ∀ d,M.val.1 (r d)=r (M.val.1 d)) (hs : ∀ d,M.val.2 (r d)=r (M.val.2 d)) : r=1 := by …Mentions: OAI.FKCRT.LabelledMap, OAI.FKCRT.Dart
- lemma
OAI.FKCRT.root_isomorphism_uniqueline 102 - abbrev
OAI.FKCRT.MapFinite.CycleQuotline 136 - instance
OAI.FKCRT.MapFinite.(instance at line 138)line 138 - lemma
OAI.FKCRT.MapFinite.sameCycle_involutionline 140 - lemma
OAI.FKCRT.MapFinite.mk_eq_iff_involutionline 160 - lemma
OAI.FKCRT.MapFinite.card_orbit_fiberline 169 - lemma
OAI.FKCRT.MapFinite.fixed_out_iffline 185 - def
OAI.FKCRT.MapFinite.fixedOrbitEquivline 195 - lemma
OAI.FKCRT.MapFinite.twice_card_orbitsline 211Source documentation
Orbit count for an involution, retaining its fixed points. A reversal has no fixed darts, whereas the path-map vertex rotation has exactly two.
lemma twice_card_orbits {α : Type*} [Fintype α] (s : Equiv.Perm α) (hs : Function.Involutive s) : 2*Fintype.card (CycleQuot s)=Fintype.card α+Fintype.card {d : α // s d=d} := by …Mentions: OAI.FKCRT.MapFinite.CycleQuot
- lemma
OAI.FKCRT.spanningGraph_reachable_reversalline 236 - lemma
OAI.FKCRT.spanningGraph_connected_of_face_cycleline 244 - def
OAI.FKCRT.pathRotationline 260 - lemma
OAI.FKCRT.pathRotation_valline 262 - lemma
OAI.FKCRT.pathRotation_involutiveline 273 - lemma
OAI.FKCRT.pathRotation_fixedline 280 - lemma
OAI.FKCRT.pathRotation_fixed_cardline 285 - lemma
OAI.FKCRT.pathRotation_orbitsline 298 - lemma
OAI.FKCRT.rotate_sameCycleline 306 - lemma
OAI.FKCRT.pathRotation_faceline 315 - lemma
OAI.FKCRT.rotate_orbitsline 319 - def
OAI.FKCRT.pathLabelledMapline 328Source documentation
A concrete genus-zero path map with every positive edge size.
def pathLabelledMap (n : ℕ) : LabelledMap n := ⟨(Fin.revPerm,pathRotation n),by …
Mentions: OAI.FKCRT.LabelledMap, OAI.FKCRT.pathRotation
- instance
OAI.FKCRT.rootedMap_nonemptyline 341 - lemma
OAI.FKCRT.partition_posline 343 - lemma
OAI.FKCRT.partial_involutiveline 367 - def
OAI.FKCRT.partialReversalline 377 - lemma
OAI.FKCRT.partialReversal_applyline 382 - lemma
OAI.FKCRT.partialReversal_involutiveline 386 - lemma
OAI.FKCRT.partialReversal_emptyline 390 - lemma
OAI.FKCRT.partialReversal_selfline 396 - lemma
OAI.FKCRT.partialReversal_complline 402 - lemma
OAI.FKCRT.partialReversal_insertline 412 - lemma
OAI.FKCRT.card_orbit_mul_swap_leline 435 - lemma
OAI.FKCRT.card_orbit_partialReversal_leline 440 - lemma
OAI.FKCRT.card_orbit_eq_one_iffline 451 - lemma
OAI.FKCRT.spanningGraph_reachable_partialline 464 - lemma
OAI.FKCRT.spanningGraph_connected_of_tourline 476 - lemma
OAI.FKCRT.reversal_cardline 494 - theorem
OAI.FKCRT.tour_edge_cardline 510Source documentation
A one-cycle tour in a genuine planar map has exactly V-1 chosen edges. The proof uses the Euler equality and the two complementary tour bounds, so loops and parallel edges are fully retained.
theorem tour_edge_card (M : LabelledMap n) (A : Finset (Orbit M.val.1)) (hc : ∀ d e, (M.val.2 * partialReversal M.val.1 M.property.1 A).SameCycle d e) : Nat.card (Orbit M.val.2) = A.card + 1 := by …Mentions: OAI.FKCRT.LabelledMap, OAI.FKCRT.Orbit, OAI.FKCRT.partialReversal
- def
OAI.FKCRT.edgeEndsline 551Source documentation
An edge's unordered endpoints; representatives do not change this pair.
def edgeEnds (a s : Perm (Dart n)) (e : Orbit a) : Sym2 (Orbit s) := …
Mentions: OAI.FKCRT.Dart, OAI.FKCRT.Orbit
- lemma
OAI.FKCRT.edgeEnds_orbitline 554 - lemma
OAI.FKCRT.spanningGraph_edgeSet_subsetline 563 - lemma
OAI.FKCRT.spanningGraph_card_edgeSet_leline 577 - theorem
OAI.FKCRT.tour_spanningTreeline 589Source documentation
The selected edges of a one-cycle planar tour form an actual spanning tree of the all-edge graph. There are no suppressed loop/parallel edges in its size: the cardinality equality forces every chosen edge to be distinct and non-loop.
theorem tour_spanningTree (M : LabelledMap n) (A : Finset (Orbit M.val.1)) (hc : ∀ d e, (M.val.2 * partialReversal M.val.1 M.property.1 A).SameCycle d e) : (spanningGraph M.val.1 M.val.2 (A : Set (Orbit M.val.1))).IsTree ∧ Nat.card (spanningGraph M.val.1 M.val.2 (A : Set (Orbit M.val.1))).edgeSet = A.card := by …Mentions: OAI.FKCRT.LabelledMap, OAI.FKCRT.Orbit, OAI.FKCRT.partialReversal, OAI.FKCRT.spanningGraph
- lemma
OAI.FKCRT.card_orbit_mul_commline 612 - lemma
OAI.FKCRT.card_orbit_partialReversal_mul_leline 622 - lemma
OAI.FKCRT.edgeSwap_eqline 628 - lemma
OAI.FKCRT.partialReversal_insert_orbitline 636 - lemma
OAI.FKCRT.crossing_two_swapsline 642Source documentation
Alternating chords first split and then rejoin a tour cycle.
lemma crossing_two_swaps (p : Perm (Dart n)) (x y z w : Dart n) (L M N R : List (Dart n)) (he : MapCycles.orbitList p x = x :: (L ++ y :: (M ++ z :: (N ++ w :: R)))) : Nat.card (Orbit (swap y w * (swap x z * p))) = Nat.card (Orbit p) := by …Mentions: OAI.FKCRT.Dart, OAI.FKCRT.MapCycles.orbitList, OAI.FKCRT.Orbit
- theorem
OAI.FKCRT.no_crossing_of_maximal_orbitsline 687Source documentation
An orbit-count-maximal matching on a tour has no alternating pair of selected edges. This is the exact combinatorial planarity criterion needed for the two parenthesis families, rather than a topological picture.
theorem no_crossing_of_maximal_orbits (a p : Perm (Dart n)) (ha : Function.Involutive a) (A : Finset (Orbit a)) (hmax : Nat.card (Orbit (partialReversal a ha A * p)) = Nat.card (Orbit p) + A.card) (x y : Dart n) (hx : orbit a x ∈ A) (hy : orbit a y ∈ A) (hxy : orbit a x ≠ orbit a y) (L M N R : List (Dart n)) : MapCycles.orbitList p x ≠ x :: (L ++ y :: (M ++ a x :: (N ++ a y :: R))) := by …Mentions: OAI.FKCRT.Dart, OAI.FKCRT.Orbit, OAI.FKCRT.partialReversal, OAI.FKCRT.orbit, OAI.FKCRT.MapCycles.orbitList
- theorem
OAI.FKCRT.planar_tour_no_crossingline 727Source documentation
For every actual planar map and every one-cycle tour, both edge colours are noncrossing in that tour.
theorem planar_tour_no_crossing (M₀ : LabelledMap n) (A : Finset (Orbit M₀.val.1)) (hc : ∀ d e, (M₀.val.2 * partialReversal M₀.val.1 M₀.property.1 A).SameCycle d e) (x y : Dart n) (hx : orbit M₀.val.1 x ∈ A) (hy : orbit M₀.val.1 y ∈ A) (hxy : orbit M₀.val.1 x ≠ orbit M₀.val.1 y) (L M N R : List (Dart n)) : MapCycles.orbitList (M₀.val.2 * partialReversal M₀.val.1 M₀.property.1 A) x ≠ x :: (L ++ y :: (M ++ M₀.val.1 x :: (N ++ M₀.val.1 y :: R))) := by …Mentions: OAI.FKCRT.LabelledMap, OAI.FKCRT.Orbit, OAI.FKCRT.partialReversal, OAI.FKCRT.Dart, OAI.FKCRT.orbit, OAI.FKCRT.MapCycles.orbitList
- lemma
OAI.FKCRT.dualRotation_mulline 750 - lemma
OAI.FKCRT.spanningGraph_dual_connectedline 756 - def
OAI.FKCRT.dualLabelledMapline 777Source documentation
The combinatorial dual in the dart convention. Choosing the inverse face orientation is unnecessary: this rotation gives the same planar oriented dual after reversing edge darts.
def dualLabelledMap (M : LabelledMap n) : LabelledMap n := …
Mentions: OAI.FKCRT.LabelledMap
- lemma
OAI.FKCRT.dual_tourline 783 - theorem
OAI.FKCRT.planar_tour_compl_cardline 796 - theorem
OAI.FKCRT.planar_tour_compl_no_crossingline 806Source documentation
The non-tree pairs are noncrossing in precisely the same rooted tour order, proved via actual dual rotation systems rather than a disk axiom.
theorem planar_tour_compl_no_crossing (M₀ : LabelledMap n) (A : Finset (Orbit M₀.val.1)) (hc : ∀ d e, (M₀.val.2 * partialReversal M₀.val.1 M₀.property.1 A).SameCycle d e) (x y : Dart n) (hx : orbit M₀.val.1 x ∉ A) (hy : orbit M₀.val.1 y ∉ A) (hxy : orbit M₀.val.1 x ≠ orbit M₀.val.1 y) (L M N R : List (Dart n)) : MapCycles.orbitList (M₀.val.2 * partialReversal M₀.val.1 M₀.property.1 A) x ≠ x :: (L ++ y :: (M ++ M₀.val.1 x :: (N ++ M₀.val.1 y :: R))) := by …Mentions: OAI.FKCRT.LabelledMap, OAI.FKCRT.Orbit, OAI.FKCRT.partialReversal, OAI.FKCRT.Dart, OAI.FKCRT.orbit, OAI.FKCRT.MapCycles.orbitList
- lemma
OAI.FKCRT.spanningGraph_monoline 837 - lemma
OAI.FKCRT.spanningGraph_reachable_of_sameCycleline 845 - lemma
OAI.FKCRT.spanningGraph_edgeSet_of_cardline 858 - lemma
OAI.FKCRT.spanningGraph_delete_edge_leline 875 - theorem
OAI.FKCRT.forest_tour_cycle_cardline 891Source documentation
Each chosen forest edge joins two tour cycles, hence the exact cycle count.
theorem forest_tour_cycle_card (a s : Perm (Dart n)) (ha : Function.Involutive a) (A : Finset (Orbit a)) (ht : (spanningGraph a s (A : Set (Orbit a))).IsAcyclic) (hn : ∀ e ∈ A, orbit s e.out ≠ orbit s (a e.out)) (hi : Set.InjOn (edgeEnds a s) (A : Set (Orbit a))) : Nat.card (Orbit (s * partialReversal a ha A)) + A.card = Nat.card (Orbit s) := by …Mentions: OAI.FKCRT.Dart, OAI.FKCRT.Orbit, OAI.FKCRT.spanningGraph, OAI.FKCRT.orbit, OAI.FKCRT.edgeEnds, OAI.FKCRT.partialReversal
- theorem
OAI.FKCRT.spanningTree_one_cycle_tourline 934Source documentation
No suppressed parallel edge or loop is allowed in a multigraph tree; the cardinality condition records precisely this source convention.
theorem spanningTree_one_cycle_tour (a s : Perm (Dart n)) (ha : Function.Involutive a) (A : Finset (Orbit a)) (ht : (spanningGraph a s (A : Set (Orbit a))).IsTree) (hc : Nat.card (spanningGraph a s (A : Set (Orbit a))).edgeSet = A.card) : ∀ d e, (s * partialReversal a ha A).SameCycle d e := by …Mentions: OAI.FKCRT.Dart, OAI.FKCRT.Orbit, OAI.FKCRT.spanningGraph, OAI.FKCRT.partialReversal
- lemma
OAI.FKCRT.reconstructed_tourline 966 - lemma
OAI.FKCRT.reconstructed_faceline 971 - theorem
OAI.FKCRT.reconstruction_conditionsline 978Source documentation
Reconstructing a two-coloured noncrossing tour gives a genuine connected planar map, including the empty-tree and all-loop cases.
theorem reconstruction_conditions (a t : Perm (Dart n)) (ha : Function.Involutive a) (hf : ∀ d,a d ≠ d) (A : Finset (Orbit a)) (ht : ∀ d e,t.SameCycle d e) (hv : Nat.card (Orbit (t * partialReversal a ha A)) = A.card+1) (hF : Nat.card (Orbit (t * partialReversal a ha Aᶜ)) = Aᶜ.card+1) : MapConditions (a,t * partialReversal a ha A) := by …Mentions: OAI.FKCRT.Dart, OAI.FKCRT.Orbit, OAI.FKCRT.partialReversal, OAI.FKCRT.MapConditions
- lemma
OAI.FKCRT.reconstruction_inverseline 997Source documentation
The inverse is literal permutation multiplication, so it retains the cyclic seam and the designated root dart without any quotient choice.
lemma reconstruction_inverse (M : LabelledMap n) (A : Finset (Orbit M.val.1)) : (M.val.2 * partialReversal M.val.1 M.property.1 A) * partialReversal M.val.1 M.property.1 A = M.val.2 := …Mentions: OAI.FKCRT.LabelledMap, OAI.FKCRT.Orbit, OAI.FKCRT.partialReversal
- theorem
OAI.FKCRT.spanningTree_colour_eulerline 1005Source documentation
Both maximum orbit counts follow from a genuine map and any genuine spanning tree. Together with reconstruction this is an algebraic form of the classical tree-rooted-map/two-colour matching correspondence.
theorem spanningTree_colour_euler (M : LabelledMap n) (A : Finset (Orbit M.val.1)) (ht : (spanningGraph M.val.1 M.val.2 (A : Set (Orbit M.val.1))).IsTree) (hc : Nat.card (spanningGraph M.val.1 M.val.2 (A : Set (Orbit M.val.1))).edgeSet = A.card) : let t := M.val.2 * partialReversal M.val.1 M.property.1 A …Mentions: OAI.FKCRT.LabelledMap, OAI.FKCRT.Orbit, OAI.FKCRT.spanningGraph, OAI.FKCRT.partialReversal
- def
OAI.FKCRT.matchingEdgesline 1036Source documentation
Edges of the first colour, in the edge-orbit quotient of the complete matching.
def matchingEdges (E F : List (Dart n × Dart n)) : Finset (Orbit (turns (E++F))) := …
Mentions: OAI.FKCRT.Dart, OAI.FKCRT.Orbit
- lemma
OAI.FKCRT.mem_matchingEdgesline 1039 - lemma
OAI.FKCRT.partialReversal_matchingEdgesline 1058 - lemma
OAI.FKCRT.turns_mul_completeline 1068 - theorem
OAI.FKCRT.matching_map_conditionsline 1083Source documentation
Two complete noncrossing colour matchings construct an actual planar rotation system in the map model, with no topological assumptions.
theorem matching_map_conditions (E F : List (Dart n × Dart n)) (hE : Arches (List.finRange (2*(n+1))) E) (hF : Arches (List.finRange (2*(n+1))) F) (hc : (endpoints (E++F)).Perm (List.finRange (2*(n+1)))) : MapConditions (turns (E++F),(List.finRange (2*(n+1))).formPerm * turns E) := by …Mentions: OAI.FKCRT.Dart, OAI.FKCRT.MapConditions