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 t
isG
witht
replaced by a copy ofs
, removing thes-t
edge if present.edge s t
is the graph with a singles-t
edge. Adding this edge to a graphG
is thenG ⊔ edge s t
.
theorem
SimpleGraph.Iso.card_edgeFinset_eq
{V : Type u_1}
{G : SimpleGraph V}
{W : Type u_2}
{G' : SimpleGraph W}
(f : G ≃g G')
[Fintype ↑G.edgeSet]
[Fintype ↑G'.edgeSet]
:
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
@[simp]
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)
: