Lean4
/-- The uniqueness of `lift`. -/
@[simp]
def liftUnique {D : Type*} [Category D] {Z : D} (F : C ⥤ D) (M : ∀ x : C, F.obj x ⟶ Z)
(hM : ∀ (x y : C) (f : x ⟶ y), F.map f ≫ M y = M x) (G : WithTerminal C ⥤ D) (h : incl ⋙ G ≅ F)
(hG : G.obj star ≅ Z) (hh : ∀ x : C, G.map (starTerminal.from (incl.obj x)) ≫ hG.hom = h.hom.app x ≫ M x) :
G ≅ lift F M hM :=
NatIso.ofComponents
(fun X =>
match X with
| of x => h.app x
| star => hG)
(by
rintro (X | X) (Y | Y) f
· apply h.hom.naturality
· cases f
exact hh _
· cases f
· cases f
change G.map (𝟙 _) ≫ hG.hom = hG.hom ≫ 𝟙 _
simp)