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
SimpleGraph.instDecidableRelAdjReplaceVertex
{V : Type u_1}
(G : SimpleGraph V)
{s t : V}
[DecidableEq V]
[DecidableRel G.Adj]
:
DecidableRel (G.replaceVertex s t).Adj
Equations
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
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)
:
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)
: