-- Lean 4 proof step from Mathlib.Topology.Category.TopCat.Limits.Products (goal)
Goal:
W X Y Z : TopCat
f : W ⟶ Y
g : X ⟶ Z
y : (↑(W ⨯ X) : Type u)
h h₁ :
  Membership.mem (α := (↑(Y ⨯ Z) : Type u)) (γ := Set (↑(Y ⨯ Z) : Type u))
    (preimage (β := (↑Y : Type u))
        (⇑(@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
              (Y ⨯ Z) _ prod.fst) :
          (a : (↑(Y ⨯ Z) : Type u)) → (↑Y : Type u))
        (range (ι := (↑W : Type u))
          (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) f) :
            (a : (↑W : Type u)) → (↑Y : Type u))) ∩
      preimage (β := (↑Z : Type u))
        (⇑(@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
              (Y ⨯ Z) _ prod.snd) :
          (a : (↑(Y ⨯ Z) : Type u)) → (↑Z : Type u))
        (range (ι := (↑X : Type u))
          (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) g) :
            (a : (↑X : Type u)) → (↑Z : Type u))))
    ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) (X := W ⨯ X)
            (Y := Y ⨯ Z) (prod.map f g) :
          (a : (↑(W ⨯ X) : Type u)) → (↑(Y ⨯ Z) : Type u))
        y :
      (↑(Y ⨯ Z) : Type u))
h₂ :
  Membership.mem (α := (↑(Y ⨯ Z) : Type u)) (γ := Set (↑(Y ⨯ Z) : Type u))
      (preimage (β := (↑Y : Type u))
        (⇑(@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
              (Y ⨯ Z) _ prod.fst) :
          (a : (↑(Y ⨯ Z) : Type u)) → (↑Y : Type u))
        (range (ι := (↑W : Type u))
          (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) f) :
            (a : (↑W : Type u)) → (↑Y : Type u))))
      ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) (X :=
              W ⨯ X) (Y := Y ⨯ Z) (prod.map f g) :
            (a : (↑(W ⨯ X) : Type u)) → (↑(Y ⨯ Z) : Type u))
          y :
        (↑(Y ⨯ Z) : Type u)) ∧
    Membership.mem (α := (↑(Y ⨯ Z) : Type u)) (γ := Set (↑(Y ⨯ Z) : Type u))
      (preimage (β := (↑Z : Type u))
        (⇑(@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
              (Y ⨯ Z) _ prod.snd) :
          (a : (↑(Y ⨯ Z) : Type u)) → (↑Z : Type u))
        (range (ι := (↑X : Type u))
          (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) g) :
            (a : (↑X : Type u)) → (↑Z : Type u))))
      ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) (X :=
              W ⨯ X) (Y := Y ⨯ Z) (prod.map f g) :
            (a : (↑(W ⨯ X) : Type u)) → (↑(Y ⨯ Z) : Type u))
          y :
        (↑(Y ⨯ Z) : Type u))
h₃ :
  Membership.mem (α := (↑Y : Type u)) (γ := Set (↑Y : Type u))
      (range (ι := (↑W : Type u))
        (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) f) :
          (a : (↑W : Type u)) → (↑Y : Type u)))
      ((@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
              (Y ⨯ Z) _ prod.fst :
            (a : (↑(Y ⨯ Z) : Type u)) → (↑Y : Type u))
          ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) (X :=
                  W ⨯ X) (Y := Y ⨯ Z) (prod.map f g) :
                (a : (↑(W ⨯ X) : Type u)) → (↑(Y ⨯ Z) : Type u))
              y :
            (↑(Y ⨯ Z) : Type u)) :
        (↑Y : Type u)) ∧
    Membership.mem (α := (↑Z : Type u)) (γ := Set (↑Z : Type u))
      (range (ι := (↑X : Type u))
        (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) g) :
          (a : (↑X : Type u)) → (↑Z : Type u)))
      ((@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
              (Y ⨯ Z) _ prod.snd :
            (a : (↑(Y ⨯ Z) : Type u)) → (↑Z : Type u))
          ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) (X :=
                  W ⨯ X) (Y := Y ⨯ Z) (prod.map f g) :
                (a : (↑(W ⨯ X) : Type u)) → (↑(Y ⨯ Z) : Type u))
              y :
            (↑(Y ⨯ Z) : Type u)) :
        (↑Z : Type u))
