OAI/Combinatorics/KServer/MetricMatching.lean
63 declarations, 0 contain sorry, 0 declared as axioms
In a finite laminar tree, one matching simultaneously has the optimal crossing count at every cut. This is proved by the uncrossing minimizer, rather than assuming a transport/matching interface.
- def
OAI.KServer.LaminarMatching.Laminarline 16 - def
OAI.KServer.LaminarMatching.bitline 20 - def
OAI.KServer.LaminarMatching.crossline 22 - def
OAI.KServer.LaminarMatching.costline 25 - lemma
OAI.KServer.LaminarMatching.pair_inequalityline 27 - lemma
OAI.KServer.LaminarMatching.laminar_pairline 32 - lemma
OAI.KServer.LaminarMatching.two_term_sumline 43 - lemma
OAI.KServer.LaminarMatching.swapped_cutsline 59 - lemma
OAI.KServer.LaminarMatching.swapped_strictline 74 - lemma
OAI.KServer.LaminarMatching.bit_ltline 88 - lemma
OAI.KServer.LaminarMatching.minimizing_orientedline 92Source documentation
An optimal permutation has no opposite crossings at any cut.
lemma minimizing_oriented {c:V→Z→Bool} (hc:Laminar c) (f g:I→Z) (π:Equiv.Perm I) (hm:∀ ρ,cost c f g π≤cost c f g ρ) (v:V): (∀ i,bit (c v (f i))≤bit (c v (g (π i)))) ∨ (∀ i,bit (c v (g (π i)))≤bit (c v (f i))):=by …Mentions: OAI.KServer.LaminarMatching.Laminar, OAI.KServer.LaminarMatching.cost, OAI.KServer.LaminarMatching.bit
- lemma
OAI.KServer.LaminarMatching.oriented_crossline 108 - theorem
OAI.KServer.LaminarMatching.exists_simultaneousline 123Source documentation
One matching is optimal at every member of the laminar family.
theorem exists_simultaneous {c:V→Z→Bool} (hc:Laminar c) (f g:I→Z): ∃ π:Equiv.Perm I,∀ v,(∑ i,cross c f g π v i)= |(∑ i,bit (c v (f i)))-(∑ i,bit (c v (g i)))|:=by …Mentions: OAI.KServer.LaminarMatching.Laminar, OAI.KServer.LaminarMatching.cross, OAI.KServer.LaminarMatching.bit
- lemma
OAI.KServer.Rounding.Tree.under_transline 140 - lemma
OAI.KServer.Rounding.Tree.ancestors_comparableline 159 - lemma
OAI.KServer.Rounding.Tree.laminarline 180 - def
OAI.KServer.Rounding.Tree.cutDistanceline 205 - lemma
OAI.KServer.Rounding.Tree.cutDistance_symmline 208 - lemma
OAI.KServer.Rounding.Tree.cutDistance_selfline 213 - lemma
OAI.KServer.Rounding.Tree.cutDistance_peelline 216 - lemma
OAI.KServer.Rounding.Tree.under_false_of_ltline 230 - theorem
OAI.KServer.Rounding.Tree.metric_le_cutDistanceline 236 - theorem
OAI.KServer.Rounding.Tree.exists_metric_matchingline 259Source documentation
Actual permutation, not an assumed coupling cost bound.
theorem Tree.exists_metric_matching {X I:Type*} [PseudoMetricSpace X] [Fintype I] (T:Tree n) (a:Fin n→X) (w:Fin n→ℝ) (he:∀ u,u≠0→dist (a u) (a (T.parent u))≤w u) (f g:I→Fin n): ∃ π:Equiv.Perm I,(∑ i,dist (a (f i)) (a (g (π i))))≤ ∑ v,w v*|(∑ i,T.indicator v (f i))-(∑ i,T.indicator v (g i))|:=by …Mentions: OAI.KServer.Rounding.Tree
- lemma
OAI.KServer.Rounding.Tree.parent_underline 293 - lemma
OAI.KServer.Rounding.Tree.path_childline 300 - lemma
OAI.KServer.Rounding.Tree.common_cutline 317 - lemma
OAI.KServer.Rounding.Tree.distinct_le_cutline 339 - lemma
OAI.KServer.PrefixTree.hit_parentline 367 - lemma
OAI.KServer.PrefixTree.under_depthline 378 - lemma
OAI.KServer.PrefixTree.under_hitline 399 - def
OAI.KServer.PrefixTree.nodeAnchorline 430 - def
OAI.KServer.PrefixTree.nodeMotionline 435 - lemma
OAI.KServer.PrefixTree.last_noneline 440 - lemma
OAI.KServer.PrefixTree.last_depthline 452 - lemma
OAI.KServer.PrefixTree.weight_underline 460 - lemma
OAI.KServer.PrefixTree.anchor_witnessline 465 - lemma
OAI.KServer.PrefixTree.witnessed_common_boundline 481 - def
OAI.KServer.TreeRounding.Tree.toTravelline 546 - lemma
OAI.KServer.TreeRounding.Tree.consistent_parkline 551 - lemma
OAI.KServer.TreeRounding.Tree.park_nats_sumline 558 - def
OAI.KServer.TreeRounding.countEquivline 576 - def
OAI.KServer.TreeRounding.slotsline 581 - lemma
OAI.KServer.TreeRounding.slots_sumline 585 - lemma
OAI.KServer.TreeRounding.slots_subtreeline 597 - lemma
OAI.KServer.TreeRounding.slots_positiveline 604 - theorem
OAI.KServer.Rounding.Tree.exists_cross_matchingline 624 - def
OAI.KServer.TreeRounding.Goodline 666 - abbrev
OAI.KServer.TreeRounding.Inventoryline 668 - def
OAI.KServer.TreeRounding.Inventory.slotsline 670 - lemma
OAI.KServer.TreeRounding.Inventory.slots_injectiveline 673 - instance
OAI.KServer.TreeRounding.inventoryFintypeline 696 - lemma
OAI.KServer.TreeRounding.stock_goodline 699 - instance
OAI.KServer.TreeRounding.inventoryNonemptyline 703 - def
OAI.KServer.TreeRounding.packline 705 - lemma
OAI.KServer.TreeRounding.pack_valline 707 - lemma
OAI.KServer.TreeRounding.good_of_validline 710 - def
OAI.KServer.PrefixTree.countConfigline 728 - lemma
OAI.KServer.PrefixTree.count_matchingline 731 - lemma
OAI.KServer.TreeRounding.Inventory.slot_existsline 807 - lemma
OAI.KServer.TreeRounding.Inventory.valid_slot_positiveline 814 - lemma
OAI.KServer.TreeRounding.balanced_one_leline 825 - lemma
OAI.KServer.PrefixTree.count_witnessline 835 - lemma
OAI.KServer.PrefixTree.nodeMotion_sumline 856