Subgraphs of a simple graph #
A subgraph of a simple graph consists of subsets of the graph's vertices and edges such that the endpoints of each edge are present in the vertex subset. The edge subset is formalized as a sub-relation of the adjacency relation of the simple graph.
Main definitions #
-
Subgraph Gis the type of subgraphs of aG : SimpleGraph V. -
Subgraph.neighborSet,Subgraph.incidenceSet, andSubgraph.degreeare like theirSimpleGraphcounterparts, but they refer to vertices fromGto avoid subtype coercions. -
Subgraph.coeis the coercion from aG' : Subgraph Gto aSimpleGraph G'.verts. (In Lean 3 this could not be aCoeinstance since the destination type depends onG'.) -
Subgraph.IsSpanningfor whether a subgraph is a spanning subgraph andSubgraph.IsInducedfor whether a subgraph is an induced subgraph. -
Instances for
Lattice (Subgraph G)andBoundedOrder (Subgraph G). -
SimpleGraph.toSubgraph: If aSimpleGraphis a subgraph of another, then you can turn it into a member of the larger graph'sSimpleGraph.Subgraphtype. -
Graph homomorphisms from a subgraph to a graph (
Subgraph.map_top) and between subgraphs (Subgraph.map).
Implementation notes #
- Recall that subgraphs are not determined by their vertex sets, so
SetLikedoes not apply to this kind of subobject.
Todo #
- Images of graph homomorphisms as subgraphs.
A subgraph of a SimpleGraph is a subset of vertices along with a restriction of the adjacency
relation that is symmetric and is supported by the vertex subset. They also form a bounded lattice.
Thinking of V → V → Prop as Set (V × V), a set of darts (i.e., half-edges), then
Subgraph.adj_sub is that the darts of a subgraph are a subset of the darts of G.
- verts : Set V
- Adj : V → V → Prop
- adj_sub : ∀ {v w : V}, self.Adj v w → G.Adj v w
- edge_vert : ∀ {v w : V}, self.Adj v w → v ∈ self.verts
- symm : Symmetric self.Adj
Instances For
The one-vertex subgraph.
Equations
- SimpleGraph.singletonSubgraph G v = SimpleGraph.Subgraph.mk {v} ⊥ (_ : ∀ {v w : V}, False → G.Adj v w) (_ : ∀ {v_1 : V} {w : V}, False → v_1 ∈ {v})
Instances For
The one-edge subgraph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Coercion from G' : Subgraph G to a SimpleGraph G'.verts.
Equations
- SimpleGraph.Subgraph.coe G' = SimpleGraph.mk fun (v w : ↑G'.verts) => G'.Adj ↑v ↑w
Instances For
A subgraph is called a spanning subgraph if it contains all the vertices of G.
Equations
- SimpleGraph.Subgraph.IsSpanning G' = ∀ (v : V), v ∈ G'.verts
Instances For
Coercion from Subgraph G to SimpleGraph V. If G' is a spanning
subgraph, then G'.spanningCoe yields an isomorphic graph.
In general, this adds in all vertices from V as isolated vertices.
Equations
- SimpleGraph.Subgraph.spanningCoe G' = SimpleGraph.mk G'.Adj
Instances For
spanningCoe is equivalent to coe for a subgraph that IsSpanning.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A subgraph is called an induced subgraph if vertices of G' are adjacent if
they are adjacent in G.
Equations
- SimpleGraph.Subgraph.IsInduced G' = ∀ {v w : V}, v ∈ G'.verts → w ∈ G'.verts → G.Adj v w → G'.Adj v w
Instances For
H.support is the set of vertices that form edges in the subgraph H.
Equations
- SimpleGraph.Subgraph.support H = Rel.dom H.Adj
Instances For
G'.neighborSet v is the set of vertices adjacent to v in G'.
Equations
- SimpleGraph.Subgraph.neighborSet G' v = {w : V | G'.Adj v w}
Instances For
A subgraph as a graph has equivalent neighbor sets.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The edge set of G' consists of a subset of edges of G.
Equations
- SimpleGraph.Subgraph.edgeSet G' = Sym2.fromRel (_ : Symmetric G'.Adj)
Instances For
The incidenceSet is the set of edges incident to a given vertex.
Equations
- SimpleGraph.Subgraph.incidenceSet G' v = {e : Sym2 V | e ∈ SimpleGraph.Subgraph.edgeSet G' ∧ v ∈ e}
Instances For
Give a vertex as an element of the subgraph's vertex type.
Equations
- SimpleGraph.Subgraph.vert G' v h = { val := v, property := h }
Instances For
Create an equal copy of a subgraph (see copy_eq) with possibly different definitional equalities.
See Note [range copy pattern].
Equations
- SimpleGraph.Subgraph.copy G' V'' hV adj' hadj = SimpleGraph.Subgraph.mk V'' adj' (_ : ∀ {v w : V}, adj' v w → G.Adj v w) (_ : ∀ {v w : V}, adj' v w → v ∈ V'')
Instances For
The union of two subgraphs.
Equations
- One or more equations did not get rendered due to their size.
The intersection of two subgraphs.
Equations
- One or more equations did not get rendered due to their size.
The top subgraph is G as a subgraph of itself.
Equations
- SimpleGraph.Subgraph.instTopSubgraph = { top := SimpleGraph.Subgraph.mk Set.univ G.Adj (_ : ∀ {v w : V}, G.Adj v w → G.Adj v w) (_ : ∀ (v x : V), G.Adj v x → v ∈ Set.univ) }
The bot subgraph is the subgraph with no vertices or edges.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
For subgraphs G₁, G₂, G₁ ≤ G₂ iff G₁.verts ⊆ G₂.verts and
∀ a b, G₁.adj a b → G₂.adj a b.
Equations
- One or more equations did not get rendered due to their size.
Equations
- SimpleGraph.Subgraph.instBoundedOrderSubgraphToLEToPreorderToPartialOrderToSemilatticeInfToLatticeDistribLattice = BoundedOrder.mk
Equations
- One or more equations did not get rendered due to their size.
Turn a subgraph of a SimpleGraph into a member of its subgraph type.
Equations
- SimpleGraph.toSubgraph H h = SimpleGraph.Subgraph.mk Set.univ H.Adj (_ : ∀ {v w : V}, H.Adj v w → G.Adj v w) (_ : ∀ {v w : V}, H.Adj v w → v ∈ Set.univ)
Instances For
The top of the Subgraph G lattice is equivalent to the graph itself.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The bottom of the Subgraph G lattice is equivalent to the empty graph on the empty
vertex type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Graph homomorphisms induce a covariant function on subgraphs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Graph homomorphisms induce a contravariant function on subgraphs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given two subgraphs, one a subgraph of the other, there is an induced injective homomorphism of the subgraphs as graphs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
There is an induced injective homomorphism of a subgraph of G into G.
Equations
- SimpleGraph.Subgraph.hom x = { toFun := fun (v : ↑x.verts) => ↑v, map_rel' := (_ : ∀ {a b : ↑x.verts}, x.Adj ↑a ↑b → G.Adj ↑a ↑b) }
Instances For
There is an induced injective homomorphism of a subgraph of G as
a spanning subgraph into G.
Equations
- SimpleGraph.Subgraph.spanningHom x = { toFun := id, map_rel' := (_ : ∀ {a b : V}, x.Adj a b → G.Adj a b) }
Instances For
Equations
If a graph is locally finite at a vertex, then so is a subgraph of that graph.
Equations
- SimpleGraph.Subgraph.finiteAt v = Set.fintypeSubset (SimpleGraph.neighborSet G ↑v) (_ : SimpleGraph.Subgraph.neighborSet G' ↑v ⊆ SimpleGraph.neighborSet G ↑v)
If a subgraph is locally finite at a vertex, then so are subgraphs of that subgraph.
This is not an instance because G'' cannot be inferred.
Equations
Instances For
Equations
- SimpleGraph.Subgraph.instFintypeElemNeighborSet G' v = Set.fintypeSubset G'.verts (_ : SimpleGraph.Subgraph.neighborSet G' v ⊆ G'.verts)
Equations
The degree of a vertex in a subgraph. It's zero for vertices outside the subgraph.
Equations
Instances For
Properties of singletonSubgraph and subgraphOfAdj #
Equations
- (_ : Nonempty ↑(SimpleGraph.singletonSubgraph G v).verts) = (_ : Nonempty ↑(SimpleGraph.singletonSubgraph G v).verts)
Equations
- (_ : Nonempty ↑(SimpleGraph.subgraphOfAdj G hvw).verts) = (_ : Nonempty ↑(SimpleGraph.subgraphOfAdj G hvw).verts)
Subgraphs of subgraphs #
Given a subgraph of a subgraph of G, construct a subgraph of G.
Equations
- SimpleGraph.Subgraph.coeSubgraph = SimpleGraph.Subgraph.map (SimpleGraph.Subgraph.hom G')
Instances For
Given a subgraph of G, restrict it to being a subgraph of another subgraph G' by
taking the portion of G that intersects G'.
Equations
- SimpleGraph.Subgraph.restrict = SimpleGraph.Subgraph.comap (SimpleGraph.Subgraph.hom G')
Instances For
Edge deletion #
Given a subgraph G' and a set of vertex pairs, remove all of the corresponding edges
from its edge set, if present.
See also: SimpleGraph.deleteEdges.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Induced subgraphs #
The induced subgraph of a subgraph. The expectation is that s ⊆ G'.verts for the usual
notion of an induced subgraph, but, in general, s is taken to be the new vertex set and edges
are induced from the subgraph G'.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a subgraph and a set of vertices, delete all the vertices from the subgraph, if present. Any edges incident to the deleted vertices are deleted as well.
Equations
- SimpleGraph.Subgraph.deleteVerts G' s = SimpleGraph.Subgraph.induce G' (G'.verts \ s)