awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Cartesian.Over (goal)
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : HasPullbacks.{v_1, u_1} C
X A B R S Y Z : C
f : R ⟶ X
g : S ⟶ X
inst_2 : MonObj (mk f)
⊢ Eq.{v_1 + 1} (α :=
    (tensorObj (𝒞 := instCategoryOver) (mk (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X)))
          (mk (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X)))).left ⟶
      (mk f).left)
    (Hom.left (MonObj.mul ≫ homMk (pullback.fst f (𝟙 X)) ⋯))
    (Hom.left ((homMk (pullback.fst f (𝟙 X)) ⋯ ⊗ₘ homMk (pullback.fst f (𝟙 X)) ⋯) ≫ MonObj.mul))
have h : Eq (α :=
  Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
      (pullback.snd f (𝟙 X)) ⟶
    R)
  (CategoryStruct.comp (Y := Limits.pullback f (𝟙 X))
      (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
        (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f)))
        (pullback.lift (pullback.fst (pullback.fst f f ≫ f) (𝟙 X) ≫ Hom.left MonObj.mul)
          (pullback.snd (pullback.fst f f ≫ f) (𝟙 X)) sorry))
      (pullback.fst f (𝟙 X)) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
  (CategoryStruct.comp (Y := Limits.pullback f f)
      (Hom.left (homMk (pullback.fst f (𝟙 X)) sorry ⊗ₘ homMk (pullback.fst f (𝟙 X)) sorry)) (Hom.left MonObj.mul) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
Tactic: dsimp [monObjMkPullbackSnd_mul]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Cartesian.Over (goal)
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : HasPullbacks.{v_1, u_1} C
X A B R S Y Z : C
f : R ⟶ X
g : S ⟶ X
inst_2 : MonObj (mk f)
⊢ Eq (α :=
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
    (CategoryStruct.comp (Y := Limits.pullback f (𝟙 X))
        (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
          (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f)))
          (pullback.lift (pullback.fst (pullback.fst f f ≫ f) (𝟙 X) ≫ Hom.left MonObj.mul)
            (pullback.snd (pullback.fst f f ≫ f) (𝟙 X)) ⋯))
        (pullback.fst f (𝟙 X)) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        R)
    (CategoryStruct.comp (Y := Limits.pullback f f)
        (Hom.left (homMk (pullback.fst f (𝟙 X)) ⋯ ⊗ₘ homMk (pullback.fst f (𝟙 X)) ⋯)) (Hom.left MonObj.mul) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        R)
have h : Eq (α :=
  Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
      (pullback.snd f (𝟙 X)) ⟶
    R)
  (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
      (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f)))
      (pullback.fst (pullback.fst f f ≫ f) (𝟙 X) ≫ Hom.left MonObj.mul) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
  (CategoryStruct.comp (Y := Limits.pullback f f)
      (Hom.left (homMk (pullback.fst f (𝟙 X)) sorry ⊗ₘ homMk (pullback.fst f (𝟙 X)) sorry)) (Hom.left MonObj.mul) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
Tactic: simp only [Category.assoc, limit.lift_π, PullbackCone.mk_pt, PullbackCone.mk_π_app]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Cartesian.Over (goal)
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : HasPullbacks.{v_1, u_1} C
X A B R S Y Z : C
f : R ⟶ X
g : S ⟶ X
inst_2 : MonObj (mk f)
⊢ Eq (α :=
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
    (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
        (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f)))
        (pullback.fst (pullback.fst f f ≫ f) (𝟙 X) ≫ Hom.left MonObj.mul) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        R)
    (CategoryStruct.comp (Y := Limits.pullback f f)
        (Hom.left (homMk (pullback.fst f (𝟙 X)) ⋯ ⊗ₘ homMk (pullback.fst f (𝟙 X)) ⋯)) (Hom.left MonObj.mul) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        R)
