Theorem: CategoryTheory.unit_transferNatTransSelf
File: Mathlib/CategoryTheory/Adjunction/Mates.lean

tactic: dsimp [transferNatTransSelf]
state_before: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
⊢ adj₁.unit.app X ≫ ((transferNatTransSelf adj₁ adj₂) f).app (L₁.obj X) = adj₂.unit.app X ≫ R₂.map (f.app X)
state_after: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
⊢ adj₁.unit.app X ≫
      𝟙 (R₁.obj (L₁.obj X)) ≫
        ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) ≫
          𝟙 (R₂.obj (L₁.obj X)) =
    adj₂.unit.app X ≫ R₂.map (f.app X)

tactic: rw [id_comp, comp_id]
state_before: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
⊢ adj₁.unit.app X ≫
      𝟙 (R₁.obj (L₁.obj X)) ≫
        ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) ≫
          𝟙 (R₂.obj (L₁.obj X)) =
    adj₂.unit.app X ≫ R₂.map (f.app X)
state_after: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
⊢ adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (f.app X)

tactic: have := unit_transferNatTrans adj₁ adj₂ (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv) X
state_before: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
⊢ adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (f.app X)
state_after: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
this :
  (𝟭 C).map (adj₁.unit.app X) ≫
      ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app ((𝟭 C).obj ((𝟭 C).obj X)) ≫ R₂.map ((L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv).app ((𝟭 C).obj X))
⊢ adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (f.app X)

tactic: dsimp at this
state_before: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
this :
  (𝟭 C).map (adj₁.unit.app X) ≫
      ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app ((𝟭 C).obj ((𝟭 C).obj X)) ≫ R₂.map ((L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv).app ((𝟭 C).obj X))
⊢ adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (f.app X)
state_after: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
this :
  adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (𝟙 (L₂.obj X) ≫ f.app X ≫ 𝟙 (L₁.obj X))
⊢ adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (f.app X)

tactic: rw [this]
state_before: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
this :
  adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (𝟙 (L₂.obj X) ≫ f.app X ≫ 𝟙 (L₁.obj X))
⊢ adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (f.app X)
state_after: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
this :
  adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (𝟙 (L₂.obj X) ≫ f.app X ≫ 𝟙 (L₁.obj X))
⊢ adj₂.unit.app X ≫ R₂.map (𝟙 (L₂.obj X) ≫ f.app X ≫ 𝟙 (L₁.obj X)) = adj₂.unit.app X ≫ R₂.map (f.app X)

tactic: simp
state_before: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : L₂ ⟶ L₁
X : C
this :
  adj₁.unit.app X ≫ ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app (L₁.obj X) =
    adj₂.unit.app X ≫ R₂.map (𝟙 (L₂.obj X) ≫ f.app X ≫ 𝟙 (L₁.obj X))
⊢ adj₂.unit.app X ≫ R₂.map (𝟙 (L₂.obj X) ≫ f.app X ≫ 𝟙 (L₁.obj X)) = adj₂.unit.app X ≫ R₂.map (f.app X)
state_after: no goals