Module: Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks

Goal state before:
pp: case none.none.id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.id none) ≫
      (match none with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match none with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.id none)

pp: case some.left.none.term
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.term WalkingPair.left) ≫
      (match none with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match some WalkingPair.left with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.term WalkingPair.left)

pp: case some.left.some.left.id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.id (some WalkingPair.left)) ≫
      (match some WalkingPair.left with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match some WalkingPair.left with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.id (some WalkingPair.left))

pp: case some.right.none.term
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.term WalkingPair.right) ≫
      (match none with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match some WalkingPair.right with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.term WalkingPair.right)

pp: case some.right.some.right.id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.id (some WalkingPair.right)) ≫
      (match some WalkingPair.right with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match some WalkingPair.right with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.id (some WalkingPair.right))

Tactic:
<;>

Goal state after:
case none.none.id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.id none) ≫
      (match none with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match none with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.id none)

case some.left.none.term
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.term WalkingPair.left) ≫
      (match none with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match some WalkingPair.left with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.term WalkingPair.left)

case some.left.some.left.id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.id (some WalkingPair.left)) ≫
      (match some WalkingPair.left with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match some WalkingPair.left with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.id (some WalkingPair.left))

case some.right.none.term
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.term WalkingPair.right) ≫
      (match none with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match some WalkingPair.right with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.term WalkingPair.right)

case some.right.some.right.id
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
⊢ (cospan f.op g.op).map (WidePullbackShape.Hom.id (some WalkingPair.right)) ≫
      (match some WalkingPair.right with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom =
    (match some WalkingPair.right with
        | none => Iso.refl ((cospan f.op g.op).obj none)
        | some WalkingPair.left => Iso.refl ((cospan f.op g.op).obj WalkingCospan.left)
        | some WalkingPair.right => Iso.refl ((cospan f.op g.op).obj WalkingCospan.right)).hom ≫
      (walkingSpanOpEquiv.inverse ⋙ (span f g).op).map (WidePullbackShape.Hom.id (some WalkingPair.right))