Theorem: CategoryTheory.List.joinF.unitorLeft_oplax_lax (Moncalc/CategoryTheory/List/Monad.lean)

State before:
α : Type u
inst✝ : Category α
as : List α
⊢ joinF.unitorLeftOplax as ≫ joinF.unitorLeftLax as = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor as)
Tactic:
induction as
State after:
case nil
α : Type u
inst✝ : Category α
⊢ joinF.unitorLeftOplax [] ≫ joinF.unitorLeftLax [] = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor [])

case cons
α : Type u
inst✝ : Category α
head✝ : α
tail✝ : List α
tail_ih✝ :
  joinF.unitorLeftOplax tail✝ ≫ joinF.unitorLeftLax tail✝ = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor tail✝)
⊢ joinF.unitorLeftOplax (head✝ :: tail✝) ≫ joinF.unitorLeftLax (head✝ :: tail✝) =
    𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor (head✝ :: tail✝))

State before:
α : Type u
inst✝ : Category α
⊢ joinF.unitorLeftOplax [] ≫ joinF.unitorLeftLax [] = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor [])
Tactic:
case nil => rfl
State after:
no goals

State before:
α : Type u
inst✝ : Category α
a : α
as : List α
h_ind : joinF.unitorLeftOplax as ≫ joinF.unitorLeftLax as = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor as)
⊢ joinF.unitorLeftOplax (a :: as) ≫ joinF.unitorLeftLax (a :: as) =
    𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor (a :: as))
Tactic:
case cons a as h_ind =>
  dsimp [joinF.unitorLeftLax, joinF.unitorLeftOplax]
  rw [h_ind, Category.id_comp]
  rfl
State after:
no goals

State before:
α : Type u
inst✝ : Category α
⊢ joinF.unitorLeftOplax [] ≫ joinF.unitorLeftLax [] = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor [])
Tactic:
rfl
State after:
no goals

State before:
α : Type u
inst✝ : Category α
a : α
as : List α
h_ind : joinF.unitorLeftOplax as ≫ joinF.unitorLeftLax as = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor as)
⊢ joinF.unitorLeftOplax (a :: as) ≫ joinF.unitorLeftLax (a :: as) =
    𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor (a :: as))
Tactic:
dsimp [joinF.unitorLeftLax, joinF.unitorLeftOplax]
State after:
α : Type u
inst✝ : Category α
a : α
as : List α
h_ind : joinF.unitorLeftOplax as ≫ joinF.unitorLeftLax as = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor as)
⊢ DVect2.cons (𝟙 a ≫ 𝟙 a) (joinF.unitorLeftOplax as ≫ joinF.unitorLeftLax as) =
    𝟙 (Prefunctor.obj joinF.toPrefunctor (Prefunctor.obj singletonF.toPrefunctor (a :: as)))

State before:
α : Type u
inst✝ : Category α
a : α
as : List α
h_ind : joinF.unitorLeftOplax as ≫ joinF.unitorLeftLax as = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor as)
⊢ DVect2.cons (𝟙 a ≫ 𝟙 a) (joinF.unitorLeftOplax as ≫ joinF.unitorLeftLax as) =
    𝟙 (Prefunctor.obj joinF.toPrefunctor (Prefunctor.obj singletonF.toPrefunctor (a :: as)))
Tactic:
rw [h_ind, Category.id_comp]
State after:
α : Type u
inst✝ : Category α
a : α
as : List α
h_ind : joinF.unitorLeftOplax as ≫ joinF.unitorLeftLax as = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor as)
⊢ DVect2.cons (𝟙 a) (𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor as)) =
    𝟙 (Prefunctor.obj joinF.toPrefunctor (Prefunctor.obj singletonF.toPrefunctor (a :: as)))

State before:
α : Type u
inst✝ : Category α
a : α
as : List α
h_ind : joinF.unitorLeftOplax as ≫ joinF.unitorLeftLax as = 𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor as)
⊢ DVect2.cons (𝟙 a) (𝟙 (Prefunctor.obj (singletonF ⋙ joinF).toPrefunctor as)) =
    𝟙 (Prefunctor.obj joinF.toPrefunctor (Prefunctor.obj singletonF.toPrefunctor (a :: as)))
Tactic:
rfl
State after:
no goals