Graph products #
This file defines the box product of graphs and other product constructions. The box product of G
and H is the graph on the product of the vertices such that x and y are related iff they agree
on one component and the other one is related via either G or H. For example, the box product of
two edges is a square.
Main declarations #
simple_graph.box_prod: The box product.
Notation #
G □ H: The box product ofGandH.
TODO #
Define all other graph products!
Box product of simple graphs. It relates (a₁, b) and (a₂, b) if G relates a₁ and a₂,
and (a, b₁) and (a, b₂) if H relates b₁ and b₂.
The box product is commutative up to isomorphism. equiv.prod_comm as a graph isomorphism.
Equations
- G.box_prod_comm H = {to_equiv := equiv.prod_comm α β, map_rel_iff' := _}
The box product is associative up to isomorphism. equiv.prod_assoc as a graph isomorphism.
Equations
- G.box_prod_assoc H I = {to_equiv := equiv.prod_assoc α β γ, map_rel_iff' := _}
The embedding of G into G □ H given by b.
Equations
- G.box_prod_left H b = {to_embedding := {to_fun := λ (a : α), (a, b), inj' := _}, map_rel_iff' := _}
The embedding of H into G □ H given by a.
Equations
- G.box_prod_right H a = {to_embedding := {to_fun := prod.mk a, inj' := _}, map_rel_iff' := _}
Turn a walk on G into a walk on G □ H.
Equations
Turn a walk on H into a walk on G □ H.
Equations
Project a walk on G □ H to a walk on G by discarding the moves in the direction of H.
Equations
- (simple_graph.walk.cons h w).of_box_prod_left = or.by_cases h (λ (hG : G.adj x.fst a_6.fst ∧ x.snd = a_6.snd), simple_graph.walk.cons _ w.of_box_prod_left) (λ (hH : H.adj x.snd a_6.snd ∧ x.fst = a_6.fst), show G.walk x.fst z.fst, from _.mpr w.of_box_prod_left)
- simple_graph.walk.nil.of_box_prod_left = simple_graph.walk.nil
Project a walk on G □ H to a walk on H by discarding the moves in the direction of G.
Equations
- (simple_graph.walk.cons h w).of_box_prod_right = _.by_cases (λ (hH : H.adj x.snd a_15.snd ∧ x.fst = a_15.fst), simple_graph.walk.cons _ w.of_box_prod_right) (λ (hG : G.adj x.fst a_15.fst ∧ x.snd = a_15.snd), show H.walk x.snd z.snd, from _.mpr w.of_box_prod_right)
- simple_graph.walk.nil.of_box_prod_right = simple_graph.walk.nil