@@ -16,8 +16,10 @@ This file defines k-vertex connectivity for simple graphs.
1616
1717* `SimpleGraph.IsVertexReachable`: Two vertices are `k`-vertex-reachable if they remain reachable
1818 after removing strictly fewer than `k` other vertices.
19- * `SimpleGraph.IsVertexConnected `: A graph is `k`-vertex-connected if any two vertices
19+ * `SimpleGraph.IsVertexPreconnected `: A graph is `k`-vertex-preconnected if any two vertices
2020 are `k`-vertex-reachable.
21+ * `SimpleGraph.IsVertexConnected`: A graph is `k`-vertex-connected if its order is at least
22+ `k + 1` and any two vertices are `k`-vertex-reachable.
2123 -/
2224
2325@[expose] public section
@@ -77,40 +79,71 @@ lemma isVertexReachable_one_iff : G.IsVertexReachable 1 u v ↔ G.Reachable u v
7779 rwa [Set.encard_eq_zero.mp <| ENat.lt_one_iff_eq_zero.mp hs, isolateVerts_empty]
7880
7981variable (G k) in
80- /-- A graph is `k`-vertex-connected if any two vertices are `k`-vertex-reachable.
81- Note that we do not require the graph to have more than `k` vertices, you can use
82- `k + 1 ≤ ENat.card V ∧ G.IsVertexConnected k` if you need this additional condition. -/
83- def IsVertexConnected : Prop :=
82+ /-- A graph is `k`-vertex-preconnected if any two vertices are `k`-vertex-reachable. -/
83+ def IsVertexPreconnected : Prop :=
8484 ∀ u v : V, G.IsVertexReachable k u v
8585
8686@[simp]
87- lemma IsVertexConnected .zero : G.IsVertexConnected 0 :=
87+ lemma IsVertexPreconnected .zero : G.IsVertexPreconnected 0 :=
8888 fun _ _ ↦ .zero
8989
90- /-- 1-vertex-connectivity is equivalent to preconnectedness. -/
90+ /-- 1-vertex-preconnectivity is equivalent to preconnectedness. -/
9191@[simp]
92- lemma isVertexConnected_one : G.IsVertexConnected 1 ↔ G.Preconnected := by
93- simp [IsVertexConnected , isVertexReachable_one_iff, Preconnected]
92+ lemma isVertexPreconnected_one : G.IsVertexPreconnected 1 ↔ G.Preconnected := by
93+ simp [IsVertexPreconnected , isVertexReachable_one_iff, Preconnected]
9494
95- /-- A preconnected graph is 1-vertex-connected . -/
96- lemma Preconnected.isVertexConnected_one (h : G.Preconnected) : G.IsVertexConnected 1 :=
97- SimpleGraph.isVertexConnected_one .mpr h
95+ /-- A preconnected graph is 1-vertex-preconnected . -/
96+ lemma Preconnected.isVertexPreconnected_one (h : G.Preconnected) : G.IsVertexPreconnected 1 :=
97+ SimpleGraph.isVertexPreconnected_one .mpr h
9898
99- /-- Vertex connectivity is antitonic in `k`. -/
99+ /-- Vertex preconnectivity is antitonic in `k`. -/
100100@[gcongr]
101- lemma IsVertexConnected.anti (hkl : l ≤ k) (hc : G.IsVertexConnected k) : G.IsVertexConnected l :=
101+ lemma IsVertexPreconnected.anti (hkl : l ≤ k) (hc : G.IsVertexPreconnected k) :
102+ G.IsVertexPreconnected l :=
102103 fun u v ↦ (hc u v).anti hkl
103104
104- /-- Vertex connectivity is monotonic in the graph. -/
105+ /-- Vertex preconnectivity is monotonic in the graph. -/
105106@[gcongr]
106- lemma IsVertexConnected.mono (hGH : G ≤ H) (hc : G.IsVertexConnected k) : H.IsVertexConnected k :=
107+ lemma IsVertexPreconnected.mono (hGH : G ≤ H) (hc : G.IsVertexPreconnected k) :
108+ H.IsVertexPreconnected k :=
107109 fun u v ↦ (hc u v).mono hGH
108110
109- /-- The complete graph on `n` vertices is `(n-1)`-vertex-connected . -/
110- lemma isVertexConnected_top [Fintype V] :
111- (⊤ : SimpleGraph V).IsVertexConnected (Fintype.card V - 1 ) := by
111+ /-- The complete graph on `n` vertices is `(n-1)`-vertex-preconnected . -/
112+ lemma isVertexPreconnected_top [Fintype V] :
113+ (⊤ : SimpleGraph V).IsVertexPreconnected (Fintype.card V - 1 ) := by
112114 intro u v
113115 by_cases h : u = v
114116 exacts [h ▸ .refl _, .of_adj _ h]
115117
118+ variable (G k) in
119+ /-- A graph is `k`-vertex-connected if its order is at least `k + 1` and any two vertices
120+ are `k`-vertex-reachable. -/
121+ def IsVertexConnected : Prop :=
122+ k + 1 ≤ ENat.card V ∧ G.IsVertexPreconnected k
123+
124+ /-- A 0-vertex-connected graph is just a nonempty graph. -/
125+ @[simp]
126+ lemma isVertexConnected_zero : G.IsVertexConnected 0 ↔ Nonempty V := by
127+ simp [IsVertexConnected, ENat.one_le_card_iff_nonempty]
128+
129+ /-- 1-vertex-connectivity is equivalent to preconnectedness and having at least two vertices. -/
130+ @[simp]
131+ lemma isVertexConnected_one : G.IsVertexConnected 1 ↔ 2 ≤ ENat.card V ∧ G.Preconnected := by
132+ rw [IsVertexConnected, isVertexPreconnected_one, show (1 : ℕ∞) + 1 = 2 from rfl]
133+
134+ /-- Vertex connectivity is antitonic in `k`. -/
135+ @[gcongr]
136+ lemma IsVertexConnected.anti (hkl : l ≤ k) (hc : G.IsVertexConnected k) :
137+ G.IsVertexConnected l := by
138+ constructor
139+ · rw [add_comm]
140+ exact (add_le_add_right hkl 1 ).trans (by rw [add_comm]; exact hc.1 )
141+ · exact hc.2 .anti hkl
142+
143+ /-- Vertex connectivity is monotonic in the graph. -/
144+ @[gcongr]
145+ lemma IsVertexConnected.mono (hGH : G ≤ H) (hc : G.IsVertexConnected k) :
146+ H.IsVertexConnected k :=
147+ ⟨hc.1 , hc.2 .mono hGH⟩
148+
116149end SimpleGraph
0 commit comments