h₄ :
  (∃ (y_1 : (↑W : Type u)),
      Eq (α := (↑Y : Type u))
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) f :
              (a : (↑W : Type u)) → (↑Y : Type u))
            y_1 :
          (↑Y : Type u))
        ((@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
                (Y ⨯ Z) _ prod.fst :
              (a : (↑(Y ⨯ Z) : Type u)) → (↑Y : Type u))
            ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier)
                    (X := W ⨯ X) (Y := Y ⨯ Z) (prod.map f g) :
                  (a : (↑(W ⨯ X) : Type u)) → (↑(Y ⨯ Z) : Type u))
                y :
              (↑(Y ⨯ Z) : Type u)) :
          (↑Y : Type u))) ∧
    ∃ (y_1 : (↑X : Type u)),
      Eq (α := (↑Z : Type u))
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) g :
              (a : (↑X : Type u)) → (↑Z : Type u))
            y_1 :
          (↑Z : Type u))
        ((@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
                (Y ⨯ Z) _ prod.snd :
              (a : (↑(Y ⨯ Z) : Type u)) → (↑Z : Type u))
            ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier)
                    (X := W ⨯ X) (Y := Y ⨯ Z) (prod.map f g) :
                  (a : (↑(W ⨯ X) : Type u)) → (↑(Y ⨯ Z) : Type u))
                y :
              (↑(Y ⨯ Z) : Type u)) :
          (↑Z : Type u))
⊢ Membership.mem (α := (↑(Y ⨯ Z) : Type u)) (γ := Set (↑(Y ⨯ Z) : Type u))
    (preimage (β := (↑Y : Type u))
        (⇑(@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
              (Y ⨯ Z) _ prod.fst) :
          (a : (↑(Y ⨯ Z) : Type u)) → (↑Y : Type u))
        (range (ι := (↑W : Type u))
          (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) f) :
            (a : (↑W : Type u)) → (↑Y : Type u))) ∩
      preimage (β := (↑Z : Type u))
        (⇑(@ConcreteCategory.hom _ instCategory (fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) carrier _ _
              (Y ⨯ Z) _ prod.snd) :
          (a : (↑(Y ⨯ Z) : Type u)) → (↑Z : Type u))
        (range (ι := (↑X : Type u))
          (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) g) :
            (a : (↑X : Type u)) → (↑Z : Type u))))
    ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) (X := W ⨯ X)
            (Y := Y ⨯ Z) (prod.map f g) :
          (a : (↑(W ⨯ X) : Type u)) → (↑(Y ⨯ Z) : Type u))
        y :
      (↑(Y ⨯ Z) : Type u))
have h₅ : (∃ (y_1 : (↑W : Type u)),
    Eq (α := (↑Y : Type u))
      ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) f :
            (a : (↑W : Type u)) → (↑Y : Type u))
          y_1 :
        (↑Y : Type u))
      ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) (X :=
              W ⨯ X) (CategoryStruct.comp (Y := Y ⨯ Z) (prod.map f g) prod.fst) :
            (a : (↑(W ⨯ X) : Type u)) → (↑Y : Type u))
          y :
        (↑Y : Type u))) ∧
  ∃ (y_1 : (↑X : Type u)),
    Eq (α := (↑Z : Type u))
      ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) g :
            (a : (↑X : Type u)) → (↑Z : Type u))
          y_1 :
        (↑Z : Type u))
      ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u}) ↦ C((↑X : Type u), (↑Y : Type u))) (CC := carrier) (X :=
              W ⨯ X) (CategoryStruct.comp (Y := Y ⨯ Z) (prod.map f g) prod.snd) :
            (a : (↑(W ⨯ X) : Type u)) → (↑Z : Type u))
          y :
        (↑Z : Type u))
Tactic: simp_rw [Set.mem_inter_iff, Set.mem_preimage, Set.mem_range, ← ConcreteCategory.comp_apply,
      Limits.prod.map_fst, Limits.prod.map_snd, ConcreteCategory.comp_apply, exists_apply_eq_apply,
      and_self_iff]