Documentation

Mathlib.Combinatorics.Graph.Lattice

Intersection and union of graphs #

This file defines the lattice-like structures on graphs.

Main results #

Implementation notes #

Intersections are defined here as the maximal mutual subgraph of the given graphs. This has the effect of, when taking the intersection of non-compatible graphs, any non-compatible edges are removed.

TODO #

@[implicit_reducible]
instance Graph.instSemilatticeInf {α : Type u_1} {β : Type u_2} :

The infimum of two graphs G and H. The edges are precisely those on which G and H agree, and the edge set is a subset of E(G) ∩ E(H), with equality if G and H are compatible.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem Graph.vertexSet_inf {α : Type u_1} {β : Type u_2} (G H : Graph α β) :
theorem Graph.edgeSet_inf {α : Type u_1} {β : Type u_2} (G H : Graph α β) :
(GH).edgeSet = {e : β | e G.edgeSet H.edgeSet ∀ (x y : α), G.IsLink e x y H.IsLink e x y}
@[simp]
theorem Graph.inf_inc_iff {α : Type u_1} {β : Type u_2} {x : α} {e : β} {G H : Graph α β} :
(GH).Inc e x ∃ (y : α), G.IsLink e x y H.IsLink e x y
@[simp]
theorem Graph.inf_isLoopAt_iff {α : Type u_1} {β : Type u_2} {x : α} {e : β} {G H : Graph α β} :
(GH).IsLoopAt e x G.IsLoopAt e x H.IsLoopAt e x
@[simp]
theorem Graph.inf_isNonloopAt_iff {α : Type u_1} {β : Type u_2} {x : α} {e : β} {G H : Graph α β} :
(GH).IsNonloopAt e x ∃ (y : α), y x G.IsLink e x y H.IsLink e x y
@[simp]
theorem Graph.disjoint_iff {α : Type u_1} {β : Type u_2} {G H : Graph α β} :
theorem Graph.Compatible.edgeSet_inf {α : Type u_1} {β : Type u_2} {G H : Graph α β} (h : G.Compatible H) :
(GH).edgeSet = G.edgeSet H.edgeSet