Theorem: CategoryTheory.transferNatTransSelf_counit
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 : D
⊢ L₂.map (((transferNatTransSelf adj₁ adj₂) f).app X) ≫ adj₂.counit.app X = f.app (R₁.obj X) ≫ adj₁.counit.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 : D
⊢ L₂.map
        (𝟙 (R₁.obj X) ≫
          ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X ≫ 𝟙 (R₂.obj X)) ≫
      adj₂.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.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 : D
⊢ L₂.map
        (𝟙 (R₁.obj X) ≫
          ((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X ≫ 𝟙 (R₂.obj X)) ≫
      adj₂.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.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 : D
⊢ L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.app X

tactic: have := transferNatTrans_counit 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 : D
⊢ L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.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 : D
this :
  L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫
      adj₂.counit.app ((𝟭 D).obj X) =
    (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv).app (R₁.obj X) ≫ (𝟭 D).map (adj₁.counit.app X)
⊢ L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.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 : D
this :
  L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫
      adj₂.counit.app ((𝟭 D).obj X) =
    (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv).app (R₁.obj X) ≫ (𝟭 D).map (adj₁.counit.app X)
⊢ L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.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 : D
this :
  L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    (𝟙 (L₂.obj (R₁.obj X)) ≫ f.app (R₁.obj X) ≫ 𝟙 (L₁.obj (R₁.obj X))) ≫ adj₁.counit.app X
⊢ L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.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 : D
this :
  L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    (𝟙 (L₂.obj (R₁.obj X)) ≫ f.app (R₁.obj X) ≫ 𝟙 (L₁.obj (R₁.obj X))) ≫ adj₁.counit.app X
⊢ L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.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 : D
this :
  L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    (𝟙 (L₂.obj (R₁.obj X)) ≫ f.app (R₁.obj X) ≫ 𝟙 (L₁.obj (R₁.obj X))) ≫ adj₁.counit.app X
⊢ (𝟙 (L₂.obj (R₁.obj X)) ≫ f.app (R₁.obj X) ≫ 𝟙 (L₁.obj (R₁.obj X))) ≫ adj₁.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.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 : D
this :
  L₂.map (((transferNatTrans adj₁ adj₂) (L₂.leftUnitor.hom ≫ f ≫ L₁.rightUnitor.inv)).app X) ≫ adj₂.counit.app X =
    (𝟙 (L₂.obj (R₁.obj X)) ≫ f.app (R₁.obj X) ≫ 𝟙 (L₁.obj (R₁.obj X))) ≫ adj₁.counit.app X
⊢ (𝟙 (L₂.obj (R₁.obj X)) ≫ f.app (R₁.obj X) ≫ 𝟙 (L₁.obj (R₁.obj X))) ≫ adj₁.counit.app X =
    f.app (R₁.obj X) ≫ adj₁.counit.app X
state_after: no goals