Connectivity between two sets #
Equations
- G.SetConnected S T = ∃ s ∈ S, ∃ t ∈ T, G.ConnBetween s t
Instances For
@[simp]
theorem Graph.SetConnected.of_le {α : Type u_1} {β : Type u_2} {G H : Graph α β} {S T : Set α} (h : G.SetConnected S T) (hle : G ≤ H) :
H.SetConnected S T
theorem Graph.SetConnected.subset_left {α : Type u_1} {β : Type u_2} {G : Graph α β} {S S' T : Set α} (h : G.SetConnected S T) (hS : S ⊆ S') :
G.SetConnected S' T
theorem Graph.SetConnected.subset_right {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T T' : Set α} (h : G.SetConnected S T) (hT : T ⊆ T') :
G.SetConnected S T'
theorem Graph.SetConnected.subset {α : Type u_1} {β : Type u_2} {G : Graph α β} {S S' T T' : Set α} (h : G.SetConnected S T) (hS : S ⊆ S') (hT : T ⊆ T') :
G.SetConnected S' T'
theorem Graph.setConnected_refl {α : Type u_1} {β : Type u_2} {G : Graph α β} {S : Set α} (h : ¬Disjoint G.vertexSet S) :
G.SetConnected S S
theorem Graph.SetConnected.symm {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} (h : G.SetConnected S T) :
G.SetConnected T S
theorem Graph.SetConnected.vertexSet_inter_left {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} (h : G.SetConnected S T) :
G.SetConnected (G.vertexSet ∩ S) T
theorem Graph.SetConnected.vertexSet_inter_right {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} (h : G.SetConnected S T) :
G.SetConnected S (G.vertexSet ∩ T)
theorem Graph.SetConnected.vertexSet_inter {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} (h : G.SetConnected S T) :
G.SetConnected (G.vertexSet ∩ S) (G.vertexSet ∩ T)
@[simp]
theorem Graph.setConnected_left_union_iff {α : Type u_1} {β : Type u_2} {G : Graph α β} {S S' T : Set α} :
@[simp]
theorem Graph.setConnected_right_union_iff {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T T' : Set α} :
theorem Graph.IsWalkFrom.SetConnected {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} {W : WList α β} (hW : G.IsWalkFrom S T W) :
G.SetConnected S T
theorem Graph.setConnected_iff_exists_isWalkFrom {α : Type u_1} {β : Type u_2} {G : Graph α β} (S T : Set α) :
theorem Graph.SetConnected.exists_isWalkFrom {α : Type u_1} {β : Type u_2} {G : Graph α β} (S T : Set α) :
G.SetConnected S T → ∃ (W : WList α β), G.IsWalkFrom S T W
Alias of the forward direction of Graph.setConnected_iff_exists_isWalkFrom.
theorem Graph.setConnected_iff_exists_isPathFrom {α : Type u_1} {β : Type u_2} {G : Graph α β} (S T : Set α) :
theorem Graph.SetConnected.exists_isPathFrom {α : Type u_1} {β : Type u_2} {G : Graph α β} (S T : Set α) :
G.SetConnected S T → ∃ (P : WList α β), G.IsPathFrom S T P
Alias of the forward direction of Graph.setConnected_iff_exists_isPathFrom.
Cut between two sets #
- subset_vertexSet : C ⊆ G.vertexSet
- ST_disconnects : ¬(G.deleteVerts C).SetConnected S T
Instances For
theorem Graph.isSetCut_empty {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} (h : ¬G.SetConnected S T) :
theorem Graph.IsWalkFrom.exists_mem_isSetCut {α : Type u_1} {β : Type u_2} {G : Graph α β} {C S T : Set α} {W : WList α β} (hW : G.IsWalkFrom S T W) (hC : G.IsSetCut S T C) :
∃ v ∈ W, v ∈ C
theorem Graph.IsSepBetween.isSetCut {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {C : Set α} (hC : G.IsSepBetween s t C) :
theorem Graph.IsSetCut.prefixUntil_disjoint {α : Type u_1} {β : Type u_2} {G : Graph α β} {C S T : Set α} {P : WList α β} [DecidablePred fun (x : α) => x ∈ C] (hP : G.IsWalk P) (hPf : P.first ∈ S) (hPl : P.last ∈ T) (hC : G.IsSetCut S T C) :
Disjoint (P.prefixUntil fun (x : α) => x ∈ C).vertexSet (T \ C)
theorem Graph.IsSetCut.suffixFrom_disjoint {α : Type u_1} {β : Type u_2} {G : Graph α β} {C S T : Set α} {P : WList α β} [DecidablePred fun (x : α) => x ∈ C] (hP : G.IsWalk P) (hPf : P.first ∈ S) (hPl : P.last ∈ T) (hC : G.IsSetCut S T C) :
Disjoint (P.suffixFromLast fun (x : α) => x ∈ C).vertexSet (S \ C)
theorem Graph.IsSetCut.prefixUntil_isWalk_deleteVerts {α : Type u_1} {β : Type u_2} {G : Graph α β} {C S T : Set α} {P : WList α β} [DecidablePred fun (x : α) => x ∈ C] (hP : G.IsWalk P) (hPf : P.first ∈ S) (hPl : P.last ∈ T) (hC : G.IsSetCut S T C) :
(G.deleteVerts (T \ C)).IsWalk (P.prefixUntil fun (x : α) => x ∈ C)
theorem Graph.IsSetCut.suffixFrom_isWalk_deleteVerts {α : Type u_1} {β : Type u_2} {G : Graph α β} {C S T : Set α} {P : WList α β} [DecidablePred fun (x : α) => x ∈ C] (hP : G.IsWalk P) (hPf : P.first ∈ S) (hPl : P.last ∈ T) (hC : G.IsSetCut S T C) :
(G.deleteVerts (S \ C)).IsWalk (P.suffixFromLast fun (x : α) => x ∈ C)
structure Graph.IsEdgeSetCut {α : Type u_1} {β : Type u_2} (G : Graph α β) (S T : Set α) (C : Set β) :
- subset_edgeSet : C ⊆ G.edgeSet
- ST_disconnects : ¬(G.deleteEdges C).SetConnected S T
Instances For
theorem Graph.isEdgeSetCut_empty {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} (h : ¬G.SetConnected S T) :
G.IsEdgeSetCut S T ∅
theorem Graph.IsWalkFrom.not_disjoint_isEdgeSetCut {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} {F : Set β} {W : WList α β} (hW : G.IsWalkFrom S T W) (hC : G.IsEdgeSetCut S T F) :
theorem Graph.IsWalkFrom.exists_mem_isEdgeSetCut {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} {F : Set β} {W : WList α β} (hW : G.IsWalkFrom S T W) (hC : G.IsEdgeSetCut S T F) :
Equations
- Graph.inc_vert e = ⋯.choose
Instances For
theorem Graph.IsEdgeSetCut.isSetCut {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} {F : Set β} (hF : G.IsEdgeSetCut S T F) :
G.IsSetCut S T (inc_vert '' Subtype.val ⁻¹' F)
Ensemble of paths between two sets #
def Graph.SetEnsemble.between {α : Type u_1} {β : Type u_2} {G : Graph α β} (A : G.SetEnsemble) (S T : Set α) :
Instances For
def Graph.SetEnsemble.vertexPartition {α : Type u_1} {β : Type u_2} {G : Graph α β} (A : G.SetEnsemble) :
Equations
Instances For
@[simp]
theorem Graph.SetEnsemble.vertexSet_mem_vertexPartition {α : Type u_1} {β : Type u_2} {G : Graph α β} {P : WList α β} (A : G.SetEnsemble) (hP : P ∈ A.paths) :
def Graph.SetEnsemble.vertexSet {α : Type u_1} {β : Type u_2} {G : Graph α β} (A : G.SetEnsemble) :
Set α
Equations
Instances For
theorem Graph.SetEnsemble.vertexSet_subset {α : Type u_1} {β : Type u_2} {G : Graph α β} (A : G.SetEnsemble) :
theorem Graph.SetEnsemble.vertexSet_eq_biUnion {α : Type u_1} {β : Type u_2} {G : Graph α β} (A : G.SetEnsemble) :
theorem Graph.SetEnsemble.image_first_subset {α : Type u_1} {β : Type u_2} {G : Graph α β} (A : G.SetEnsemble) :
WList.first '' A.paths ⊆ A.vertexSet
theorem Graph.SetEnsemble.image_last_subset {α : Type u_1} {β : Type u_2} {G : Graph α β} (A : G.SetEnsemble) :
WList.last '' A.paths ⊆ A.vertexSet
Equations
- Graph.SetEnsemble.empty G = { paths := ∅, disjoint := ⋯, valid := ⋯ }
Instances For
@[simp]
theorem Graph.SetEnsemble.single_between {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} {P : WList α β} (hP : G.IsPathFrom S T P) :
noncomputable def Graph.SetEnsemble.of_vertex {α : Type u_1} {β : Type u_2} {G : Graph α β} (A : G.SetEnsemble) (v : α) (hv : v ∈ A.vertexSet) :
WList α β
Equations
- A.of_vertex v hv = Exists.choose ⋯
Instances For
@[simp]
theorem Graph.SetEnsemble.mem_of_vertex {α : Type u_1} {β : Type u_2} {G : Graph α β} {v : α} {A : G.SetEnsemble} (hv : v ∈ A.vertexSet) :
theorem Graph.SetEnsemble.of_vertex_injOn_first {α : Type u_1} {β : Type u_2} {G : Graph α β} {u v : α} {A : G.SetEnsemble} (hu : u ∈ WList.first '' A.paths) (hv : v ∈ WList.first '' A.paths) :
theorem Graph.SetEnsemble.of_vertex_injOn_last {α : Type u_1} {β : Type u_2} {G : Graph α β} {u v : α} {A : G.SetEnsemble} (hu : u ∈ WList.last '' A.paths) (hv : v ∈ WList.last '' A.paths) :
theorem Graph.SetEnsemble.between.image_last_eq_inter {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} {A : G.SetEnsemble} (hAST : A.between S T) :
theorem Graph.SetEnsemble.between.image_first_eq_inter {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} {A : G.SetEnsemble} (hAST : A.between S T) :
k-connectivity between two sets #
@[simp]
theorem Graph.setConnectivity_vertexSet_inter_left {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} :
@[simp]
theorem Graph.setConnectivity_vertexSet_inter_right {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} :
@[simp]
theorem Graph.one_le_setConnectivity_iff {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T : Set α} :
theorem Graph.setConnectivity_le_deleteVert_add_encard {α : Type u_1} {β : Type u_2} (G : Graph α β) (S T X : Set α) :
G.setConnectivity S T ≤ (G.deleteVerts X).setConnectivity (S \ X) (T \ X) + (X ∩ G.vertexSet).encard
theorem Graph.setConnectivity_left_mono {α : Type u_1} {β : Type u_2} {G : Graph α β} {S S' T : Set α} (hS : S ⊆ S') :
theorem Graph.setConnectivity_right_mono {α : Type u_1} {β : Type u_2} {G : Graph α β} {S T T' : Set α} (hT : T ⊆ T') :
@[simp]
theorem Graph.SetConnGE.SetConnected {α : Type u_1} {β : Type u_2} {G : Graph α β} {n : ℕ} {S T : Set α} (h : G.SetConnGE S T n) (hn : n ≠ 0) :
G.SetConnected S T
Equations
- G.EdgeSetConnGE S T n = ∀ ⦃F : Set β⦄, G.IsEdgeSetCut S T F → ↑n ≤ F.encard
Instances For
@[simp]
theorem Graph.EdgeSetConnGE_zero {α : Type u_1} {β : Type u_2} (G : Graph α β) (S T : Set α) :
G.EdgeSetConnGE S T 0
theorem Graph.EdgeSetConnGE.anti_right {α : Type u_1} {β : Type u_2} {G : Graph α β} {n m : ℕ} {S T : Set α} (hle : n ≤ m) (h : G.EdgeSetConnGE S T m) :
G.EdgeSetConnGE S T n
@[simp]