File: Mathlib/Combinatorics/Quiver/SingleObj.lean

full_name: Quiver.SingleObj
code: /-- Type tag on `Unit` used to define single-object quivers. -/
-- Porting note: Removed `deriving Unique`.
@[nolint unusedArguments]
def SingleObj (_ : Type*) : Type 
goal: Type u_1 → Type

full_name: Quiver.instUniqueSingleObj
code: instance {α : Type*} : Unique (SingleObj α) 
goal: Unique (Quiver.SingleObj α)

full_name: Quiver.SingleObj.inst
code: instance : Quiver (SingleObj α) 
goal: Quiver (Quiver.SingleObj α)

full_name: Quiver.SingleObj.star
code: /-- The single object in `SingleObj α`. -/
def star : SingleObj α 
goal: Quiver.SingleObj α

full_name: Quiver.SingleObj.instInhabited
code: instance : Inhabited (SingleObj α) 
goal: Inhabited (Quiver.SingleObj α)

full_name: Quiver.SingleObj.ext
code: lemma ext {x y : SingleObj α} : x = y 
goal: x = y

full_name: Quiver.SingleObj.hasReverse
code: /-- Equip `SingleObj α` with a reverse operation. -/
abbrev hasReverse (rev : α → α) : HasReverse (SingleObj α) 
goal: Quiver.HasReverse (Quiver.SingleObj α)

full_name: Quiver.SingleObj.hasInvolutiveReverse
code: /-- Equip `SingleObj α` with an involutive reverse operation. -/
abbrev hasInvolutiveReverse (rev : α → α) (h : Function.Involutive rev) :
    HasInvolutiveReverse (SingleObj α) 
goal: Quiver.HasInvolutiveReverse (Quiver.SingleObj α)

full_name: Quiver.SingleObj.toHom
code: /-- The type of arrows from `star α` to itself is equivalent to the original type `α`. -/
@[simps!]
def toHom : α ≃ (star α ⟶ star α) 
goal: α ≃ (Quiver.SingleObj.star α ⟶ Quiver.SingleObj.star α)

full_name: Quiver.SingleObj.toHom_symm_apply
code: /-- The type of arrows from `star α` to itself is equivalent to the original type `α`. -/
@[simps!]
def toHom : α ≃ (star α ⟶ star α) 
goal: Quiver.SingleObj.toHom.symm a = a

full_name: Quiver.SingleObj.toHom_apply
code: /-- The type of arrows from `star α` to itself is equivalent to the original type `α`. -/
@[simps!]
def toHom : α ≃ (star α ⟶ star α) 
goal: Quiver.SingleObj.toHom a = a

full_name: Quiver.SingleObj.toPrefunctor_apply_obj
code: /-- Prefunctors between two `SingleObj` quivers correspond to functions between the corresponding
arrows types.
-/
@[simps]
def toPrefunctor : (α → β) ≃ SingleObj α ⥤q SingleObj β 
goal: (Quiver.SingleObj.toPrefunctor f).obj a = id a

full_name: Quiver.SingleObj.toPrefunctor_symm_apply
code: /-- Prefunctors between two `SingleObj` quivers correspond to functions between the corresponding
arrows types.
-/
@[simps]
def toPrefunctor : (α → β) ≃ SingleObj α ⥤q SingleObj β 
goal: Quiver.SingleObj.toPrefunctor.symm f a = f.map (Quiver.SingleObj.toHom a)

full_name: Quiver.SingleObj.toPrefunctor_apply_map
code: /-- Prefunctors between two `SingleObj` quivers correspond to functions between the corresponding
arrows types.
-/
@[simps]
def toPrefunctor : (α → β) ≃ SingleObj α ⥤q SingleObj β 
goal: ∀ {X Y : Quiver.SingleObj α} (a : α), (Quiver.SingleObj.toPrefunctor f).map a = f a

full_name: Quiver.SingleObj.toPrefunctor
code: /-- Prefunctors between two `SingleObj` quivers correspond to functions between the corresponding
arrows types.
-/
@[simps]
def toPrefunctor : (α → β) ≃ SingleObj α ⥤q SingleObj β 
goal: (α → β) ≃ Quiver.SingleObj α ⥤q Quiver.SingleObj β

full_name: Quiver.SingleObj.toPrefunctor_id
code: theorem toPrefunctor_id : toPrefunctor id = 𝟭q (SingleObj α) 
goal: Quiver.SingleObj.toPrefunctor id = 𝟭q (Quiver.SingleObj α)

