OAI/Probability/FKMaps/CornerInverse.lean
42 declarations, 0 contain sorry, 0 declared as axioms
- def
OAI.FKCRT.Chords.openerEmbeddingline 11Source documentation
Transport a core matching through its strictly increasing position map.
def openerEmbedding (a : Perm (Fin N)) (b : Perm (Fin K)) (e : Fin K ↪o Fin N) (h : ∀ i,a (e i)=e (b i)) : Opener b ↪ Opener a where …Mentions: OAI.FKCRT.Chords.Opener
- lemma
OAI.FKCRT.Chords.cross_embeddingline 16 - def
OAI.FKCRT.Chords.graphHomline 23 - lemma
OAI.FKCRT.Chords.opener_rangeline 28 - lemma
OAI.FKCRT.Chords.core_closed_of_chunksline 40Source documentation
Once every unmarked interval is matched internally, the core mask is also matched internally; this is forced by the actual involution.
lemma core_closed_of_chunks (a : Perm (Fin N)) (ha : Function.Involutive a) (p : Fin N→Bool) (hN : 0<N) (hp : p ⟨0,hN⟩=true) (hchunks : ∀ x∈(CornerSplit.split p (List.finRange N)).2,∀ d∈x.2,a d∈x.2) : ∀ d,p (a d)=p d := by …Mentions: OAI.FKCRT.CornerSplit.split
- theorem
OAI.FKCRT.Chords.root_component_insertionline 61Source documentation
Inserting internally matched words in the corners of a connected core leaves precisely that core as the root crossing component.
theorem root_component_insertion (a : Perm (Fin N)) (ha : Function.Involutive a) (hf : ∀ d,a d≠d) (b : Perm (Fin K)) (e : Fin K ↪o Fin N) (hmatch : ∀ i,a (e i)=e (b i)) (r : Opener b) (hr : (e r.val).val=0) (hconnected : ∀ x : Opener b,(graph b).Reachable r x) (hchunks : ∀ x∈(CornerSplit.split (fun d => decide (d∈Set.range e)) (List.finRange N)).2, ∀ d∈x.2,a d∈x.2) : componentDarts a (openerEmbedding a b e hmatch r)=Finset.univ.filter (fun d => d∈Set.range e) := by …Mentions: OAI.FKCRT.Chords.Opener, OAI.FKCRT.Chords.graph, OAI.FKCRT.CornerSplit.split, OAI.FKCRT.Chords.componentDarts, OAI.FKCRT.Chords.openerEmbedding
- lemma
OAI.FKCRT.CornerSplit.skeleton_sublistline 90 - lemma
OAI.FKCRT.MapCycles.scanArches_corners_subsetline 101 - lemma
OAI.FKCRT.Inventory.typed_corner_scansline 119 - theorem
OAI.FKCRT.Inventory.corner_core_pairsline 137Source documentation
Actual core pairs remain the same pairs after inserting arbitrary successful corner words. This controls the adaptive matching itself.
theorem corner_core_pairs (w : α→TypedLetter) (l : List (α×List α)) (hn : (CornerSplit.join l).Nodup) (hw : ∀ x∈l,stackTypedRun (x.2.map w) []=some []) (E F C D : List (α×α)) (hE : Arches (CornerSplit.join l) E) (hF : Arches (CornerSplit.join l) F) (hc : (endpoints (E++F)).Perm (CornerSplit.join l)) (htE : ∀ e∈E,w e.1=.burger true ∧ w e.2=.order true) (htF : ∀ e∈F,w e.1=.burger false ∧ w e.2=.order false) (hC : Arches (l.map Prod.fst) C) (hD : Arches (l.map Prod.fst) D) (hd : (endpoints (C++D)).Perm (l.map Prod.fst)) (htC : ∀ e∈C,w e.1=.burger true ∧ w e.2=.order true) (htD : ∀ e∈D,w e.1=.burger false ∧ w e.2=.order false) : …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.CornerSplit.join, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.D
- theorem
OAI.FKCRT.Inventory.corner_core_turnsline 170Source documentation
The exact matching restriction, stated on every actual core endpoint.
theorem corner_core_turns (w : α→TypedLetter) (l : List (α×List α)) (hn : (CornerSplit.join l).Nodup) (hw : ∀ x∈l,stackTypedRun (x.2.map w) []=some []) (E F C D : List (α×α)) (hE : Arches (CornerSplit.join l) E) (hF : Arches (CornerSplit.join l) F) (hc : (endpoints (E++F)).Perm (CornerSplit.join l)) (htE : ∀ e∈E,w e.1=.burger true ∧ w e.2=.order true) (htF : ∀ e∈F,w e.1=.burger false ∧ w e.2=.order false) (hC : Arches (l.map Prod.fst) C) (hD : Arches (l.map Prod.fst) D) (hd : (endpoints (C++D)).Perm (l.map Prod.fst)) (htC : ∀ e∈C,w e.1=.burger true ∧ w e.2=.order true) (htD : ∀ e∈D,w e.1=.burger false ∧ w e.2=.order false) : …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.CornerSplit.join, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.D
- lemma
OAI.FKCRT.CornerSplit.join_perm_partsline 206 - lemma
OAI.FKCRT.CornerSplit.own_maskline 217 - def
OAI.FKCRT.Chords.partialOpenerline 232 - def
OAI.FKCRT.Chords.partialGraphHomline 237 - theorem
OAI.FKCRT.Chords.root_component_partialline 249 - theorem
OAI.FKCRT.Inventory.connected_corner_inverseline 275Source documentation
Exact inverse of root-component extraction. Connectivity here specifies which finite words are cores; all corner matching and separation facts are proved from the original stack algorithm.
theorem connected_corner_inverse (w : Fin N→TypedLetter) (l : List (Fin N×List (Fin N))) (hjoin : CornerSplit.join l=List.finRange N) (hw : ∀ x∈l,stackTypedRun (x.2.map w) []=some []) (E F C D : List (Fin N×Fin N)) (hE : Arches (List.finRange N) E) (hF : Arches (List.finRange N) F) (hc : (endpoints (E++F)).Perm (List.finRange N)) (htE : ∀ e∈E,w e.1=.burger true ∧ w e.2=.order true) (htF : ∀ e∈F,w e.1=.burger false ∧ w e.2=.order false) (hC : Arches (l.map Prod.fst) C) (hD : Arches (l.map Prod.fst) D) (hd : (endpoints (C++D)).Perm (l.map Prod.fst)) (htC : ∀ e∈C,w e.1=.burger true ∧ w e.2=.order true) (htD : ∀ e∈D,w e.1=.burger false ∧ w e.2=.order false) …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.CornerSplit.join, OAI.FKCRT.Inventory.stackTypedRun, OAI.FKCRT.Inventory.D
- lemma
OAI.FKCRT.MapCycles.Arches.mapline 338 - lemma
OAI.FKCRT.MapCycles.endpoints_mapline 346 - lemma
OAI.FKCRT.MapCycles.Arches.filterline 354 - lemma
OAI.FKCRT.MapCycles.endpoints_filterline 375 - theorem
OAI.FKCRT.Inventory.matching_subword_emptyline 393Source documentation
Restrict the actual successful word to any union of its matched pairs. This includes both its root component and each real corner interval.
theorem matching_subword_empty (w : α→TypedLetter) (l : List α) (hn : l.Nodup) (E F : List (α×α)) (hE : Arches l E) (hF : Arches l F) (hc : (endpoints (E++F)).Perm l) (htE : ∀ e∈E,w e.1=.burger true ∧ w e.2=.order true) (htF : ∀ e∈F,w e.1=.burger false ∧ w e.2=.order false) (p : α→Bool) (hp : ∀ d∈l,p (turns (E++F) d)=p d) : stackTypedRun ((l.filter p).map w) []=some [] := by …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.stackTypedRun
- lemma
OAI.FKCRT.MapCycles.turns_map_online 425 - structure
OAI.FKCRT.Inventory.StackMatchingline 443Source documentation
A certificate for the actual two stack matchings of a finite typed word. The matching uniqueness theorem makes its induced mate choice-independent.
structure StackMatching (w : α→TypedLetter) (l : List α) where …
Mentions: OAI.FKCRT.Inventory.TypedLetter
- def
OAI.FKCRT.Inventory.StackMatching.ofEmptyline 455 - def
OAI.FKCRT.Inventory.StackMatching.mateline 461 - lemma
OAI.FKCRT.Inventory.StackMatching.emptyline 463 - lemma
OAI.FKCRT.Inventory.StackMatching.unique_mateline 468 - lemma
OAI.FKCRT.Inventory.StackMatching.involutiveline 474 - lemma
OAI.FKCRT.Inventory.StackMatching.no_fixedline 477 - lemma
OAI.FKCRT.Inventory.StackMatching.endpoints_memline 482 - def
OAI.FKCRT.Inventory.StackMatching.mapline 487 - lemma
OAI.FKCRT.Inventory.StackMatching.map_mateline 505 - lemma
OAI.FKCRT.Inventory.StackMatching.cast_mateline 513 - def
OAI.FKCRT.Inventory.positionEmbeddingline 520Source documentation
The literal increasing compression map, not a fresh random matching.
def positionEmbedding (l : List α) (hs : l.Pairwise (·<·)) : Fin l.length ↪o α := …
- lemma
OAI.FKCRT.Inventory.positions_wordline 524 - theorem
OAI.FKCRT.Inventory.normalized_matching_mateline 529Source documentation
Normalization preserves the actual mate permutation on all positions.
theorem normalized_matching_mate (w : α→TypedLetter) (l : List α) (hs : l.Pairwise (·<·)) (M : StackMatching w l) : ∃ P : StackMatching (w ∘ l.get) (List.finRange l.length), ∀ i,M.mate (l.get i)=l.get (P.mate i) := by …Mentions: OAI.FKCRT.Inventory.TypedLetter, OAI.FKCRT.Inventory.StackMatching
- lemma
OAI.FKCRT.MapCycles.turns_sublist_preservesline 557 - lemma
OAI.FKCRT.Inventory.StackMatching.empty_prefix_preservesline 578 - def
OAI.FKCRT.Inventory.StackMatching.empty_prefix_wedgeline 593Source documentation
A genuine successful inserted interval of the actual typed matching creates a one-vertex union for the full, all-edge map graph. The local graph metric conclusions now follow unconditionally from
GraphWedge.Data.def StackMatching.empty_prefix_wedge {w : α→TypedLetter} (a b : α) (L R : List α) (M : StackMatching w ((a::L)++(b::R))) (hn : ((a::L)++(b::R)).Nodup) (hv : stackTypedRun ((a::L).map w) []=some []) : 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_prefix_distanceline 615Source documentation
Literal all-edge distance preservation for actual typed insertion, not merely the selected spanning tree or a replacement metric.
theorem StackMatching.empty_prefix_distance {w : α→TypedLetter} (a b : α) (L R : List α) (M : StackMatching w ((a::L)++(b::R))) (hn : ((a::L)++(b::R)).Nodup) (hv : stackTypedRun ((a::L).map w) []=some []) (x y : α) (hx : x∈a::L) (hy : y∈a::L) : 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_prefix_cross_distanceline 637Source documentation
Cross-block distances in the original all-edge map add through the unique identified vertex. This includes coincident poles and loop edges.
theorem StackMatching.empty_prefix_cross_distance {w : α→TypedLetter} (a b : α) (L R : List α) (M : StackMatching w ((a::L)++(b::R))) (hn : ((a::L)++(b::R)).Nodup) (hv : stackTypedRun ((a::L).map w) []=some []) (x y : α) (hx : x∈a::L) (hy : y∉a::L) : 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