Documentation

Mathlib.Combinatorics.Quiver.Path.Vertices

Path Vertices #

This file provides lemmas for reasoning about the vertices of a path.

def Quiver.Path.end {V : Type u_1} [Quiver V] {a b : V} :
Path a bV

The end vertex of a path. A path p : Path a b has p.end = b.

Equations
Instances For
    @[simp]
    theorem Quiver.Path.end_cons {V : Type u_1} [Quiver V] {a b c : V} (p : Path a b) (e : b c) :
    (p.cons e).end = c
    def Quiver.Path.vertices {V : Type u_1} [Quiver V] {a b : V} :
    Path a bList V

    The list of vertices in a path, including the start and end vertices.

    Equations
    Instances For
      @[simp]
      theorem Quiver.Path.vertices_nil {V : Type u_1} [Quiver V] (a : V) :
      @[simp]
      theorem Quiver.Path.vertices_cons {V : Type u_1} [Quiver V] {a b c : V} (p : Path a b) (e : b c) :
      theorem Quiver.Path.mem_vertices_cons {V : Type u_1} [Quiver V] {a b c : V} (p : Path a b) (e : b c) {x : V} :
      x (p.cons e).vertices x p.vertices x = c

      The vertex list of cons — convenient simp form.

      theorem Quiver.Path.verticesSet_nil {V : Type u_1} [Quiver V] {a : V} :
      @[simp]
      theorem Quiver.Path.vertices_length {V : Type u_2} [Quiver V] {a b : V} (p : Path a b) :

      The length of vertices list equals path length plus one

      theorem Quiver.Path.length_vertices_pos {V : Type u_1} [Quiver V] {a b : V} (p : Path a b) :
      theorem Quiver.Path.vertices_ne_nil {V : Type u_1} [Quiver V] {a b : V} (p : Path a b) :
      @[simp]
      theorem Quiver.Path.vertices_head? {V : Type u_1} [Quiver V] {a b : V} (p : Path a b) :

      The head of the vertices list is the start vertex

      @[simp]
      theorem Quiver.Path.getElem_vertices_zero {V : Type u_1} [Quiver V] {a b : V} (p : Path a b) :
      @[simp]
      theorem Quiver.Path.vertices_getLast {V : Type u_1} [Quiver V] {a b : V} (p : Path a b) (h : p.vertices [] := ) :
      @[simp]
      theorem Quiver.Path.vertices_comp {V : Type u_1} [Quiver V] {a b c : V} (p : Path a b) (q : Path b c) :
      theorem Quiver.Path.start_mem_vertices {V : Type u_1} [Quiver V] {a b : V} (p : Path a b) :
      @[simp]
      theorem Quiver.Path.length_eq_zero_iff {V : Type u_1} [Quiver V] {a : V} (p : Path a a) :
      p.length = 0 p = nil
      @[simp]
      theorem Quiver.Path.vertices_head_eq {V : Type u_1} [Quiver V] {a b : V} (p : Path a b) (h : p.vertices [] := ) :

      The head of the vertices list is the start vertex.

      theorem Quiver.Path.vertices_getLast_eq {V : Type u_1} [Quiver V] {a b : V} (p : Path a b) (h : p.vertices [] := ) :

      The last element of the vertices list is the end vertex.

      theorem Quiver.Path.vertices_comp_get_length_eq {V : Type u_1} [Quiver V] {a b c : V} (p₁ : Path a c) (p₂ : Path c b) (h : p₁.length < (p₁.comp p₂).vertices.length := by simp) :
      (p₁.comp p₂).vertices.get p₁.length, h = c
      @[simp]
      theorem Quiver.Path.vertices_toPath {V : Type u_1} [Quiver V] {i j : V} (e : i j) :
      theorem Quiver.Path.vertices_toPath_tail {V : Type u_1} [Quiver V] {i j : V} (e : i j) :
      theorem Quiver.Path.nil_of_comp_eq_nil_left {V : Type u_1} [Quiver V] {a b : V} {p : Path a b} {q : Path b a} (h : p.comp q = nil) :
      p.length = 0

      If a composition is nil, the left component must be nil (proved via lengths, avoiding dependent pattern-matching).

      theorem Quiver.Path.nil_of_comp_eq_nil_right {V : Type u_1} [Quiver V] {a b : V} {p : Path a b} {q : Path b a} (h : p.comp q = nil) :
      q.length = 0

      If a composition is nil, the right component must be nil

      theorem Quiver.Path.comp_eq_nil_iff {V : Type u_1} [Quiver V] {a b : V} {p : Path a b} {q : Path b a} :
      p.comp q = nil p.length = 0 q.length = 0
      @[simp]
      theorem Quiver.Path.end_mem_vertices {V : Type u_1} [Quiver V] {a b : V} (p : Path a b) :