full_name: Quiver.SingleObj.toPrefunctor_symm_id
code: @[simp]
theorem toPrefunctor_symm_id : toPrefunctor.symm (𝟭q (SingleObj α)) = id 
goal: Quiver.SingleObj.toPrefunctor.symm (𝟭q (Quiver.SingleObj α)) = id

full_name: Quiver.SingleObj.toPrefunctor_comp
code: theorem toPrefunctor_comp (f : α → β) (g : β → γ) :
    toPrefunctor (g ∘ f) = toPrefunctor f ⋙q toPrefunctor g 
goal: Quiver.SingleObj.toPrefunctor (g ∘ f) = Quiver.SingleObj.toPrefunctor f ⋙q Quiver.SingleObj.toPrefunctor g

full_name: Quiver.SingleObj.toPrefunctor_symm_comp
code: @[simp]
theorem toPrefunctor_symm_comp (f : SingleObj α ⥤q SingleObj β) (g : SingleObj β ⥤q SingleObj γ) :
    toPrefunctor.symm (f ⋙q g) = toPrefunctor.symm g ∘ toPrefunctor.symm f 
goal: Quiver.SingleObj.toPrefunctor.symm (f ⋙q g) =
  Quiver.SingleObj.toPrefunctor.symm g ∘ Quiver.SingleObj.toPrefunctor.symm f

full_name: Quiver.SingleObj.pathToList
code: /-- Auxiliary definition for `quiver.SingleObj.pathEquivList`.
Converts a path in the quiver `single_obj α` into a list of elements of type `a`.
-/
def pathToList : ∀ {x : SingleObj α}, Path (star α) x → List α
  
goal: Quiver.Path (Quiver.SingleObj.star α) x → List α

full_name: Quiver.SingleObj.listToPath
code: /-- Auxiliary definition for `quiver.SingleObj.pathEquivList`.
Converts a list of elements of type `α` into a path in the quiver `SingleObj α`.
-/
@[simp]
def listToPath : List α → Path (star α) (star α)
  
goal: List α → Quiver.Path (Quiver.SingleObj.star α) (Quiver.SingleObj.star α)

full_name: Quiver.SingleObj.listToPath_pathToList
code: theorem listToPath_pathToList {x : SingleObj α} (p : Path (star α) x) :
    listToPath (pathToList p) = p.cast rfl ext 
goal: Quiver.SingleObj.listToPath (Quiver.SingleObj.pathToList p) = Quiver.Path.cast ⋯ ⋯ p

full_name: Quiver.SingleObj.pathToList_listToPath
code: theorem pathToList_listToPath (l : List α) : pathToList (listToPath l) = l 
goal: Quiver.SingleObj.pathToList (Quiver.SingleObj.listToPath l) = l

full_name: Quiver.SingleObj.pathEquivList
code: /-- Paths in `SingleObj α` quiver correspond to lists of elements of type `α`. -/
def pathEquivList : Path (star α) (star α) ≃ List α 
goal: Quiver.Path (Quiver.SingleObj.star α) (Quiver.SingleObj.star α) ≃ List α

full_name: Quiver.SingleObj.pathEquivList_nil
code: @[simp]
theorem pathEquivList_nil : pathEquivList Path.nil = ([] : List α) 
goal: Quiver.SingleObj.pathEquivList Quiver.Path.nil = []

full_name: Quiver.SingleObj.pathEquivList_cons
code: @[simp]
theorem pathEquivList_cons (p : Path (star α) (star α)) (a : star α ⟶ star α) :
    pathEquivList (Path.cons p a) = a :: pathToList p 
goal: Quiver.SingleObj.pathEquivList (p.cons a) = a :: Quiver.SingleObj.pathToList p

full_name: Quiver.SingleObj.pathEquivList_symm_nil
code: @[simp]
theorem pathEquivList_symm_nil : pathEquivList.symm ([] : List α) = Path.nil 
goal: Quiver.SingleObj.pathEquivList.symm [] = Quiver.Path.nil

full_name: Quiver.SingleObj.pathEquivList_symm_cons
code: @[simp]
theorem pathEquivList_symm_cons (l : List α) (a : α) :
    pathEquivList.symm (a :: l) = Path.cons (pathEquivList.symm l) a 
goal: Quiver.SingleObj.pathEquivList.symm (a :: l) = (Quiver.SingleObj.pathEquivList.symm l).cons a