Theorem: CategoryTheory.expComparison_whiskerLeft
File: Mathlib/CategoryTheory/Closed/Functor.lean

tactic: ext B
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
D : Type u'
inst✝⁵ : Category.{v, u'} D
inst✝⁴ : HasFiniteProducts C
inst✝³ : HasFiniteProducts D
F : C ⥤ D
L : D ⥤ C
inst✝² : CartesianClosed C
inst✝¹ : CartesianClosed D
inst✝ : PreservesLimitsOfShape (Discrete WalkingPair) F
A A' : C
f : A' ⟶ A
⊢ expComparison F A ≫ whiskerLeft F (pre (F.map f)) = whiskerRight (pre f) F ≫ expComparison F A'
state_after: case w.h
C : Type u
inst✝⁶ : Category.{v, u} C
D : Type u'
inst✝⁵ : Category.{v, u'} D
inst✝⁴ : HasFiniteProducts C
inst✝³ : HasFiniteProducts D
F : C ⥤ D
L : D ⥤ C
inst✝² : CartesianClosed C
inst✝¹ : CartesianClosed D
inst✝ : PreservesLimitsOfShape (Discrete WalkingPair) F
A A' : C
f : A' ⟶ A
B : C
⊢ (expComparison F A ≫ whiskerLeft F (pre (F.map f))).app B = (whiskerRight (pre f) F ≫ expComparison F A').app B

tactic: dsimp
state_before: case w.h
C : Type u
inst✝⁶ : Category.{v, u} C
D : Type u'
inst✝⁵ : Category.{v, u'} D
inst✝⁴ : HasFiniteProducts C
inst✝³ : HasFiniteProducts D
F : C ⥤ D
L : D ⥤ C
inst✝² : CartesianClosed C
inst✝¹ : CartesianClosed D
inst✝ : PreservesLimitsOfShape (Discrete WalkingPair) F
A A' : C
f : A' ⟶ A
B : C
⊢ (expComparison F A ≫ whiskerLeft F (pre (F.map f))).app B = (whiskerRight (pre f) F ≫ expComparison F A').app B
state_after: case w.h
C : Type u
inst✝⁶ : Category.{v, u} C
D : Type u'
inst✝⁵ : Category.{v, u'} D
inst✝⁴ : HasFiniteProducts C
inst✝³ : HasFiniteProducts D
F : C ⥤ D
L : D ⥤ C
inst✝² : CartesianClosed C
inst✝¹ : CartesianClosed D
inst✝ : PreservesLimitsOfShape (Discrete WalkingPair) F
A A' : C
f : A' ⟶ A
B : C
⊢ (expComparison F A).app B ≫ (pre (F.map f)).app (F.obj B) = F.map ((pre f).app B) ≫ (expComparison F A').app B

tactic: apply uncurry_injective
state_before: case w.h
C : Type u
inst✝⁶ : Category.{v, u} C
D : Type u'
inst✝⁵ : Category.{v, u'} D
inst✝⁴ : HasFiniteProducts C
inst✝³ : HasFiniteProducts D
F : C ⥤ D
L : D ⥤ C
inst✝² : CartesianClosed C
inst✝¹ : CartesianClosed D
inst✝ : PreservesLimitsOfShape (Discrete WalkingPair) F
A A' : C
f : A' ⟶ A
B : C
⊢ (expComparison F A).app B ≫ (pre (F.map f)).app (F.obj B) = F.map ((pre f).app B) ≫ (expComparison F A').app B
state_after: case w.h.a
C : Type u
inst✝⁶ : Category.{v, u} C
D : Type u'
inst✝⁵ : Category.{v, u'} D
inst✝⁴ : HasFiniteProducts C
inst✝³ : HasFiniteProducts D
F : C ⥤ D
L : D ⥤ C
inst✝² : CartesianClosed C
inst✝¹ : CartesianClosed D
inst✝ : PreservesLimitsOfShape (Discrete WalkingPair) F
A A' : C
f : A' ⟶ A
B : C
⊢ uncurry ((expComparison F A).app B ≫ (pre (F.map f)).app (F.obj B)) =
    uncurry (F.map ((pre f).app B) ≫ (expComparison F A').app B)

tactic: rw [uncurry_natural_left, uncurry_natural_left, uncurry_expComparison, uncurry_pre,
  prod.map_swap_assoc, ← F.map_id, expComparison_ev, ← F.map_id, ←
  prodComparison_inv_natural_assoc, ← prodComparison_inv_natural_assoc, ← F.map_comp, ←
  F.map_comp, prod_map_pre_app_comp_ev]
state_before: case w.h.a
C : Type u
inst✝⁶ : Category.{v, u} C
D : Type u'
inst✝⁵ : Category.{v, u'} D
inst✝⁴ : HasFiniteProducts C
inst✝³ : HasFiniteProducts D
F : C ⥤ D
L : D ⥤ C
inst✝² : CartesianClosed C
inst✝¹ : CartesianClosed D
inst✝ : PreservesLimitsOfShape (Discrete WalkingPair) F
A A' : C
f : A' ⟶ A
B : C
⊢ uncurry ((expComparison F A).app B ≫ (pre (F.map f)).app (F.obj B)) =
    uncurry (F.map ((pre f).app B) ≫ (expComparison F A').app B)
state_after: no goals