have h : Eq (α :=
  Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
      (pullback.snd f (𝟙 X)) ⟶
    R)
  (CategoryStruct.comp (Y := Limits.pullback f f)
      (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
        (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f))) (pullback.fst (pullback.fst f f ≫ f) (𝟙 X)))
      (Hom.left MonObj.mul) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
  (CategoryStruct.comp (Y := Limits.pullback f f)
      (Hom.left (homMk (pullback.fst f (𝟙 X)) sorry ⊗ₘ homMk (pullback.fst f (𝟙 X)) sorry)) (Hom.left MonObj.mul) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
Tactic: simp only [← Category.assoc]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Cartesian.Over (goal)
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : HasPullbacks.{v_1, u_1} C
X A B R S Y Z : C
f : R ⟶ X
g : S ⟶ X
inst_2 : MonObj (mk f)
⊢ Eq (α :=
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
    (CategoryStruct.comp (Y := Limits.pullback f f)
        (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
          (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f))) (pullback.fst (pullback.fst f f ≫ f) (𝟙 X)))
        (Hom.left MonObj.mul) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        R)
    (CategoryStruct.comp (Y := Limits.pullback f f)
        (Hom.left (homMk (pullback.fst f (𝟙 X)) ⋯ ⊗ₘ homMk (pullback.fst f (𝟙 X)) ⋯)) (Hom.left MonObj.mul) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        R)
have h : Eq (α :=
  Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
      (pullback.snd f (𝟙 X)) ⟶
    Limits.pullback f f)
  (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
      (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f))) (pullback.fst (pullback.fst f f ≫ f) (𝟙 X)) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      Limits.pullback f f)
  (Hom.left (homMk (pullback.fst f (𝟙 X)) sorry ⊗ₘ homMk (pullback.fst f (𝟙 X)) sorry) :
    (tensorObj (𝒞 := instCategoryOver) (mk (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X)))
          (mk (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X)))).left ⟶
      (tensorObj (𝒞 := instCategoryOver) (mk f) (mk f)).left)
Tactic: congr 1
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Cartesian.Over (goal)
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : HasPullbacks.{v_1, u_1} C
X A B R S Y Z : C
f : R ⟶ X
g : S ⟶ X
inst_2 : MonObj (mk f)
⊢ Eq (α :=
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      Limits.pullback f f)
    (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
        (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f))) (pullback.fst (pullback.fst f f ≫ f) (𝟙 X)) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        Limits.pullback f f)
    (Hom.left (homMk (pullback.fst f (𝟙 X)) ⋯ ⊗ₘ homMk (pullback.fst f (𝟙 X)) ⋯) :
      (tensorObj (𝒞 := instCategoryOver) (mk (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X)))
            (mk (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X)))).left ⟶
        (tensorObj (𝒞 := instCategoryOver) (mk f) (mk f)).left)
have h : Eq (α :=
  Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
      (pullback.snd f (𝟙 X)) ⟶
    R)
  (CategoryStruct.comp (Y := Limits.pullback f f)
      (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
        (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f))) (pullback.fst (pullback.fst f f ≫ f) (𝟙 X)))
      (pullback.fst f f) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
  (CategoryStruct.comp (Y := Limits.pullback f f)
      (Hom.left (homMk (pullback.fst f (𝟙 X)) sorry ⊗ₘ homMk (pullback.fst f (𝟙 X)) sorry)) (pullback.fst f f) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
Tactic: ext
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Cartesian.Over (goal)
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : HasPullbacks.{v_1, u_1} C
X A B R S Y Z : C
f : R ⟶ X
g : S ⟶ X
inst_2 : MonObj (mk f)
h :
  Eq (α :=
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
    (CategoryStruct.comp (Y := Limits.pullback f f)
        (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
          (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f))) (pullback.fst (pullback.fst f f ≫ f) (𝟙 X)))
        (pullback.fst f f) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        R)
    (CategoryStruct.comp (Y := Limits.pullback f f)
        (Hom.left (homMk (pullback.fst f (𝟙 X)) ⋯ ⊗ₘ homMk (pullback.fst f (𝟙 X)) ⋯)) (pullback.fst f f) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        R)
⊢ Eq (α :=
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      Limits.pullback f f)
    (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
        (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f))) (pullback.fst (pullback.fst f f ≫ f) (𝟙 X)) :
      Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
          (pullback.snd f (𝟙 X)) ⟶
        Limits.pullback f f)
    (Hom.left (homMk (pullback.fst f (𝟙 X)) ⋯ ⊗ₘ homMk (pullback.fst f (𝟙 X)) ⋯) :
      (tensorObj (𝒞 := instCategoryOver) (mk (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X)))
            (mk (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X)))).left ⟶
        (tensorObj (𝒞 := instCategoryOver) (mk f) (mk f)).left)
