Separation: Bellenbaum--Diestel's Lemma 1 and Lemma 4, and components #
Three independent ingredients of the Seymour--Thomas induction:
separates_of_mem_anc— Lemma 1 in the shape the proof uses: iftlies on the tree path from a node holdingato the distinguished nodes, while no node holdingbis belowt, then every walk fromatobinsideUmeetsbag t.Bramble.isHittingSet_of_separates— Lemma 4: a set separating two covers of a bramble covers it. (One line on paper; the Lean proof has to produce the walk inside a member.)awayGraph,compOf,IsComponent— the components ofH − X, kept on the ambient vertex typeVso that no subtype coercion enters the recursion. There is deliberately no "finset of all components": the gluing induction ofSeymourThomasInduction.leanpeels one component off a closed set at a time.
Lemma 1 #
Bellenbaum--Diestel Lemma 1, in the only shape the duality proof uses.
na is a node holding a and lying below t (that is, t is on the tree path
from na to s); nb is a node holding b and not below t. Then bag t
separates a from b inside U.
Note that no t ≠ s hypothesis is needed: s ∈ Anc hT s nb always, so h2
already forces t ≠ s.
Discharge plan (the σ-colouring argument of the blueprint §3.4). For u ∈ U
with u ∉ bag t, D.coherent makes S u := {n | u ∈ bag n} connected and it
misses t, so subset_below_or_disjoint puts it wholly inside Below or
wholly outside. Along an H-edge inside U, D.cover_edge supplies a node in
both S u and S u', so the side is the same at both ends; induct along the
walk. The two endpoints have opposite sides by h1/h2.
Lemma 4 #
Bellenbaum--Diestel Lemma 4. Any set separating two covers of a bramble also covers that bramble.
"Separating" is spelled walk-wise, which is the form
SeymourThomasInduction.lean produces and the form that avoids introducing a
separator predicate.
Discharge plan: for M ∈ 𝔅.members, hA/hB give a ∈ M ∩ A and b ∈ M ∩ B;
𝔅.connected_mem M gives a walk between them in H.induce ↑M, which maps down
to an H-walk with support inside M (SimpleGraph.Embedding.induce); hsep
puts a vertex of S on it, and that vertex is in M.
C is a connected component of H − X: nonempty, disjoint from X,
inducing a connected subgraph of H, and closed under taking H-neighbours
outside X.
- notMem (v : V) : v ∈ C → v ∉ X
No vertex of
Clies inX. - nonempty : C.Nonempty
Cis nonempty. - connected : (SimpleGraph.induce (↑C) H).Connected
Cinduces a connected subgraph ofH.
Instances For
The component of v inside a set R. R is intended to be closed under
awayGraph H X-adjacency, in which case the filter by R is vacuous and this
is the full component of v.
Equations
- Utilities.Treewidth.compOf H X R v = {w ∈ R | (Utilities.Treewidth.awayGraph H X).Reachable v w}
Instances For
A set of vertices outside X closed under awayGraph-adjacency.
Equations
- Utilities.Treewidth.IsClosedAway H X R = ((∀ v ∈ R, v ∉ X) ∧ ∀ a ∈ R, ∀ (b : V), (Utilities.Treewidth.awayGraph H X).Adj a b → b ∈ R)
Instances For
Inside a closed set, compOf really is a component.
Discharge plan: notMem from IsClosedAway.1 and compOf_subset; nonempty
from mem_compOf_self; closed because an H-edge out of C to a vertex
outside X is an awayGraph edge, so the target is reachable and (by closure of
R) in R; connected by transporting awayGraph-walks with
SimpleGraph.Walk.mapLe (awayGraph_le H X) and then SimpleGraph.Walk.induce,
the support staying inside C because reachability is transitive.
Removing a component from a closed set leaves a closed set.
A component is nonempty, so removing it strictly shrinks the set.