Theorem: CategoryTheory.mapPair_equifibered
File: Mathlib/CategoryTheory/Limits/VanKampen.lean

tactic: rintro ⟨⟨⟩⟩ ⟨j⟩ ⟨⟨rfl : _ = j⟩⟩
state_before: J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ NatTrans.Equifibered α
state_after: case mk.left.mk.up.up
J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ IsPullback (F.map { down := { down := ⋯ } }) (α.app { as := WalkingPair.left })
    (α.app { as := { as := WalkingPair.left }.as }) (F'.map { down := { down := ⋯ } })

case mk.right.mk.up.up
J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ IsPullback (F.map { down := { down := ⋯ } }) (α.app { as := WalkingPair.right })
    (α.app { as := { as := WalkingPair.right }.as }) (F'.map { down := { down := ⋯ } })

tactic: all_goals
  dsimp; simp only [Discrete.functor_map_id]
  exact IsPullback.of_horiz_isIso ⟨by simp only [Category.comp_id, Category.id_comp]⟩
state_before: case mk.left.mk.up.up
J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ IsPullback (F.map { down := { down := ⋯ } }) (α.app { as := WalkingPair.left })
    (α.app { as := { as := WalkingPair.left }.as }) (F'.map { down := { down := ⋯ } })

case mk.right.mk.up.up
J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ IsPullback (F.map { down := { down := ⋯ } }) (α.app { as := WalkingPair.right })
    (α.app { as := { as := WalkingPair.right }.as }) (F'.map { down := { down := ⋯ } })
state_after: no goals

tactic: dsimp
state_before: case mk.right.mk.up.up
J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ IsPullback (F.map { down := { down := ⋯ } }) (α.app { as := WalkingPair.right })
    (α.app { as := { as := WalkingPair.right }.as }) (F'.map { down := { down := ⋯ } })
state_after: case mk.right.mk.up.up
J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ IsPullback (F.map { down := { down := ⋯ } }) (α.app { as := WalkingPair.right }) (α.app { as := WalkingPair.right })
    (F'.map { down := { down := ⋯ } })

tactic: simp only [Discrete.functor_map_id]
state_before: case mk.right.mk.up.up
J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ IsPullback (F.map { down := { down := ⋯ } }) (α.app { as := WalkingPair.right }) (α.app { as := WalkingPair.right })
    (F'.map { down := { down := ⋯ } })
state_after: case mk.right.mk.up.up
J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ IsPullback (𝟙 (F.obj { as := WalkingPair.right })) (α.app { as := WalkingPair.right })
    (α.app { as := WalkingPair.right }) (𝟙 (F'.obj { as := WalkingPair.right }))

tactic: exact IsPullback.of_horiz_isIso ⟨by simp only [Category.comp_id, Category.id_comp]⟩
state_before: case mk.right.mk.up.up
J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ IsPullback (𝟙 (F.obj { as := WalkingPair.right })) (α.app { as := WalkingPair.right })
    (α.app { as := WalkingPair.right }) (𝟙 (F'.obj { as := WalkingPair.right }))
state_after: no goals

tactic: simp only [Category.comp_id, Category.id_comp]
state_before: J : Type v'
inst✝³ : Category.{u', v'} J
C : Type u
inst✝² : Category.{v, u} C
K : Type u_1
inst✝¹ : Category.{?u.5905, u_1} K
D : Type u_2
inst✝ : Category.{?u.5912, u_2} D
F F' : Discrete WalkingPair ⥤ C
α : F ⟶ F'
⊢ 𝟙 (F.obj { as := WalkingPair.right }) ≫ α.app { as := WalkingPair.right } =
    α.app { as := WalkingPair.right } ≫ 𝟙 (F'.obj { as := WalkingPair.right })
state_after: no goals