Theorem: CategoryTheory.MorphismProperty.RespectsIso.inverseImage
File: Mathlib/CategoryTheory/MorphismProperty/Basic.lean

tactic: constructor
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
⊢ (P.inverseImage F).RespectsIso
state_after: case left
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
⊢ ∀ {X Y Z : C} (e : X ≅ Y) (f : Y ⟶ Z), P.inverseImage F f → P.inverseImage F (e.hom ≫ f)

case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
⊢ ∀ {X Y Z : C} (e : Y ≅ Z) (f : X ⟶ Y), P.inverseImage F f → P.inverseImage F (f ≫ e.hom)

tactic: all_goals
  intro X Y Z e f hf
  dsimp [MorphismProperty.inverseImage]
  rw [F.map_comp]
state_before: case left
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
⊢ ∀ {X Y Z : C} (e : X ≅ Y) (f : Y ⟶ Z), P.inverseImage F f → P.inverseImage F (e.hom ≫ f)

case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
⊢ ∀ {X Y Z : C} (e : Y ≅ Z) (f : X ⟶ Y), P.inverseImage F f → P.inverseImage F (f ≫ e.hom)
state_after: case left
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
X Y Z : C
e : X ≅ Y
f : Y ⟶ Z
hf : P.inverseImage F f
⊢ P (F.map e.hom ≫ F.map f)

case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
hf : P.inverseImage F f
⊢ P (F.map f ≫ F.map e.hom)

tactic: exacts [h.1 (F.mapIso e) (F.map f) hf, h.2 (F.mapIso e) (F.map f) hf]
state_before: case left
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
X Y Z : C
e : X ≅ Y
f : Y ⟶ Z
hf : P.inverseImage F f
⊢ P (F.map e.hom ≫ F.map f)

case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
hf : P.inverseImage F f
⊢ P (F.map f ≫ F.map e.hom)
state_after: no goals

tactic: intro X Y Z e f hf
state_before: case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
⊢ ∀ {X Y Z : C} (e : Y ≅ Z) (f : X ⟶ Y), P.inverseImage F f → P.inverseImage F (f ≫ e.hom)
state_after: case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
hf : P.inverseImage F f
⊢ P.inverseImage F (f ≫ e.hom)

tactic: dsimp [MorphismProperty.inverseImage]
state_before: case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
hf : P.inverseImage F f
⊢ P.inverseImage F (f ≫ e.hom)
state_after: case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
hf : P.inverseImage F f
⊢ P (F.map (f ≫ e.hom))

tactic: rw [F.map_comp]
state_before: case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
hf : P.inverseImage F f
⊢ P (F.map (f ≫ e.hom))
state_after: case right
C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
P : MorphismProperty D
h : P.RespectsIso
F : C ⥤ D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
hf : P.inverseImage F f
⊢ P (F.map f ≫ F.map e.hom)