OAI/Probability/FKMaps/Noncrossing.lean
29 declarations, 0 contain sorry, 0 declared as axioms
- inductive
OAI.FKCRT.MapCycles.Archesline 13Source documentation
Ordered stack matching, with unpaired positions allowed. The skipped positions will be endpoints of the other colour in the map tour.
inductive Arches : List α → List (α × α) → Prop | nil : Arches [] [] | skip (a : α) {l E} : Arches l E → Arches (a :: l) E | pair (a b : α) {L R E F} : Arches L E → Arches R F → Arches (a :: (L ++ b :: R)) ((a,b) :: (E ++ F)) /-- Left transpositions in traversal order. -/ - def
OAI.FKCRT.MapCycles.turnsline 20Source documentation
Left transpositions in traversal order.
def turns : List (α × α) → Perm α | [] => 1 | (a,b) :: E => turns E * swap a b
- lemma
OAI.FKCRT.MapCycles.turns_nilline 24 - lemma
OAI.FKCRT.MapCycles.turns_consline 25 - lemma
OAI.FKCRT.MapCycles.turns_appendline 28 - lemma
OAI.FKCRT.MapCycles.Arches.endpointsline 35 - lemma
OAI.FKCRT.MapCycles.turns_fixedline 51 - lemma
OAI.FKCRT.MapCycles.Arches.turns_fixedline 60 - lemma
OAI.FKCRT.MapCycles.formPerm_append_commline 67 - lemma
OAI.FKCRT.MapCycles.cut_local_actionline 72 - theorem
OAI.FKCRT.MapCycles.Arches.card_orbits_turnsline 95Source documentation
Stack/noncrossing chords attain the maximum possible cycle count. The unused initial string is arbitrary, so this also handles skipped darts and the end/start seam of a rooted tour.
theorem Arches.card_orbits_turns [Fintype α] {l : List α} {E} (h : Arches l E) (Z : List α) (p : Perm α) (hn : (Z ++ l).Nodup) (hp : ∀ x ∈ Z ++ l, p x = (Z ++ l).formPerm x) : Nat.card (Orbits (turns E * p)) = Nat.card (Orbits p) + E.length := by …Mentions: OAI.FKCRT.MapCycles.Arches, OAI.FKCRT.MapCycles.Orbits, OAI.FKCRT.MapCycles.turns
- lemma
OAI.FKCRT.MapCycles.Arches.appendline 160 - lemma
OAI.FKCRT.MapCycles.Arches.emptyline 168 - lemma
OAI.FKCRT.MapCycles.cons_sublist_splitline 173 - lemma
OAI.FKCRT.MapCycles.Arches.monoline 184 - def
OAI.FKCRT.MapCycles.endpointsline 199Source documentation
Flatten the pair endpoints without imposing an artificial pair order.
def endpoints (E : List (α×α)) : List α := E.flatMap (fun e => [e.1,e.2])
- lemma
OAI.FKCRT.MapCycles.endpoints_nilline 201 - lemma
OAI.FKCRT.MapCycles.endpoints_consline 202 - lemma
OAI.FKCRT.MapCycles.endpoints_appendline 204 - theorem
OAI.FKCRT.MapCycles.dyck_archesline 210Source documentation
Every Dyck path, on an arbitrary ordered list of positions, has a complete noncrossing arch pairing. This is a constructive existence statement, not a planarity assumption on a map.
theorem dyck_arches (p : DyckWord) (l : List α) (f : α→DyckStep) (hl : l.map f=p.toList) : ∃ E : List (α×α), Arches l E ∧ (endpoints E).Perm l ∧ ∀ e∈E,f e.1=.U ∧ f e.2=.D := by …Mentions: OAI.FKCRT.MapCycles.Arches, OAI.FKCRT.MapCycles.endpoints
- lemma
OAI.FKCRT.MapCycles.mem_endpointsline 278 - lemma
OAI.FKCRT.MapCycles.turns_fixed_of_notMemline 282 - lemma
OAI.FKCRT.MapCycles.turns_pairline 289 - lemma
OAI.FKCRT.MapCycles.endpoints_pair_neline 314 - lemma
OAI.FKCRT.MapCycles.turns_involutiveline 324 - lemma
OAI.FKCRT.MapCycles.turns_selfline 333 - lemma
OAI.FKCRT.MapCycles.turns_eq_self_iffline 337 - lemma
OAI.FKCRT.MapCycles.turns_mem_iffline 346 - lemma
OAI.FKCRT.MapCycles.turns_sublist_applyline 355