Documentation

Mathlib.Combinatorics.SimpleGraph.Cayley

Definition of Cayley graphs #

This file defines and proves several fact about Cayley graphs. A Cayley graph over type M with generators s : Set M is a graph in which two vertices u ≠ v are adjacent if and only if there is some g ∈ s such that u * g = v or v * g = u. The elements of s are called generators.

Main declarations #

TODOS #

def SimpleGraph.mulCayley {M : Type u_1} (s : Set M) [Mul M] :

The Cayley graph induced by an operation [Mul M] with generators s

Equations
Instances For
    def SimpleGraph.addCayley {M : Type u_1} (s : Set M) [Add M] :

    The Cayley graph induced by an operation [Add M] with generators s

    Equations
    Instances For
      theorem SimpleGraph.mulCayley_adj' {M : Type u_1} (s : Set M) [Mul M] (u v : M) :
      (mulCayley s).Adj u v u v gs, u * g = v u = v * g

      See mulCayley_adj for the more convenient form in a Group.

      theorem SimpleGraph.addCayley_adj' {M : Type u_1} (s : Set M) [Add M] (u v : M) :
      (addCayley s).Adj u v u v gs, u + g = v u = v + g

      See addCayley_adj for the more convenient form in an AddGroup.

      theorem SimpleGraph.mulCayley_le_iff {M : Type u_1} (s : Set M) [Mul M] (G : SimpleGraph M) :
      mulCayley s G gs, ∀ (a : M), a * g aG.Adj (a * g) a
      theorem SimpleGraph.addCayley_le_iff {M : Type u_1} (s : Set M) [Add M] (G : SimpleGraph M) :
      addCayley s G gs, ∀ (a : M), a + g aG.Adj (a + g) a
      theorem SimpleGraph.mulCayley_gc (M : Type u_1) [Mul M] :
      GaloisConnection (fun (x : Set M) => mulCayley x) fun (x : SimpleGraph M) => {g : M | ∀ (a : M), a * g ax.Adj (a * g) a}

      mulCayley is a left (order-)adjoint.

      theorem SimpleGraph.addCayley_gc (M : Type u_1) [Add M] :
      GaloisConnection (fun (x : Set M) => addCayley x) fun (x : SimpleGraph M) => {g : M | ∀ (a : M), a + g ax.Adj (a + g) a}
      theorem SimpleGraph.mulCayley_monotone {M : Type u_1} [Mul M] :
      Monotone fun (x : Set M) => mulCayley x
      theorem SimpleGraph.addCayley_monotone {M : Type u_1} [Add M] :
      Monotone fun (x : Set M) => addCayley x
      theorem SimpleGraph.mulCayley_mono {M : Type u_1} [Mul M] {U V : Set M} (hUV : U V) :
      theorem SimpleGraph.addCayley_mono {M : Type u_1} [Add M] {U V : Set M} (hUV : U V) :
      @[simp]
      theorem SimpleGraph.mulCayley_union {M : Type u_1} [Mul M] (s₁ s₂ : Set M) :
      mulCayley (s₁ s₂) = mulCayley s₁mulCayley s₂
      @[simp]
      theorem SimpleGraph.addCayley_union {M : Type u_1} [Add M] (s₁ s₂ : Set M) :
      addCayley (s₁ s₂) = addCayley s₁addCayley s₂
      @[simp]
      theorem SimpleGraph.mulCayley_adj_mul_iff_right {M : Type u_1} [Semigroup M] [IsLeftCancelMul M] {s : Set M} {u v d : M} :
      (mulCayley s).Adj (d * u) (d * v) (mulCayley s).Adj u v
      @[simp]
      theorem SimpleGraph.addCayley_adj_add_iff_right {M : Type u_1} [AddSemigroup M] [IsLeftCancelAdd M] {s : Set M} {u v d : M} :
      (addCayley s).Adj (d + u) (d + v) (addCayley s).Adj u v
      @[simp]
      @[simp]
      @[simp]
      theorem SimpleGraph.mulCayley_adj {M : Type u_1} (s : Set M) [Group M] (u v : M) :
      (mulCayley s).Adj u v u v (u⁻¹ * v s v⁻¹ * u s)
      theorem SimpleGraph.addCayley_adj {M : Type u_1} (s : Set M) [AddGroup M] (u v : M) :
      (addCayley s).Adj u v u v (-u + v s -v + u s)
      @[simp]
      theorem SimpleGraph.mulCayley_inv {M : Type u_1} (s : Set M) [Group M] :
      @[simp]
      theorem SimpleGraph.addCayley_neg {M : Type u_1} (s : Set M) [AddGroup M] :