case mk
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
F' : MonoFactorisation f
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝ : Mono Fm
e✝ : X ⟶ I✝
Ffac : e✝ ≫ Fm = f
hI : (mk I✝ Fm e✝).I = F'.I
hm : (mk I✝ Fm e✝).m = eqToHom hI ≫ F'.m
⊢ mk I✝ Fm e✝ = F'
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
F F' : MonoFactorisation f
hI : F.I = F'.I
hm : F.m = eqToHom hI ≫ F'.m
⊢ F = F'
cases' F with _ Fm _ _ Ffac
case mk.mk
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝¹ : C
Fm : I✝¹ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝¹
Ffac : e✝¹ ≫ Fm = f
I✝ : C
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hI : (mk I✝¹ Fm e✝¹).I = (mk I✝ Fm' e✝).I
hm : (mk I✝¹ Fm e✝¹).m = eqToHom hI ≫ (mk I✝ Fm' e✝).m
⊢ mk I✝¹ Fm e✝¹ = mk I✝ Fm' e✝
case mk
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
F' : MonoFactorisation f
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝ : Mono Fm
e✝ : X ⟶ I✝
Ffac : e✝ ≫ Fm = f
hI : (mk I✝ Fm e✝).I = F'.I
hm : (mk I✝ Fm e✝).m = eqToHom hI ≫ F'.m
⊢ mk I✝ Fm e✝ = F'
cases' F' with _ Fm' _ _ Ffac'
case mk.mk.refl
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : (mk I✝ Fm e✝¹).m = eqToHom (_ : (mk I✝ Fm e✝¹).I = (mk I✝ Fm e✝¹).I) ≫ (mk I✝ Fm' e✝).m
⊢ mk I✝ Fm e✝¹ = mk I✝ Fm' e✝
case mk.mk
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝¹ : C
Fm : I✝¹ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝¹
Ffac : e✝¹ ≫ Fm = f
I✝ : C
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hI : (mk I✝¹ Fm e✝¹).I = (mk I✝ Fm' e✝).I
hm : (mk I✝¹ Fm e✝¹).m = eqToHom hI ≫ (mk I✝ Fm' e✝).m
⊢ mk I✝¹ Fm e✝¹ = mk I✝ Fm' e✝
cases' hI
case mk.mk.refl
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ mk I✝ Fm e✝¹ = mk I✝ Fm' e✝
case mk.mk.refl
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : (mk I✝ Fm e✝¹).m = eqToHom (_ : (mk I✝ Fm e✝¹).I = (mk I✝ Fm e✝¹).I) ≫ (mk I✝ Fm' e✝).m
⊢ mk I✝ Fm e✝¹ = mk I✝ Fm' e✝
simp at hm
case mk.mk.refl
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ mk I✝ Fm e✝¹ = mk I✝ Fm' e✝
case mk.mk.refl
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ mk I✝ Fm e✝¹ = mk I✝ Fm' e✝
dsimp at Ffac Ffac'
case mk.mk.refl.e_e
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ e✝¹ = e✝
case mk.mk.refl
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ mk I✝ Fm e✝¹ = mk I✝ Fm' e✝
congr
case mk.mk.refl.e_e
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ e✝¹ ≫ Fm = e✝ ≫ Fm
case mk.mk.refl.e_e
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ e✝¹ = e✝
apply (cancel_mono Fm).1
no goals
case mk.mk.refl.e_e
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ e✝¹ ≫ Fm = e✝ ≫ Fm
rw [Ffac, hm, Ffac']