OAI/Probability/FKMaps/CoreCompression.lean
46 declarations, 0 contain sorry, 0 declared as axioms
- lemma
OAI.FKCRT.Inventory.StackMatching.empty_interval_preservesline 12 - lemma
OAI.FKCRT.Inventory.formPerm_append_commline 24 - lemma
OAI.FKCRT.Inventory.StackMatching.empty_interval_rotationline 33Source documentation
Cutting any nonempty successful insertion interval is a literal one-vertex split of the original rotation. No random root/rotation is used.
lemma StackMatching.empty_interval_rotation {w : α→TypedLetter} (u L z : List α) (a b : α) (R : List α) (M : StackMatching w (u++((a::L)++z))) (hn : (u++((a::L)++z)).Nodup) (hcomp : z++u=b::R) : (u++((a::L)++z)).formPerm*turns M.first= swap a b*((a::L).formPerm*(b::R).formPerm*turns M.first) := by …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching
- def
OAI.FKCRT.Inventory.StackMatching.empty_interval_wedgeline 52Source documentation
The two graph pieces retain every edge, including both matching colours. This is the actual all-edge graph at an arbitrary insertion interval.
def StackMatching.empty_interval_wedge {w : α→TypedLetter} (u L z : List α) (a b : α) (R : List α) (M : StackMatching w (u++((a::L)++z))) (hn : (u++((a::L)++z)).Nodup) (hv : stackTypedRun ((a::L).map w) []=some []) (hcomp : z++u=b::R) : let p := (a::L).formPerm*(b::R).formPerm*turns M.first …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.StackMatching.map
- theorem
OAI.FKCRT.Inventory.StackMatching.empty_interval_poleline 77Source documentation
The first dart following the successful subword and its first dart are literally in the same original rotation vertex. This is the pole identity.
theorem StackMatching.empty_interval_pole {w : α→TypedLetter} (u L z : List α) (a b : α) (R : List α) (M : StackMatching w (u++((a::L)++z))) (hn : (u++((a::L)++z)).Nodup) (hv : stackTypedRun ((a::L).map w) []=some []) (hcomp : z++u=b::R) : vertex ((u++((a::L)++z)).formPerm*turns M.first) a= vertex ((u++((a::L)++z)).formPerm*turns M.first) b := by …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.StackMatching.map
- lemma
OAI.FKCRT.PermutationWedge.sameCycle_congr_online 101 - def
OAI.FKCRT.PermutationWedge.sideCongrline 122Source documentation
Changing the ambient permutation off a retained invariant dart set does not change its actual rotation vertices.
def sideCongr {p q : Perm α} {S : Set α} (hp : ∀ d,p d∈S ↔ d∈S) (hq : ∀ d,q d∈S ↔ d∈S) (he : ∀ d∈S,p d=q d) : Side p S ≃ Side q S := …Mentions: OAI.FKCRT.PermutationWedge.Side
- lemma
OAI.FKCRT.PermutationWedge.sideCongr_mkline 127 - def
OAI.FKCRT.PermutationWedge.sideGraphCongrline 134Source documentation
The all-edge graph is invariant under restriction/normalization on a closed set of darts; only the two literal permutation actions are used.
def sideGraphCongr {p q e f : Perm α} {S : Set α} (hp : ∀ d,p d∈S ↔ d∈S) (hq : ∀ d,q d∈S ↔ d∈S) (he : ∀ d,e d∈S ↔ d∈S) (hf : ∀ d,f d∈S ↔ d∈S) (hpq : ∀ d∈S,p d=q d) (hef : ∀ d∈S,e d=f d) : sideGraph e p S he ≃g sideGraph f q S hf where …Mentions: OAI.FKCRT.PermutationWedge.sideGraph
- def
OAI.FKCRT.PermutationWedge.fullInclusionline 169 - lemma
OAI.FKCRT.PermutationWedge.fullInclusion_mkline 173 - lemma
OAI.FKCRT.PermutationWedge.fullInclusion_injectiveline 177 - lemma
OAI.FKCRT.PermutationWedge.fullRetract_wellDefinedline 190 - def
OAI.FKCRT.PermutationWedge.fullRetractline 202 - lemma
OAI.FKCRT.PermutationWedge.fullRetract_mkline 208 - lemma
OAI.FKCRT.PermutationWedge.fullRetract_inclusionline 215 - def
OAI.FKCRT.PermutationWedge.fullInclusionHomline 221 - lemma
OAI.FKCRT.PermutationWedge.fullRetract_edgeline 231 - theorem
OAI.FKCRT.PermutationWedge.fullInclusion_edistline 253Source documentation
Other invariant components, including isolated deleted darts, cannot shorten distances in a retained component.
theorem fullInclusion_edist {p e : Perm α} {S : Set α} (hp : ∀ d,p d∈S ↔ d∈S) (he : ∀ d,e d∈S ↔ d∈S) (x y : Side p S) : (dartGraph e p).edist (fullInclusion p S x) (fullInclusion p S y)= (sideGraph e p S he).edist x y := by …Mentions: OAI.FKCRT.PermutationWedge.Side, OAI.FKCRT.PermutationWedge.dartGraph, OAI.FKCRT.PermutationWedge.fullInclusion, OAI.FKCRT.PermutationWedge.sideGraph
- theorem
OAI.FKCRT.Chords.reachable_liftline 281Source documentation
Reachability lifts through a strictly increasing matching embedding whenever its image contains the whole component being lifted.
theorem reachable_lift (a : Perm (Fin N)) (b : Perm (Fin K)) (e : Fin K ↪o Fin N) (hmatch : ∀ i,a (e i)=e (b i)) (r : Opener b) (himage : ∀ x : Opener a,(graph a).Reachable (openerEmbedding a b e hmatch r) x → x.val∈Set.range e) : ∀ x : Opener a,(graph a).Reachable (openerEmbedding a b e hmatch r) x → ∃ y : Opener b,openerEmbedding a b e hmatch y=x ∧ (graph b).Reachable r y := by …Mentions: OAI.FKCRT.Chords.Opener, OAI.FKCRT.Chords.graph, OAI.FKCRT.Chords.openerEmbedding
- theorem
OAI.FKCRT.Chords.component_compressionline 301 - lemma
OAI.FKCRT.Inventory.StackMatching.pair_maskline 336 - def
OAI.FKCRT.Inventory.StackMatching.filterline 343 - lemma
OAI.FKCRT.Inventory.StackMatching.filter_mateline 357 - lemma
OAI.FKCRT.MapCycles.turns_filter_online 383 - lemma
OAI.FKCRT.MapCycles.perm_preserves_of_fixedline 398 - lemma
OAI.FKCRT.Inventory.StackMatching.filter_firstline 413 - lemma
OAI.FKCRT.Inventory.StackMatching.filter_mate_online 420 - lemma
OAI.FKCRT.Inventory.StackMatching.filter_mate_fixedline 427 - lemma
OAI.FKCRT.Inventory.StackMatching.filter_first_fixedline 435 - lemma
OAI.FKCRT.GraphWedge.iso_edistline 453 - lemma
OAI.FKCRT.Inventory.filter_delete_intervalline 464 - def
OAI.FKCRT.Inventory.StackMatching.deleteIntervalline 486Source documentation
The actual retained matching after a successful insertion is erased.
def StackMatching.deleteInterval {w : α→TypedLetter} {u v z : List α} (M : StackMatching w (u++(v++z))) (hn : (u++(v++z)).Nodup) (hv : stackTypedRun (v.map w) []=some []) : StackMatching w (u++z) := by …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching, OAI.FKCRT.Inventory.stackTypedRun
- lemma
OAI.FKCRT.Inventory.StackMatching.cast_firstline 498 - theorem
OAI.FKCRT.Inventory.StackMatching.delete_interval_distanceline 504Source documentation
Removing any genuine successful interval preserves all-edge distances between retained darts, not just spanning-tree distances. The resulting rotation is that of the original ordered word with the interval deleted.
theorem StackMatching.delete_interval_distance {w : α→TypedLetter} (u L z : List α) (a b : α) (R : List α) (M : StackMatching w (u++((a::L)++z))) (hn : (u++((a::L)++z)).Nodup) (hv : stackTypedRun ((a::L).map w) []=some []) (hcomp : z++u=b::R) (x y : α) (hx : x∉a::L) (hy : y∉a::L) : let D := M.deleteInterval hn hv …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.StackMatching.map, OAI.FKCRT.Inventory.D
- theorem
OAI.FKCRT.Inventory.StackMatching.empty_interval_gateline 588Source documentation
Each genuine inserted successful word has precisely one metric gate in its complement in the original all-edge map. This equality is in the original graph, not an independently postulated block-tree metric.
theorem StackMatching.empty_interval_gate {w : α→TypedLetter} (u L z : List α) (a b : α) (R : List α) (M : StackMatching w (u++((a::L)++z))) (hn : (u++((a::L)++z)).Nodup) (hv : stackTypedRun ((a::L).map w) []=some []) (hcomp : z++u=b::R) (x y : α) (hx : x∈a::L) (hy : y∉a::L) : let s := (u++((a::L)++z)).formPerm*turns M.first …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.StackMatching.map
- lemma
OAI.FKCRT.Inventory.complement_disjoint_intervalline 625 - def
OAI.FKCRT.Inventory.StackMatching.distanceline 636Source documentation
A notation for the actual original all-edge distance of a typed matching.
def StackMatching.distance {w : α→TypedLetter} {l : List α} (M : StackMatching w l) (x y : α) : ℕ∞ := …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching
- lemma
OAI.FKCRT.Inventory.StackMatching.distance_castline 641 - lemma
OAI.FKCRT.Inventory.StackMatching.erase_distanceline 647Source documentation
Erasing a possibly empty successful interval does not shorten any retained all-edge distance. Both vertices are kept literal dart vertices.
lemma StackMatching.erase_distance [Fintype α] {w : α→TypedLetter} (u v z : List α) (M : StackMatching w (u++(v++z))) (hn : (u++(v++z)).Nodup) (hv : stackTypedRun (v.map w) []=some []) (hc : u++z≠[]) (x y : α) (hx : x∈u++z) (hy : y∈u++z) : ∃ D : StackMatching w (u++z),M.distance x y=D.distance x y := by …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.D
- def
OAI.FKCRT.Inventory.dartInsertline 668Source documentation
Literal dart order for all successive corner insertions.
def dartInsert (l : List (α×List α)) : List α := l.flatMap fun p => p.1::p.2 …
- lemma
OAI.FKCRT.Inventory.core_sublist_insertline 671 - theorem
OAI.FKCRT.Inventory.StackMatching.core_distanceline 681Source documentation
Iterated exact preservation of INTERIOR CORE distances under all its actual successful corner insertions, including trivial leaf intervals. No stochastic estimate and no replacement metric is assumed.
theorem StackMatching.core_distance [Fintype α] {w : α→TypedLetter} (p : List α) (l : List (α×List α)) (M : StackMatching w (p++dartInsert l)) (hn : (p++dartInsert l).Nodup) (he : ∀ c∈l,stackTypedRun (c.2.map w) []=some []) (hc : p++l.map Prod.fst≠[]) (x y : α) (hx : x∈p++l.map Prod.fst) (hy : y∈p++l.map Prod.fst) : ∃ D : StackMatching w (p++l.map Prod.fst),M.distance x y=D.distance x y := by …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching, OAI.FKCRT.Inventory.dartInsert, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.D
- lemma
OAI.FKCRT.Inventory.filter_keep_intervalline 727 - def
OAI.FKCRT.Inventory.StackMatching.keepIntervalline 748Source documentation
The literal restricted successful matching, retaining an inserted word.
def StackMatching.keepInterval {w : α→TypedLetter} {u v z : List α} (M : StackMatching w (u++(v++z))) (hn : (u++(v++z)).Nodup) (hv : stackTypedRun (v.map w) []=some []) : StackMatching w v := by …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching, OAI.FKCRT.Inventory.stackTypedRun
- theorem
OAI.FKCRT.Inventory.StackMatching.keep_interval_distanceline 761Source documentation
All-edge distances inside inserted words are unchanged in the ambient map, and agree with the actual isolated typed matching of that word.
theorem StackMatching.keep_interval_distance {w : α→TypedLetter} (u L z : List α) (a b : α) (R : List α) (M : StackMatching w (u++((a::L)++z))) (hn : (u++((a::L)++z)).Nodup) (hv : stackTypedRun ((a::L).map w) []=some []) (hcomp : z++u=b::R) (x y : α) (hx : x∈a::L) (hy : y∈a::L) : M.distance x y=(M.keepInterval hn hv).distance x y := by …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.StackMatching.map, OAI.FKCRT.Inventory.StackMatching.distance