Local graph operations #
This file defines some single-graph operations that modify a finite number of vertices and proves basic theorems about them. When the graph itself has a finite number of vertices we also prove theorems about the number of edges in the modified graphs.
Main definitions #
G.replaceVertex s tisGwithtreplaced by a copy ofs, removing thes-tedge if present.edge s tis the graph with a singles-tedge. Adding this edge to a graphGis thenG ⊔ edge s t.
The graph formed by forgetting t's neighbours and instead giving it those of s. The s-t
edge is removed if present.
Equations
Instances For
theorem SimpleGraph.not_adj_replaceVertex_same {V : Type u_1} (G : SimpleGraph V) (s t : V) [DecidableEq V] :
¬(G.replaceVertex s t).Adj s t
There is never an s-t edge in G.replaceVertex s t.
@[simp]
theorem SimpleGraph.adj_replaceVertex_iff_of_ne_left {V : Type u_1} (G : SimpleGraph V) (s : V) {t : V} [DecidableEq V] {w : V} (hw : w ≠ t) :
Except possibly for t, the neighbours of s in G.replaceVertex s t are its neighbours in
G.
theorem SimpleGraph.adj_replaceVertex_iff_of_ne_right {V : Type u_1} (G : SimpleGraph V) (s : V) {t : V} [DecidableEq V] {w : V} (hw : w ≠ t) :
Except possibly for itself, the neighbours of t in G.replaceVertex s t are the neighbours of
s in G.
theorem SimpleGraph.adj_replaceVertex_iff_of_ne {V : Type u_1} (G : SimpleGraph V) (s : V) {t : V} [DecidableEq V] {v w : V} (hv : v ≠ t) (hw : w ≠ t) :
Adjacency in G.replaceVertex s t which does not involve t is the same as that of G.
theorem SimpleGraph.edgeSet_replaceVertex_of_not_adj {V : Type u_1} (G : SimpleGraph V) {s t : V} [DecidableEq V] (hn : ¬G.Adj s t) :
(G.replaceVertex s t).edgeSet = G.edgeSet \ G.incidenceSet t ∪ (fun (x : V) => s(x, t)) '' G.neighborSet s
theorem SimpleGraph.edgeSet_replaceVertex_of_adj {V : Type u_1} (G : SimpleGraph V) {s t : V} [DecidableEq V] (ha : G.Adj s t) :
@[instance_reducible]
instance SimpleGraph.instDecidableRelAdjReplaceVertex {V : Type u_1} (G : SimpleGraph V) {s t : V} [DecidableEq V] [DecidableRel G.Adj] :
DecidableRel (G.replaceVertex s t).Adj
theorem SimpleGraph.edgeFinset_replaceVertex_of_not_adj {V : Type u_1} (G : SimpleGraph V) {s t : V} [DecidableEq V] [Fintype V] [DecidableRel G.Adj] (hn : ¬G.Adj s t) :
(G.replaceVertex s t).edgeFinset = G.edgeFinset \ G.incidenceFinset t ∪ Finset.image (fun (x : V) => s(x, t)) (G.neighborFinset s)
theorem SimpleGraph.edgeFinset_replaceVertex_of_adj {V : Type u_1} (G : SimpleGraph V) {s t : V} [DecidableEq V] [Fintype V] [DecidableRel G.Adj] (ha : G.Adj s t) :
(G.replaceVertex s t).edgeFinset = (G.edgeFinset \ G.incidenceFinset t ∪ Finset.image (fun (x : V) => s(x, t)) (G.neighborFinset s)) \ {s(t, t)}
theorem SimpleGraph.disjoint_sdiff_neighborFinset_image {V : Type u_1} (G : SimpleGraph V) {s t : V} [DecidableEq V] [Fintype V] [DecidableRel G.Adj] :
Disjoint (G.edgeFinset \ G.incidenceFinset t) (Finset.image (fun (x : V) => s(x, t)) (G.neighborFinset s))
theorem SimpleGraph.card_edgeFinset_replaceVertex_of_not_adj {V : Type u_1} (G : SimpleGraph V) {s t : V} [DecidableEq V] [Fintype V] [DecidableRel G.Adj] (hn : ¬G.Adj s t) :
theorem SimpleGraph.card_edgeFinset_replaceVertex_of_adj {V : Type u_1} (G : SimpleGraph V) {s t : V} [DecidableEq V] [Fintype V] [DecidableRel G.Adj] (ha : G.Adj s t) :
The graph with a single s-t edge. It is empty iff s = t.
Equations
Instances For
@[simp]
@[instance_reducible]
instance SimpleGraph.instDecidableRelAdjEdge {V : Type u_1} (s t : V) [DecidableEq V] :
DecidableRel (edge s t).Adj
Equations
- SimpleGraph.instDecidableRelAdjEdge s t x✝¹ x✝ = ⋯.mpr inferInstance
theorem SimpleGraph.lt_sup_edge {V : Type u_1} (G : SimpleGraph V) (s t : V) (hne : s ≠ t) (hn : ¬G.Adj s t) :
theorem SimpleGraph.Subgraph.spanningCoe_sup_edge_le {V : Type u_1} (G : SimpleGraph V) {s t : V} {H : (G ⊔ edge s t).Subgraph} (h : ¬H.Adj s t) :
@[instance_reducible]
theorem SimpleGraph.edgeFinset_sup_edge {V : Type u_1} (G : SimpleGraph V) {s t : V} [Fintype V] [DecidableRel G.Adj] [Fintype ↑(G ⊔ edge s t).edgeSet] (hn : ¬G.Adj s t) (h : s ≠ t) :
theorem SimpleGraph.card_edgeFinset_sup_edge {V : Type u_1} (G : SimpleGraph V) {s t : V} [Fintype V] [DecidableRel G.Adj] [Fintype ↑(G ⊔ edge s t).edgeSet] (hn : ¬G.Adj s t) (h : s ≠ t) :