OAI/Probability/FKMaps/MapCycles.lean
34 declarations, 0 contain sorry, 0 declared as axioms
Cut/join identities for tour permutations. Fixed points are retained as one-element cycles, as required by the Euler-characteristic map definition.
- lemma
OAI.FKCRT.MapCycles.formPerm_cutline 13 - lemma
OAI.FKCRT.MapCycles.swap_mul_formPerm_cutline 30 - lemma
OAI.FKCRT.MapCycles.sameCycle_formPerm_of_memline 37 - lemma
OAI.FKCRT.MapCycles.pow_eq_on_listline 47 - lemma
OAI.FKCRT.MapCycles.sameCycle_of_listline 57 - abbrev
OAI.FKCRT.MapCycles.Orbitsline 63 - lemma
OAI.FKCRT.MapCycles.card_orbits_eq_of_listsline 68Source documentation
A partition into nonempty cyclic lists counts all orbits, including fixed points. The local action condition makes this independent of a chosen representative of the quotient.
lemma card_orbits_eq_of_lists [Finite α] {β : Type*} [Finite β] (p : Perm α) (l : β → List α) (hn : ∀ i, (l i).Nodup) (hne : ∀ i, ∃ x, x ∈ l i) (hc : ∀ x, ∃! i, x ∈ l i) (hp : ∀ i x, x ∈ l i → p x = (l i).formPerm x) : Nat.card (Orbits p) = Nat.card β := by …Mentions: OAI.FKCRT.MapCycles.Orbits
- def
OAI.FKCRT.MapCycles.orbitListline 104Source documentation
Canonical cyclic list, retaining one-element fixed cycles.
def orbitList [Fintype α] (p : Perm α) (x : α) : List α := …
- lemma
OAI.FKCRT.MapCycles.nodup_orbitListline 107 - lemma
OAI.FKCRT.MapCycles.mem_orbitListline 112 - lemma
OAI.FKCRT.MapCycles.orbitList_actionline 121 - def
OAI.FKCRT.MapCycles.splitFamilyline 134Source documentation
Splitting one part of a finite list partition into two consecutive, nonempty pieces adds exactly one block, without discarding fixed points.
def splitFamily {β : Type*} [DecidableEq β] (l : β → List α) (i₀ : β) (L R : List α) : ({i : β // i ≠ i₀} ⊕ Bool) → List α | Sum.inl i => l i | Sum.inr false => L | Sum.inr true => R omit [DecidableEq α] in - lemma
OAI.FKCRT.MapCycles.splitFamily_partitionline 141 - lemma
OAI.FKCRT.MapCycles.card_orbits_cutline 182 - lemma
OAI.FKCRT.MapCycles.orbitList_eq_consline 239 - theorem
OAI.FKCRT.MapCycles.card_orbits_swap_of_sameCycleline 255Source documentation
Swapping two distinct members of one orbit cuts that orbit into two. In particular one-element vertex/face cycles are not lost in the count.
theorem card_orbits_swap_of_sameCycle [Fintype α] (p : Perm α) {a b : α} (hab : a ≠ b) (hs : p.SameCycle a b) : Nat.card (Orbits (swap a b * p)) = Nat.card (Orbits p) + 1 := by …Mentions: OAI.FKCRT.MapCycles.Orbits
- lemma
OAI.FKCRT.MapCycles.sameCycle_swap_of_not_sameCycleline 288 - theorem
OAI.FKCRT.MapCycles.card_orbits_swap_of_not_sameCycleline 319Source documentation
Swapping members of distinct orbits joins precisely those two orbits.
theorem card_orbits_swap_of_not_sameCycle [Fintype α] (p : Perm α) {a b : α} (hs : ¬ p.SameCycle a b) : Nat.card (Orbits (swap a b * p)) + 1 = Nat.card (Orbits p) := by …Mentions: OAI.FKCRT.MapCycles.Orbits
- theorem
OAI.FKCRT.MapCycles.card_orbits_swap_leline 328Source documentation
Each edge transposition changes Euler's orbit count by exactly one.
theorem card_orbits_swap_le [Fintype α] (p : Perm α) (a b : α) : Nat.card (Orbits (swap a b * p)) ≤ Nat.card (Orbits p) + 1 := by …Mentions: OAI.FKCRT.MapCycles.Orbits
- lemma
OAI.FKCRT.MapCycles.sameCycle_monoline 351 - lemma
OAI.FKCRT.MapCycles.sameCycle_le_vertexJoinline 363Source documentation
Swapping the outputs at two distinct rotation cycles preserves every old vertex incidence and merges the indicated two vertices.
lemma sameCycle_le_vertexJoin (p : Perm α) {a b : α} (h : ¬p.SameCycle a b) {x y : α} (hxy : p.SameCycle x y) : (swap a b*p).SameCycle x y := by … - def
OAI.FKCRT.MapCycles.JoinRelline 380 - lemma
OAI.FKCRT.MapCycles.JoinRel.reflline 385 - lemma
OAI.FKCRT.MapCycles.JoinRel.symmline 389 - lemma
OAI.FKCRT.MapCycles.JoinRel.transline 395 - lemma
OAI.FKCRT.MapCycles.JoinRel.stepline 406 - theorem
OAI.FKCRT.MapCycles.sameCycle_vertexJoin_iffline 419Source documentation
Exact vertex equivalence after one-vertex gluing. In particular no additional vertices are identified, including fixed points and loop blocks.
theorem sameCycle_vertexJoin_iff (p : Perm α) {a b : α} (h : ¬p.SameCycle a b) (x y : α) : (swap a b*p).SameCycle x y ↔ JoinRel p a b x y := by …Mentions: OAI.FKCRT.MapCycles.JoinRel
- lemma
OAI.FKCRT.MapCycles.sameCycle_partitionline 449 - lemma
OAI.FKCRT.MapCycles.not_sameCycle_partitionline 458 - theorem
OAI.FKCRT.MapCycles.vertexJoin_inside_iffline 464Source documentation
The inclusion of either block's vertices remains injective under the actual vertex-rotation cut/join.
theorem vertexJoin_inside_iff {p : Perm α} {S : Set α} (hp : ∀ d,p d∈S ↔ d∈S) {a b x y : α} (ha : a∈S) (hb : b∉S) (hx : x∈S) (hy : y∈S) : (swap a b*p).SameCycle x y ↔ p.SameCycle x y := by … - theorem
OAI.FKCRT.MapCycles.vertexJoin_outside_iffline 477 - theorem
OAI.FKCRT.MapCycles.vertexJoin_cross_iffline 486Source documentation
A vertex in one block coincides with a vertex in the other block if and only if both are their respective attachment poles.
theorem vertexJoin_cross_iff {p : Perm α} {S : Set α} (hp : ∀ d,p d∈S ↔ d∈S) {a b x y : α} (ha : a∈S) (hb : b∉S) (hx : x∈S) (hy : y∉S) : (swap a b*p).SameCycle x y ↔ p.SameCycle x a ∧ p.SameCycle y b := by … - lemma
OAI.FKCRT.MapCycles.formPerm_other_mem_iffline 501 - theorem
OAI.FKCRT.MapCycles.contour_vertex_joinline 517Source documentation
The literal combined contour rotation is a one-vertex join of the separate rotations. The flip permutation can be the actual first-colour matching; only its proved locality is required.
theorem contour_vertex_join (a b : α) (L R : List α) (hn : (a::(L++b::R)).Nodup) (e : Perm α) (he : ∀ x,e x∈a::L ↔ x∈a::L) : let p := (a::L).formPerm*(b::R).formPerm*e …