Theorem: CategoryTheory.MorphismProperty.IsInvertedBy.iff_of_iso
File: Mathlib/CategoryTheory/MorphismProperty.lean

tactic: suffices ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f) by
  constructor
  exact fun h X Y f hf => by
    rw [← this]
    exact h f hf
  exact fun h X Y f hf => by
    rw [this]
    exact h f hf
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
⊢ IsInvertedBy W F₁ ↔ IsInvertedBy W F₂

tactic: intro X Y f
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
⊢ ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f)

tactic: exact (RespectsIso.isomorphisms D).arrow_mk_iso_iff (Arrow.isoMk (e.app X) (e.app Y) (by simp))
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
X Y : C
f : X ⟶ Y
⊢ IsIso (F₁.map f) ↔ IsIso (F₂.map f)

tactic: constructor
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
this : ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f)
⊢ IsInvertedBy W F₁ ↔ IsInvertedBy W F₂

tactic: exact fun h X Y f hf => by
  rw [← this]
  exact h f hf
state_before: case mp
C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
this : ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f)
⊢ IsInvertedBy W F₁ → IsInvertedBy W F₂

case mpr
C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
this : ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f)
⊢ IsInvertedBy W F₂ → IsInvertedBy W F₁

tactic: exact fun h X Y f hf => by
  rw [this]
  exact h f hf
state_before: case mpr
C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
this : ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f)
⊢ IsInvertedBy W F₂ → IsInvertedBy W F₁

tactic: rw [← this]
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
this : ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f)
h : IsInvertedBy W F₁
X Y : C
f : X ⟶ Y
hf : W f
⊢ IsIso (F₂.map f)

tactic: exact h f hf
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
this : ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f)
h : IsInvertedBy W F₁
X Y : C
f : X ⟶ Y
hf : W f
⊢ IsIso (F₁.map f)

tactic: rw [this]
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
this : ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f)
h : IsInvertedBy W F₂
X Y : C
f : X ⟶ Y
hf : W f
⊢ IsIso (F₁.map f)

tactic: exact h f hf
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
this : ∀ (X Y : C) (f : X ⟶ Y), IsIso (F₁.map f) ↔ IsIso (F₂.map f)
h : IsInvertedBy W F₂
X Y : C
f : X ⟶ Y
hf : W f
⊢ IsIso (F₂.map f)

tactic: simp
state_before: C : Type u
inst✝¹ : Category C
D : Type u_2
inst✝ : Category D
W : MorphismProperty C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
X Y : C
f : X ⟶ Y
⊢ (e.app X).hom ≫ (Arrow.mk (F₂.map f)).hom = (Arrow.mk (F₁.map f)).hom ≫ (e.app Y).hom