have h₁ : Eq (α :=
  Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
      (pullback.snd f (𝟙 X)) ⟶
    R)
  (CategoryStruct.comp (Y := Limits.pullback f f)
      (CategoryStruct.comp (Y := Limits.pullback (X := Limits.pullback f f) (pullback.fst f f ≫ f) (𝟙 X))
        (Hom.left (LaxMonoidal.μ (pullback (𝟙 X)) (mk f) (mk f))) (pullback.fst (pullback.fst f f ≫ f) (𝟙 X)))
      (pullback.snd f f) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
  (CategoryStruct.comp (Y := Limits.pullback f f)
      (Hom.left (homMk (pullback.fst f (𝟙 X)) sorry ⊗ₘ homMk (pullback.fst f (𝟙 X)) sorry)) (pullback.snd f f) :
    Limits.pullback (X := Limits.pullback f (𝟙 X)) (Y := Limits.pullback f (𝟙 X)) (pullback.snd f (𝟙 X))
        (pullback.snd f (𝟙 X)) ⟶
      R)
Tactic: ext
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Cartesian.ShrinkYoneda (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : LocallySmall.{w, v, u} C
inst_2 : CartesianMonoidalCategory.{v, u} C
M : Mon.{v, u} C
X : Cᵒᵖ
⊢ Small.{w, v} (↑((Functor.obj yonedaMon M).obj X) : Type v)
have dsimp : Small.{w, v} (unop X ⟶ M.X)
Tactic: dsimp
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Cartesian.ShrinkYoneda (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : LocallySmall.{w, v, u} C
inst_2 : CartesianMonoidalCategory.{v, u} C
M : Grp.{v, u} C
X : Cᵒᵖ
⊢ Small.{w, v} (↑((Functor.obj yonedaGrp M).obj X) : Type v)
have dsimp : Small.{w, v} (unop X ⟶ M.X)
Tactic: dsimp
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y : C
f : X ⟶ Y
⊢ tensorUnit.{v, u} C (𝒞 := inst) ◁ f = hom (λ_ X) ≫ f ≫ Iso.inv (λ_ Y)
have rw : tensorUnit.{v, u} C (𝒞 := inst) ◁ f = (tensorUnit.{v, u} C (𝒞 := inst) ◁ f ≫ hom (λ_ Y)) ≫ Iso.inv (λ_ Y)
Tactic: rw [← assoc, ← leftUnitor_naturality]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z Z' : C
f : Z ⟶ Z'
⊢ tensorObj.{v, u} (𝒞 := inst) X Y ◁ f = hom (α_ X Y Z) ≫ X ◁ Y ◁ f ≫ Iso.inv (α_ X Y Z')
have simp : 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y) ⊗ₘ f = hom (α_ X Y Z) ≫ (𝟙 X ⊗ₘ 𝟙 Y ⊗ₘ f) ≫ Iso.inv (α_ X Y Z')
Tactic: simp only [← id_tensorHom]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z Z' : C
f : Z ⟶ Z'
⊢ 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y) ⊗ₘ f = hom (α_ X Y Z) ≫ (𝟙 X ⊗ₘ 𝟙 Y ⊗ₘ f) ≫ Iso.inv (α_ X Y Z')
have rw : 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y) ⊗ₘ f = (((𝟙 X ⊗ₘ 𝟙 Y) ⊗ₘ f) ≫ hom (α_ X Y Z')) ≫ Iso.inv (α_ X Y Z')
Tactic: rw [← assoc, ← associator_naturality]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y : C
f : X ⟶ Y
⊢ Eq (α :=
    tensorObj.{v, u} (𝒞 := inst) X (tensorUnit.{v, u} C (𝒞 := inst)) ⟶
      tensorObj.{v, u} (𝒞 := inst) Y (tensorUnit.{v, u} C (𝒞 := inst)))
    (f ▷ tensorUnit.{v, u} C (𝒞 := inst)) (hom (ρ_ X) ≫ f ≫ Iso.inv (ρ_ Y))
have rw : Eq (α :=
  tensorObj.{v, u} (𝒞 := inst) X (tensorUnit.{v, u} C (𝒞 := inst)) ⟶
    tensorObj.{v, u} (𝒞 := inst) Y (tensorUnit.{v, u} C (𝒞 := inst)))
  (f ▷ tensorUnit.{v, u} C (𝒞 := inst)) ((f ▷ tensorUnit.{v, u} C (𝒞 := inst) ≫ hom (ρ_ Y)) ≫ Iso.inv (ρ_ Y))
Tactic: rw [← assoc, ← rightUnitor_naturality]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X X' : C
f : X ⟶ X'
Y Z : C
⊢ Eq (α :=
    tensorObj.{v, u} (𝒞 := inst) X (tensorObj.{v, u} (𝒞 := inst) Y Z) ⟶
      tensorObj.{v, u} (𝒞 := inst) X' (tensorObj.{v, u} (𝒞 := inst) Y Z))
    (f ▷ tensorObj.{v, u} (𝒞 := inst) Y Z) (Iso.inv (α_ X Y Z) ≫ f ▷ Y ▷ Z ≫ hom (α_ X' Y Z))
have simp : f ⊗ₘ 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z) = Iso.inv (α_ X Y Z) ≫ ((f ⊗ₘ 𝟙 Y) ⊗ₘ 𝟙 Z) ≫ hom (α_ X' Y Z)
Tactic: simp only [← tensorHom_id]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X X' : C
f : X ⟶ X'
Y Z : C
⊢ f ⊗ₘ 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z) = Iso.inv (α_ X Y Z) ≫ ((f ⊗ₘ 𝟙 Y) ⊗ₘ 𝟙 Z) ≫ hom (α_ X' Y Z)
have rw : f ⊗ₘ 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z) = Iso.inv (α_ X Y Z) ≫ hom (α_ X Y Z) ≫ (f ⊗ₘ 𝟙 Y ⊗ₘ 𝟙 Z)
Tactic: rw [associator_naturality]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Y' : C
f : Y ⟶ Y'
Z : C
⊢ Eq (α :=
    tensorObj.{v, u} (𝒞 := inst) (tensorObj.{v, u} (𝒞 := inst) X Y) Z ⟶
      tensorObj.{v, u} (𝒞 := inst) (tensorObj.{v, u} (𝒞 := inst) X Y') Z)
    ((X ◁ f) ▷ Z) (hom (α_ X Y Z) ≫ X ◁ f ▷ Z ≫ Iso.inv (α_ X Y' Z))
have simp : Eq (α :=
  tensorObj.{v, u} (𝒞 := inst) (tensorObj.{v, u} (𝒞 := inst) X Y) Z ⟶
    tensorObj.{v, u} (𝒞 := inst) (tensorObj.{v, u} (𝒞 := inst) X Y') Z)
  ((𝟙 X ⊗ₘ f) ⊗ₘ 𝟙 Z) (hom (α_ X Y Z) ≫ (𝟙 X ⊗ₘ f ⊗ₘ 𝟙 Z) ≫ Iso.inv (α_ X Y' Z))
Tactic: simp only [← id_tensorHom, ← tensorHom_id]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Y' : C
f : Y ⟶ Y'
Z : C
⊢ Eq (α :=
    tensorObj.{v, u} (𝒞 := inst) (tensorObj.{v, u} (𝒞 := inst) X Y) Z ⟶
      tensorObj.{v, u} (𝒞 := inst) (tensorObj.{v, u} (𝒞 := inst) X Y') Z)
    ((𝟙 X ⊗ₘ f) ⊗ₘ 𝟙 Z) (hom (α_ X Y Z) ≫ (𝟙 X ⊗ₘ f ⊗ₘ 𝟙 Z) ≫ Iso.inv (α_ X Y' Z))
have rw : Eq (α :=
  tensorObj.{v, u} (𝒞 := inst) (tensorObj.{v, u} (𝒞 := inst) X Y) Z ⟶
    tensorObj.{v, u} (𝒞 := inst) (tensorObj.{v, u} (𝒞 := inst) X Y') Z)
  ((𝟙 X ⊗ₘ f) ⊗ₘ 𝟙 Z) ((((𝟙 X ⊗ₘ f) ⊗ₘ 𝟙 Z) ≫ hom (α_ X Y' Z)) ≫ Iso.inv (α_ X Y' Z))
Tactic: rw [← assoc, ← associator_naturality]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z : C
f : Y ≅ Z
⊢ X ◁ f.hom ≫ X ◁ f.inv = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
have rw : X ◁ (f.hom ≫ f.inv) = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
Tactic: rw [← whiskerLeft_comp, hom_inv_id, whiskerLeft_id]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z : C
f : Y ≅ Z
rw : X ◁ (f.hom ≫ f.inv) = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
⊢ X ◁ f.hom ≫ X ◁ f.inv = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
have rw₁ : X ◁ 𝟙 Y = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
Tactic: rw [← whiskerLeft_comp, hom_inv_id, whiskerLeft_id]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z : C
f : Y ≅ Z
rw : X ◁ (f.hom ≫ f.inv) = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
rw₁ : X ◁ 𝟙 Y = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
⊢ X ◁ f.hom ≫ X ◁ f.inv = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
have rw₂ : Eq.{v + 1} (α := tensorObj.{v, u} (𝒞 := inst) X Y ⟶ tensorObj.{v, u} (𝒞 := inst) X Y)
  (𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)) (𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y))
Tactic: rw [← whiskerLeft_comp, hom_inv_id, whiskerLeft_id]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y : C
f : X ≅ Y
Z : C
⊢ f.hom ▷ Z ≫ f.inv ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
have rw : (f.hom ≫ f.inv) ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
Tactic: rw [← comp_whiskerRight, hom_inv_id, id_whiskerRight]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y : C
f : X ≅ Y
Z : C
rw : (f.hom ≫ f.inv) ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
⊢ f.hom ▷ Z ≫ f.inv ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
have rw₁ : 𝟙 X ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
Tactic: rw [← comp_whiskerRight, hom_inv_id, id_whiskerRight]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y : C
f : X ≅ Y
Z : C
rw : (f.hom ≫ f.inv) ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
rw₁ : 𝟙 X ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
⊢ f.hom ▷ Z ≫ f.inv ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
have rw₂ : Eq.{v + 1} (α := tensorObj.{v, u} (𝒞 := inst) X Z ⟶ tensorObj.{v, u} (𝒞 := inst) X Z)
  (𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)) (𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z))
Tactic: rw [← comp_whiskerRight, hom_inv_id, id_whiskerRight]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z : C
f : Y ≅ Z
⊢ X ◁ f.inv ≫ X ◁ f.hom = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
have rw : X ◁ (f.inv ≫ f.hom) = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
Tactic: rw [← whiskerLeft_comp, inv_hom_id, whiskerLeft_id]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z : C
f : Y ≅ Z
rw : X ◁ (f.inv ≫ f.hom) = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
⊢ X ◁ f.inv ≫ X ◁ f.hom = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
have rw₁ : X ◁ 𝟙 Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
Tactic: rw [← whiskerLeft_comp, inv_hom_id, whiskerLeft_id]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z : C
f : Y ≅ Z
rw : X ◁ (f.inv ≫ f.hom) = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
rw₁ : X ◁ 𝟙 Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
⊢ X ◁ f.inv ≫ X ◁ f.hom = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)
have rw₂ : Eq.{v + 1} (α := tensorObj.{v, u} (𝒞 := inst) X Z ⟶ tensorObj.{v, u} (𝒞 := inst) X Z)
  (𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z)) (𝟙 (tensorObj.{v, u} (𝒞 := inst) X Z))
Tactic: rw [← whiskerLeft_comp, inv_hom_id, whiskerLeft_id]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y : C
f : X ≅ Y
Z : C
⊢ f.inv ▷ Z ≫ f.hom ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z)
have rw : (f.inv ≫ f.hom) ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z)
Tactic: rw [← comp_whiskerRight, inv_hom_id, id_whiskerRight]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y : C
f : X ≅ Y
Z : C
rw : (f.inv ≫ f.hom) ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z)
⊢ f.inv ▷ Z ≫ f.hom ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z)
have rw₁ : 𝟙 Y ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z)
Tactic: rw [← comp_whiskerRight, inv_hom_id, id_whiskerRight]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y : C
f : X ≅ Y
Z : C
rw : (f.inv ≫ f.hom) ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z)
rw₁ : 𝟙 Y ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z)
⊢ f.inv ▷ Z ≫ f.hom ▷ Z = 𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z)
have rw₂ : Eq.{v + 1} (α := tensorObj.{v, u} (𝒞 := inst) Y Z ⟶ tensorObj.{v, u} (𝒞 := inst) Y Z)
  (𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z)) (𝟙 (tensorObj.{v, u} (𝒞 := inst) Y Z))
Tactic: rw [← comp_whiskerRight, inv_hom_id, id_whiskerRight]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z : C
f : Y ⟶ Z
inst_2 : IsIso f
⊢ X ◁ f ≫ X ◁ inv f = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
have rw : X ◁ (f ≫ inv f) = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
Tactic: rw [← whiskerLeft_comp, IsIso.hom_inv_id, whiskerLeft_id]
-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Category (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : MonoidalCategory.{v, u} C
X Y Z : C
f : Y ⟶ Z
inst_2 : IsIso f
rw : X ◁ (f ≫ inv f) = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
⊢ X ◁ f ≫ X ◁ inv f = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
have rw₁ : X ◁ 𝟙 Y = 𝟙 (tensorObj.{v, u} (𝒞 := inst) X Y)
Tactic: rw [← whiskerLeft_comp, IsIso.hom_inv_id, whiskerLeft_id]