-- Module: Mathlib.CategoryTheory.Limits.Types.Coproducts
Goal:
X Y : Type u
c : BinaryCofan X Y
h : IsColimit c
mp :
  Injective (α := X) (β := c.pt)
      (⇑(ConcreteCategory.hom (FC := TypeCat.Fun)
            (↾Sum.inl ≫ (h.coconePointUniqueUpToIso (binaryCoproductColimit X Y)).inv)) :
        (a : X) → c.pt) ∧
    Injective (α := Y) (β := c.pt)
        (⇑(ConcreteCategory.hom (FC := TypeCat.Fun)
              (↾Sum.inr ≫ (h.coconePointUniqueUpToIso (binaryCoproductColimit X Y)).inv)) :
          (a : Y) → c.pt) ∧
      IsCompl (α := Set c.pt)
        (Set.range (ι := X)
          (⇑(ConcreteCategory.hom (FC := TypeCat.Fun)
                (↾Sum.inl ≫ (h.coconePointUniqueUpToIso (binaryCoproductColimit X Y)).inv)) :
            (a : X) → c.pt))
        (Set.range (ι := Y)
          (⇑(ConcreteCategory.hom (FC := TypeCat.Fun)
                (↾Sum.inr ≫ (h.coconePointUniqueUpToIso (binaryCoproductColimit X Y)).inv)) :
            (a : Y) → c.pt))
⊢ Injective (α := (fun (X : Type u) ↦ X) (Functor.obj (pair X Y) { as := left : Discrete WalkingPair })) (β :=
      (fun (X : Type u) ↦ X)
        (Functor.obj (Functor.obj (Functor.const (Discrete WalkingPair)) c.pt) { as := left : Discrete WalkingPair }))
      (⇑(ConcreteCategory.hom (FC := TypeCat.Fun)
            ((binaryCoproductCocone X Y).ι.app { as := left : Discrete WalkingPair } ≫
              (h.coconePointUniqueUpToIso (binaryCoproductColimit X Y)).inv)) :
        (a : (fun (X : Type u) ↦ X) ((pair X Y).obj { as := left })) →
          (fun (X : Type u) ↦ X) (((Functor.const (Discrete WalkingPair)).obj c.pt).obj { as := left })) ∧
    Injective (α := (fun (X : Type u) ↦ X) (Functor.obj (pair X Y) { as := right : Discrete WalkingPair })) (β :=
        (fun (X : Type u) ↦ X)
          (Functor.obj (Functor.obj (Functor.const (Discrete WalkingPair)) c.pt)
            { as := right : Discrete WalkingPair }))
        (⇑(ConcreteCategory.hom (FC := TypeCat.Fun)
              ((binaryCoproductCocone X Y).ι.app { as := right : Discrete WalkingPair } ≫
                (h.coconePointUniqueUpToIso (binaryCoproductColimit X Y)).inv)) :
          (a : (fun (X : Type u) ↦ X) ((pair X Y).obj { as := right })) →
            (fun (X : Type u) ↦ X) (((Functor.const (Discrete WalkingPair)).obj c.pt).obj { as := right })) ∧
      IsCompl (α :=
        Set
          ((fun (X : Type u) ↦ X)
            (Functor.obj (Functor.obj (Functor.const (Discrete WalkingPair)) c.pt)
              { as := left : Discrete WalkingPair })))
        (Set.range (ι := (fun (X : Type u) ↦ X) (Functor.obj (pair X Y) { as := left : Discrete WalkingPair }))
          (⇑(ConcreteCategory.hom (FC := TypeCat.Fun)
                ((binaryCoproductCocone X Y).ι.app { as := left : Discrete WalkingPair } ≫
                  (h.coconePointUniqueUpToIso (binaryCoproductColimit X Y)).inv)) :
            (a : (fun (X : Type u) ↦ X) ((pair X Y).obj { as := left })) →
              (fun (X : Type u) ↦ X) (((Functor.const (Discrete WalkingPair)).obj c.pt).obj { as := left })))
        (Set.range (ι := (fun (X : Type u) ↦ X) (Functor.obj (pair X Y) { as := right : Discrete WalkingPair }))
          (⇑(ConcreteCategory.hom (FC := TypeCat.Fun)
                ((binaryCoproductCocone X Y).ι.app { as := right : Discrete WalkingPair } ≫
                  (h.coconePointUniqueUpToIso (binaryCoproductColimit X Y)).inv)) :
            (a : (fun (X : Type u) ↦ X) ((pair X Y).obj { as := right })) →
              (fun (X : Type u) ↦ X) (((Functor.const (Discrete WalkingPair)).obj c.pt).obj { as := right })))

Tactic:
dsimp [binaryCoproductCocone]

Premises used: CategoryTheory.Limits.Types.binaryCoproductCocone