Module: Mathlib.CategoryTheory.Limits.Shapes.Pullback.PullbackCone

Goal state before:
pp: C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f ≫ inl = g ≫ inr
⊢ ∀ ⦃X_1 Y_1 : WalkingSpan⦄ (f_1 : X_1 ⟶ Y_1),
    ((span f g).map f_1 ≫ Option.casesOn Y_1 (f ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
      (Option.casesOn X_1 (f ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫
        ((Functor.const WalkingSpan).obj W).map f_1

Tactic:
rintro (⟨⟩ | ⟨⟨⟩⟩) (⟨⟩ | ⟨⟨⟩⟩) <;> intro f

Goal state after:
case none.none
C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f✝ : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f✝ ≫ inl = g ≫ inr
f : none ⟶ none
⊢ ((span f✝ g).map f ≫ Option.casesOn none (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
    (Option.casesOn none (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫ ((Functor.const WalkingSpan).obj W).map f

case none.some.left
C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f✝ : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f✝ ≫ inl = g ≫ inr
f : none ⟶ some WalkingPair.left
⊢ ((span f✝ g).map f ≫ Option.casesOn (some WalkingPair.left) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
    (Option.casesOn none (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫ ((Functor.const WalkingSpan).obj W).map f

case none.some.right
C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f✝ : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f✝ ≫ inl = g ≫ inr
f : none ⟶ some WalkingPair.right
⊢ ((span f✝ g).map f ≫ Option.casesOn (some WalkingPair.right) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
    (Option.casesOn none (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫ ((Functor.const WalkingSpan).obj W).map f

case some.left.none
C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f✝ : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f✝ ≫ inl = g ≫ inr
f : some WalkingPair.left ⟶ none
⊢ ((span f✝ g).map f ≫ Option.casesOn none (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
    (Option.casesOn (some WalkingPair.left) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫
      ((Functor.const WalkingSpan).obj W).map f

case some.left.some.left
C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f✝ : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f✝ ≫ inl = g ≫ inr
f : some WalkingPair.left ⟶ some WalkingPair.left
⊢ ((span f✝ g).map f ≫ Option.casesOn (some WalkingPair.left) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
    (Option.casesOn (some WalkingPair.left) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫
      ((Functor.const WalkingSpan).obj W).map f

case some.left.some.right
C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f✝ : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f✝ ≫ inl = g ≫ inr
f : some WalkingPair.left ⟶ some WalkingPair.right
⊢ ((span f✝ g).map f ≫ Option.casesOn (some WalkingPair.right) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
    (Option.casesOn (some WalkingPair.left) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫
      ((Functor.const WalkingSpan).obj W).map f

case some.right.none
C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f✝ : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f✝ ≫ inl = g ≫ inr
f : some WalkingPair.right ⟶ none
⊢ ((span f✝ g).map f ≫ Option.casesOn none (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
    (Option.casesOn (some WalkingPair.right) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫
      ((Functor.const WalkingSpan).obj W).map f

case some.right.some.left
C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f✝ : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f✝ ≫ inl = g ≫ inr
f : some WalkingPair.right ⟶ some WalkingPair.left
⊢ ((span f✝ g).map f ≫ Option.casesOn (some WalkingPair.left) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
    (Option.casesOn (some WalkingPair.right) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫
      ((Functor.const WalkingSpan).obj W).map f

case some.right.some.right
C : Type u
inst✝ : Category.{v, u} C
W✝ X Y Z : C
f✝ : X ⟶ Y
g : X ⟶ Z
W : C
inl : Y ⟶ W
inr : Z ⟶ W
eq : f✝ ≫ inl = g ≫ inr
f : some WalkingPair.right ⟶ some WalkingPair.right
⊢ ((span f✝ g).map f ≫ Option.casesOn (some WalkingPair.right) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) =
    (Option.casesOn (some WalkingPair.right) (f✝ ≫ inl) fun j' ↦ WalkingPair.casesOn j' inl inr) ≫
      ((Functor.const WalkingSpan).obj W).map f