Connectivity between two vertices #
theorem Graph.ConnBetween.refl {α : Type u_1} {β : Type u_2} {G : Graph α β} {x : α} (hx : x ∈ G.vertexSet) :
G.ConnBetween x x
theorem Graph.ConnBetween.symm {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} (h : G.ConnBetween x y) :
G.ConnBetween y x
theorem Graph.ConnBetween.left_mem {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} (hxy : G.ConnBetween x y) :
theorem Graph.ConnBetween.right_mem {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} (hxy : G.ConnBetween x y) :
theorem Graph.ConnBetween.trans {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y z : α} (hxy : G.ConnBetween x y) (hyz : G.ConnBetween y z) :
G.ConnBetween x z
instance Graph.instIsTransConnBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} :
IsTrans α G.ConnBetween
@[simp]
theorem Graph.Adj.connBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} (h : G.Adj x y) :
G.ConnBetween x y
theorem Graph.IsLink.connBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} {e : β} (h : G.IsLink e x y) :
G.ConnBetween x y
theorem Graph.ConnBetween.mono {α : Type u_1} {β : Type u_2} {G H : Graph α β} {x y : α} (hle : H ≤ G) (h : H.ConnBetween x y) :
G.ConnBetween x y
@[simp]
theorem Graph.not_connBetween_of_left_not_mem {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} (hx : x ∉ G.vertexSet) :
¬G.ConnBetween x y
@[simp]
theorem Graph.not_connBetween_of_right_not_mem {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} (hy : y ∉ G.vertexSet) :
¬G.ConnBetween x y
theorem Graph.IsWalk.connBetween_of_mem_of_mem {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} {W : WList α β} (hW : G.IsWalk W) (hx : x ∈ W) (hy : y ∈ W) :
G.ConnBetween x y
theorem Graph.IsWalk.connBetween_first_last {α : Type u_1} {β : Type u_2} {G : Graph α β} {W : WList α β} (hW : G.IsWalk W) :
G.ConnBetween W.first W.last
theorem Graph.IsComplete.connBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} (h : G.IsComplete) (hs : s ∈ G.vertexSet) (ht : t ∈ G.vertexSet) :
G.ConnBetween s t
theorem Graph.ConnBetween.isClosedSubgraph {α : Type u_1} {β : Type u_2} {G H : Graph α β} {x y : α} (h : G.ConnBetween x y) (hle : H.IsClosedSubgraph G) (hx : x ∈ H.vertexSet) :
H.ConnBetween x y
theorem Graph.Isolated.connBetween_iff_eq {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} (hisol : G.Isolated x) :
theorem Graph.connBetween_iff_reflTransGen_adj {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} :
theorem Graph.connBetween_map_iff_of_injective {α : Type u_1} {β : Type u_2} {G : Graph α β} {x y : α} {α' : Type u_5} {φ : α → α'} (hφ : Function.Injective φ) :
Separators between two vertices #
- subset : C ⊆ G.vertexSet
- left_not_mem : s ∉ C
- right_not_mem : t ∉ C
- not_connBetween : ¬(G.deleteVerts C).ConnBetween s t
Instances For
theorem Graph.IsSepBetween.symm {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {X : Set α} (hX : G.IsSepBetween s t X) :
G.IsSepBetween t s X
instance Graph.instSymmIsSepBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} {X : Set α} :
Std.Symm fun (x1 x2 : α) => G.IsSepBetween x1 x2 X
theorem Graph.not_isSepBetween_self {α : Type u_1} {β : Type u_2} {G : Graph α β} {s : α} {X : Set α} (hs : s ∈ G.vertexSet) :
¬G.IsSepBetween s s X
theorem Graph.IsLink.not_isSepBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {e : β} {X : Set α} (he : G.IsLink e s t) :
¬G.IsSepBetween s t X
theorem Graph.Adj.not_isSepBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {X : Set α} (h : G.Adj s t) :
¬G.IsSepBetween s t X
theorem Graph.isSepBetween_empty {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} (h : ¬G.ConnBetween s t) :
G.IsSepBetween s t ∅
theorem Graph.IsSepBetween.of_le {α : Type u_1} {β : Type u_2} {G H : Graph α β} {s t : α} {X : Set α} (hX : G.IsSepBetween s t X) (hle : H ≤ G) :
H.IsSepBetween s t (H.vertexSet ∩ X)
theorem Graph.IsComplete.not_isSepBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {X : Set α} (h : G.IsComplete) (hs : s ∈ G.vertexSet) (ht : t ∈ G.vertexSet) :
¬G.IsSepBetween s t X
theorem Graph.isSepBetween_of_deleteVerts {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {X : Set α} (h : ¬(G.deleteVerts X).ConnBetween s t) (hs : s ∉ X) (ht : t ∉ X) :
G.IsSepBetween s t (G.vertexSet ∩ X)
structure Graph.IsEdgeCutBetween {α : Type u_1} {β : Type u_2} (G : Graph α β) (F : Set β) (s t : α) :
- subset_edgeSet : F ⊆ G.edgeSet
- not_connBetween : ¬(G.deleteEdges F).ConnBetween s t
Instances For
theorem Graph.isEdgeCutBetween_iff {α : Type u_1} {β : Type u_2} (G : Graph α β) (F : Set β) (s t : α) :
theorem Graph.not_isEdgeCutBetween_self {α : Type u_1} {β : Type u_2} {G : Graph α β} {s : α} {F : Set β} (hs : s ∈ G.vertexSet) :
¬G.IsEdgeCutBetween F s s
theorem Graph.isEdgeCutBetween_empty {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} (h : ¬G.ConnBetween s t) :
G.IsEdgeCutBetween ∅ s t
theorem Graph.IsEdgeCutBetween.of_le {α : Type u_1} {β : Type u_2} {G H : Graph α β} {s t : α} {F : Set β} (hF : G.IsEdgeCutBetween F s t) (hle : H ≤ G) :
H.IsEdgeCutBetween (H.edgeSet ∩ F) s t
Ensemble of paths between two vertices #
structure Graph.VertexEnsemble {α : Type u_1} {β : Type u_2} (G : Graph α β) (s t : α) (ι : Type u_5) extends G.PathEnsemble s t ι :
Type (max (max u_1 u_2) u_5)
- internallyDisjoint : Graph.internallyDisjoint s t self.f
Instances For
def Graph.VertexEnsemble.edgeDisjoint {α : Type u_1} {β : Type u_2} {ι : Type u_3} {G : Graph α β} {s t : α} (P : G.VertexEnsemble s t ι) :
Equations
Instances For
theorem Graph.VertexEnsemble.nonempty_of_ne {α : Type u_1} {β : Type u_2} {ι : Type u_3} {G : Graph α β} {s t : α} (P : G.VertexEnsemble s t ι) (hne : s ≠ t) (i : ι) :
theorem Graph.VertexEnsemble.nontrivial_of_not_adj {α : Type u_1} {β : Type u_2} {ι : Type u_3} {G : Graph α β} {s t : α} (P : G.VertexEnsemble s t ι) (hne : s ≠ t) (hadj : ¬G.Adj s t) (i : ι) :
(P.f i).Nontrivial
def Graph.vertexEnsemble_empty {α : Type u_1} {β : Type u_2} (G : Graph α β) (s t : α) (ι : Type u_5) [h : IsEmpty ι] :
G.VertexEnsemble s t ι
Equations
- G.vertexEnsemble_empty s t ι = { f := fun (x : ι) => WList.nil s, isPath := ⋯, first_eq := ⋯, last_eq := ⋯, internallyDisjoint := ⋯ }
Instances For
@[simp]
theorem Graph.vertexEnsemble_empty_edgeDisjoint {α : Type u_1} {β : Type u_2} {ι : Type u_3} {G : Graph α β} {s t : α} [h : IsEmpty ι] :
(G.vertexEnsemble_empty s t ι).edgeDisjoint
def Graph.vertexEnsemble_nil {α : Type u_1} {β : Type u_2} {s : α} (G : Graph α β) (h : s ∈ G.vertexSet) (ι : Type u_5) :
G.VertexEnsemble s s ι
Equations
- G.vertexEnsemble_nil h ι = { f := fun (x : ι) => WList.nil s, isPath := ⋯, first_eq := ⋯, last_eq := ⋯, internallyDisjoint := ⋯ }
Instances For
@[simp]
theorem Graph.vertexEnsemble_nil_edgeDisjoint {α : Type u_1} {β : Type u_2} {ι : Type u_3} {G : Graph α β} {s : α} (h : s ∈ G.vertexSet) :
(G.vertexEnsemble_nil h ι).edgeDisjoint
def Graph.IsLink.vertexEnsemble {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {e : β} (ι : Type u_5) (h : G.IsLink e s t) (hne : s ≠ t) :
G.VertexEnsemble s t ι
Equations
- Graph.IsLink.vertexEnsemble ι h hne = { f := fun (x : ι) => WList.cons s e (WList.nil t), isPath := ⋯, first_eq := ⋯, last_eq := ⋯, internallyDisjoint := ⋯ }
Instances For
def Graph.IsPath.vertexEnsemble {α : Type u_1} {β : Type u_2} {G : Graph α β} {P : WList α β} (h : G.IsPath P) :
Equations
- h.vertexEnsemble = { f := fun (x : PUnit.{?u.1 + 1}) => P, isPath := ⋯, first_eq := ⋯, last_eq := ⋯, internallyDisjoint := ⋯ }
Instances For
@[simp]
theorem Graph.IsPath.vertexEnsemble_f {α : Type u_1} {β : Type u_2} {G : Graph α β} {P : WList α β} (h : G.IsPath P) (x✝ : PUnit.{u_5 + 1}) :
def Graph.VertexEnsemble.comp {α : Type u_1} {β : Type u_2} {ι : Type u_3} {ι' : Type u_4} {G : Graph α β} {s t : α} (P : G.VertexEnsemble s t ι) (f : ι' ↪ ι) :
G.VertexEnsemble s t ι'
Equations
Instances For
@[simp]
theorem Graph.VertexEnsemble.comp_edgeDisjoint {α : Type u_1} {β : Type u_2} {ι : Type u_3} {ι' : Type u_4} {G : Graph α β} {s t : α} {P : G.VertexEnsemble s t ι} (hP : P.edgeDisjoint) (f : ι' ↪ ι) :
(P.comp f).edgeDisjoint
def Graph.VertexEnsemble.of_le {α : Type u_1} {β : Type u_2} {ι : Type u_3} {G H : Graph α β} {s t : α} (P : H.VertexEnsemble s t ι) (hle : H ≤ G) :
G.VertexEnsemble s t ι
Equations
Instances For
@[simp]
theorem Graph.VertexEnsemble.of_le_edgeDisjoint {α : Type u_1} {β : Type u_2} {ι : Type u_3} {G H : Graph α β} {s t : α} {P : H.VertexEnsemble s t ι} (hP : P.edgeDisjoint) (hle : H ≤ G) :
(P.of_le hle).edgeDisjoint
def Graph.VertexEnsemble.sum {α : Type u_1} {β : Type u_2} {ι : Type u_3} {ι' : Type u_4} {G : Graph α β} {s t : α} (P : G.VertexEnsemble s t ι) (Q : G.VertexEnsemble s t ι') (h : Disjoint P.vertexSet Q.vertexSet) :
G.VertexEnsemble s t (ι ⊕ ι')
Equations
Instances For
Ensemble of edge-disjoint paths between two vertices #
structure Graph.EdgePathEnsemble {α : Type u_1} {β : Type u_2} (G : Graph α β) (s t : α) (ι : Type u_5) extends G.PathEnsemble s t ι :
Type (max (max u_1 u_2) u_5)
An indexed family of s–t paths whose edge sets are pairwise disjoint.
- edgeDisjoint : Pairwise (Function.onFun (Function.onFun Disjoint WList.edgeSet) self.f)
Instances For
def Graph.edgePathEnsemble_empty {α : Type u_1} {β : Type u_2} (G : Graph α β) (s t : α) (ι : Type u_5) [h : IsEmpty ι] :
G.EdgePathEnsemble s t ι
Equations
- G.edgePathEnsemble_empty s t ι = { f := fun (x : ι) => h.elim x, isPath := ⋯, first_eq := ⋯, last_eq := ⋯, edgeDisjoint := ⋯ }
Instances For
def Graph.edgePathEnsemble_nil {α : Type u_1} {β : Type u_2} {s : α} (G : Graph α β) (h : s ∈ G.vertexSet) (ι : Type u_5) :
G.EdgePathEnsemble s s ι
Equations
- G.edgePathEnsemble_nil h ι = { f := fun (x : ι) => WList.nil s, isPath := ⋯, first_eq := ⋯, last_eq := ⋯, edgeDisjoint := ⋯ }
Instances For
def Graph.IsPath.edgePathEnsemble {α : Type u_1} {β : Type u_2} {G : Graph α β} {P : WList α β} (h : G.IsPath P) :
Equations
- h.edgePathEnsemble = { f := fun (x : PUnit.{?u.1 + 1}) => P, isPath := ⋯, first_eq := ⋯, last_eq := ⋯, edgeDisjoint := ⋯ }
Instances For
@[simp]
theorem Graph.IsPath.edgePathEnsemble_f {α : Type u_1} {β : Type u_2} {G : Graph α β} {P : WList α β} (h : G.IsPath P) (x✝ : PUnit.{u_5 + 1}) :
def Graph.EdgePathEnsemble.comp {α : Type u_1} {β : Type u_2} {ι : Type u_3} {ι' : Type u_4} {G : Graph α β} {s t : α} (P : G.EdgePathEnsemble s t ι) (g : ι' ↪ ι) :
G.EdgePathEnsemble s t ι'
Instances For
def Graph.EdgePathEnsemble.of_le {α : Type u_1} {β : Type u_2} {ι : Type u_3} {G H : Graph α β} {s t : α} (P : H.EdgePathEnsemble s t ι) (hle : H ≤ G) :
G.EdgePathEnsemble s t ι
Instances For
def Graph.EdgePathEnsemble.ofVertexEnsemble {α : Type u_1} {β : Type u_2} {ι : Type u_3} {G : Graph α β} {s t : α} (P : G.VertexEnsemble s t ι) (h : {i : ι | ¬(P.f i).Nontrivial}.Subsingleton) :
G.EdgePathEnsemble s t ι
Equations
- Graph.EdgePathEnsemble.ofVertexEnsemble P h = { f := P.f, isPath := ⋯, first_eq := ⋯, last_eq := ⋯, edgeDisjoint := ⋯ }
Instances For
k-connectivity between two vertices #
Equations
- G.ConnBetweenGE s t n = ∀ ⦃C : Set α⦄, G.IsSepBetween s t C → ↑n ≤ C.encard
Instances For
noncomputable def Graph.connectivityBetween {α : Type u_1} {β : Type u_2} (G : Graph α β) (s t : α) :
Minimum C.encard over vertex separators C between s and t, as an ℕ∞.
Equations
- G.connectivityBetween s t = ⨅ (C : { C : Set α // G.IsSepBetween s t C }), (↑C).encard
Instances For
theorem Graph.le_connectivityBetween_iff {α : Type u_1} {β : Type u_2} {G : Graph α β} {k : ℕ∞} (s t : α) :
theorem Graph.connBetweenGE_iff_le_connectivityBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} (s t : α) (n : ℕ) :
@[simp]
theorem Graph.connBetweenGE_zero {α : Type u_1} {β : Type u_2} (G : Graph α β) (s t : α) :
G.ConnBetweenGE s t 0
theorem Graph.ConnBetweenGE.anti_right {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {n m : ℕ} (hle : n ≤ m) (h : G.ConnBetweenGE s t m) :
G.ConnBetweenGE s t n
theorem Graph.ConnBetweenGE.symm {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {n : ℕ} (h : G.ConnBetweenGE s t n) :
G.ConnBetweenGE t s n
instance Graph.instSymmConnBetweenGE {α : Type u_1} {β : Type u_2} {G : Graph α β} {n : ℕ} :
Std.Symm fun (x1 x2 : α) => G.ConnBetweenGE x1 x2 n
@[simp]
theorem Graph.ConnBetweenGE.left_mem {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {n : ℕ} (h : G.ConnBetweenGE s t n) (hn : n ≠ 0) :
theorem Graph.ConnBetweenGE.right_mem {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {n : ℕ} (h : G.ConnBetweenGE s t n) (hn : n ≠ 0) :
@[simp]
theorem Graph.connBetweenGE_self {α : Type u_1} {β : Type u_2} {G : Graph α β} {s : α} (hs : s ∈ G.vertexSet) (n : ℕ) :
G.ConnBetweenGE s s n
theorem Graph.IsLink.connBetweenGE {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {e : β} (h : G.IsLink e s t) (n : ℕ) :
G.ConnBetweenGE s t n
theorem Graph.Adj.connBetweenGE {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} (h : G.Adj s t) (n : ℕ) :
G.ConnBetweenGE s t n
theorem Graph.ConnBetweenGE.of_le {α : Type u_1} {β : Type u_2} {G H : Graph α β} {s t : α} {n : ℕ} (h : H.ConnBetweenGE s t n) (hle : H ≤ G) :
G.ConnBetweenGE s t n
theorem Graph.IsComplete.connBetweenGE {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} (h : G.IsComplete) (hs : s ∈ G.vertexSet) (ht : t ∈ G.vertexSet) (n : ℕ) :
G.ConnBetweenGE s t n
Equations
- G.EdgeConnBetweenGE s t n = ∀ ⦃F : Set β⦄, G.IsEdgeCutBetween F s t → ↑n ≤ F.encard
Instances For
noncomputable def Graph.edgeConnectivityBetween {α : Type u_1} {β : Type u_2} (G : Graph α β) (s t : α) :
Minimum F.encard over edge cuts F between s and t, as an ℕ∞.
Equations
- G.edgeConnectivityBetween s t = ⨅ (F : { F : Set β // G.IsEdgeCutBetween F s t }), (↑F).encard
Instances For
theorem Graph.le_edgeConnectivityBetween_iff {α : Type u_1} {β : Type u_2} {G : Graph α β} {k : ℕ∞} (s t : α) :
theorem Graph.edgeConnBetweenGE_iff_le_edgeConnectivityBetween {α : Type u_1} {β : Type u_2} {G : Graph α β} (s t : α) (n : ℕ) :
@[simp]
theorem Graph.edgeConnBetweenGE_zero {α : Type u_1} {β : Type u_2} (G : Graph α β) (s t : α) :
G.EdgeConnBetweenGE s t 0
theorem Graph.EdgeConnBetweenGE.anti_right {α : Type u_1} {β : Type u_2} {G : Graph α β} {s t : α} {n m : ℕ} (hle : n ≤ m) (h : G.EdgeConnBetweenGE s t m) :
G.EdgeConnBetweenGE s t n
@[simp]
theorem Graph.edgeConnBetweenGE_self {α : Type u_1} {β : Type u_2} {G : Graph α β} {s : α} (hs : s ∈ G.vertexSet) (n : ℕ) :
G.EdgeConnBetweenGE s s n
theorem Graph.EdgeConnBetweenGE.of_le {α : Type u_1} {β : Type u_2} {G H : Graph α β} {s t : α} {n : ℕ} (h : H.EdgeConnBetweenGE s t n) (hle : H ≤ G) :
G.EdgeConnBetweenGE s t n