File: Mathlib/Combinatorics/Quiver/Cast.lean

full_name: Quiver.Hom.cast
code: /-- Change the endpoints of an arrow using equalities. -/
def Hom.cast {u v u' v' : U} (hu : u = u') (hv : v = v') (e : u ⟶ v) : u' ⟶ v' 
goal: u' ⟶ v'

full_name: Quiver.Hom.cast_eq_cast
code: theorem Hom.cast_eq_cast {u v u' v' : U} (hu : u = u') (hv : v = v') (e : u ⟶ v) :
    e.cast hu hv = _root_.cast (by {rw [hu, hv]}) e 
goal: Quiver.Hom.cast hu hv e = cast ⋯ e

full_name: Quiver.Hom.cast_rfl_rfl
code: @[simp]
theorem Hom.cast_rfl_rfl {u v : U} (e : u ⟶ v) : e.cast rfl rfl = e 
goal: Quiver.Hom.cast ⋯ ⋯ e = e

full_name: Quiver.Hom.cast_cast
code: @[simp]
theorem Hom.cast_cast {u v u' v' u'' v'' : U} (e : u ⟶ v) (hu : u = u') (hv : v = v')
    (hu' : u' = u'') (hv' : v' = v'') :
    (e.cast hu hv).cast hu' hv' = e.cast (hu.trans hu') (hv.trans hv') 
goal: Quiver.Hom.cast hu' hv' (Quiver.Hom.cast hu hv e) = Quiver.Hom.cast ⋯ ⋯ e

full_name: Quiver.Hom.cast_heq
code: theorem Hom.cast_heq {u v u' v' : U} (hu : u = u') (hv : v = v') (e : u ⟶ v) :
    HEq (e.cast hu hv) e 
goal: HEq (Quiver.Hom.cast hu hv e) e

full_name: Quiver.Hom.cast_eq_iff_heq
code: theorem Hom.cast_eq_iff_heq {u v u' v' : U} (hu : u = u') (hv : v = v') (e : u ⟶ v) (e' : u' ⟶ v') :
    e.cast hu hv = e' ↔ HEq e e' 
goal: Quiver.Hom.cast hu hv e = e' ↔ HEq e e'

full_name: Quiver.Hom.eq_cast_iff_heq
code: theorem Hom.eq_cast_iff_heq {u v u' v' : U} (hu : u = u') (hv : v = v') (e : u ⟶ v) (e' : u' ⟶ v') :
    e' = e.cast hu hv ↔ HEq e' e 
goal: e' = Quiver.Hom.cast hu hv e ↔ HEq e' e

full_name: Quiver.Path.cast
code: /-- Change the endpoints of a path using equalities. -/
def Path.cast {u v u' v' : U} (hu : u = u') (hv : v = v') (p : Path u v) : Path u' v' 
goal: Quiver.Path u' v'

full_name: Quiver.Path.cast_eq_cast
code: theorem Path.cast_eq_cast {u v u' v' : U} (hu : u = u') (hv : v = v') (p : Path u v) :
    p.cast hu hv = _root_.cast (by rw [hu, hv]) p 
goal: Quiver.Path.cast hu hv p = cast ⋯ p

full_name: Quiver.Path.cast_rfl_rfl
code: @[simp]
theorem Path.cast_rfl_rfl {u v : U} (p : Path u v) : p.cast rfl rfl = p 
goal: Quiver.Path.cast ⋯ ⋯ p = p

full_name: Quiver.Path.cast_cast
code: @[simp]
theorem Path.cast_cast {u v u' v' u'' v'' : U} (p : Path u v) (hu : u = u') (hv : v = v')
    (hu' : u' = u'') (hv' : v' = v'') :
    (p.cast hu hv).cast hu' hv' = p.cast (hu.trans hu') (hv.trans hv') 
goal: Quiver.Path.cast hu' hv' (Quiver.Path.cast hu hv p) = Quiver.Path.cast ⋯ ⋯ p

full_name: Quiver.Path.cast_nil
code: @[simp]
theorem Path.cast_nil {u u' : U} (hu : u = u') : (Path.nil : Path u u).cast hu hu = Path.nil 
goal: Quiver.Path.cast hu hu Quiver.Path.nil = Quiver.Path.nil

full_name: Quiver.Path.cast_heq
code: theorem Path.cast_heq {u v u' v' : U} (hu : u = u') (hv : v = v') (p : Path u v) :
    HEq (p.cast hu hv) p 
goal: HEq (Quiver.Path.cast hu hv p) p

full_name: Quiver.Path.cast_eq_iff_heq
code: theorem Path.cast_eq_iff_heq {u v u' v' : U} (hu : u = u') (hv : v = v') (p : Path u v)
    (p' : Path u' v') : p.cast hu hv = p' ↔ HEq p p' 
goal: Quiver.Path.cast hu hv p = p' ↔ HEq p p'

full_name: Quiver.Path.eq_cast_iff_heq
code: theorem Path.eq_cast_iff_heq {u v u' v' : U} (hu : u = u') (hv : v = v') (p : Path u v)
    (p' : Path u' v') : p' = p.cast hu hv ↔ HEq p' p 
goal: p' = Quiver.Path.cast hu hv p ↔ HEq p' p

full_name: Quiver.Path.cast_cons
code: theorem Path.cast_cons {u v w u' w' : U} (p : Path u v) (e : v ⟶ w) (hu : u = u') (hw : w = w') :
    (p.cons e).cast hu hw = (p.cast hu rfl).cons (e.cast rfl hw) 
goal: Quiver.Path.cast hu hw (p.cons e) = (Quiver.Path.cast hu ⋯ p).cons (Quiver.Hom.cast ⋯ hw e)

full_name: Quiver.cast_eq_of_cons_eq_cons
code: theorem cast_eq_of_cons_eq_cons {u v v' w : U} {p : Path u v} {p' : Path u v'} {e : v ⟶ w}
    {e' : v' ⟶ w} (h : p.cons e = p'.cons e') : p.cast rfl (obj_eq_of_cons_eq_cons h) = p' 
goal: Quiver.Path.cast ⋯ ⋯ p = p'

full_name: Quiver.hom_cast_eq_of_cons_eq_cons
code: theorem hom_cast_eq_of_cons_eq_cons {u v v' w : U} {p : Path u v} {p' : Path u v'} {e : v ⟶ w}
    {e' : v' ⟶ w} (h : p.cons e = p'.cons e') : e.cast (obj_eq_of_cons_eq_cons h) rfl = e' 
goal: Quiver.Hom.cast ⋯ ⋯ e = e'

full_name: Quiver.eq_nil_of_length_zero
code: theorem eq_nil_of_length_zero {u v : U} (p : Path u v) (hzero : p.length = 0) :
    p.cast (eq_of_length_zero p hzero) rfl = Path.nil 
goal: Quiver.Path.cast ⋯ ⋯ p = Quiver.Path.nil