Theorem: TopCat.Presheaf.SheafConditionPairwiseIntersections.mapCocone
File: Mathlib/Topology/Sheaves/Functors.lean

tactic: unfold Functor.mapCocone Cocones.functoriality
state_before: C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq ((Opens.map f).mapCocone (Pairwise.cocone U)) (Pairwise.cocone ((Opens.map f).toPrefunctor.obj ∘ U))

tactic: dsimp
state_before: C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq
    ((CategoryTheory.Functor.mk
          { obj := fun A => { pt := (Opens.map f).obj A.pt, ι := NatTrans.mk fun j => (Opens.map f).map (A.ι.app j) },
            map := fun {X_1 Y_1} f_1 => CoconeMorphism.mk ((Opens.map f).map f_1.Hom) }).obj
      (Pairwise.cocone U))
    (Pairwise.cocone ((Opens.map f).toPrefunctor.obj ∘ U))

tactic: congr
state_before: C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq { pt := (Opens.map f).obj (iSup U), ι := NatTrans.mk fun j => (Opens.map f).map (Pairwise.coconeιApp U j) }
    (Pairwise.cocone ((Opens.map f).toPrefunctor.obj ∘ U))

tactic: iterate 2 rw [map_diagram]; rw [Opens.map_iSup]
state_before: case e_5.h
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ Pairwise.diagram U ⋙ Opens.map f = Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)

case e_6.h
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ (Opens.map f).obj (iSup U) = iSup ((Opens.map f).toPrefunctor.obj ∘ U)

case e_7.e_5.h
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ Pairwise.diagram U ⋙ Opens.map f = Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)

case e_7.e_6.h.e_a
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ (Opens.map f).obj (iSup U) = iSup ((Opens.map f).toPrefunctor.obj ∘ U)

case e_7.e_7
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq (fun j => (Opens.map f).map (Pairwise.coconeιApp U j)) (Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U))

case e_7.e_8
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram U ⋙ Opens.map f).map f_1 ≫ (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) Y_1 =
          (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) X_1 ≫
            ((Functor.const (CategoryTheory.Pairwise ι)).obj ((Opens.map f).obj (Pairwise.cocone U).pt)).map f_1)
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)).map f_1 ≫
            Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) Y_1 =
          Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) X_1 ≫ 𝟙 (iSup ((Opens.map f).toPrefunctor.obj ∘ U)))

tactic: apply Subsingleton.helim
state_before: case e_7.e_7
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq (fun j => (Opens.map f).map (Pairwise.coconeιApp U j)) (Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U))

case e_7.e_8
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram U ⋙ Opens.map f).map f_1 ≫ (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) Y_1 =
          (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) X_1 ≫
            ((Functor.const (CategoryTheory.Pairwise ι)).obj ((Opens.map f).obj (Pairwise.cocone U).pt)).map f_1)
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)).map f_1 ≫
            Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) Y_1 =
          Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) X_1 ≫ 𝟙 (iSup ((Opens.map f).toPrefunctor.obj ∘ U)))

tactic: rw [map_diagram, Opens.map_iSup]
state_before: case e_7.e_7.h₂
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ ((X_1 : CategoryTheory.Pairwise ι) →
      (Pairwise.diagram U ⋙ Opens.map f).obj X_1 ⟶
        ((Functor.const (CategoryTheory.Pairwise ι)).obj ((Opens.map f).obj (iSup U))).obj X_1) =
    ((X_1 : CategoryTheory.Pairwise ι) →
      (Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)).obj X_1 ⟶
        ((Functor.const (CategoryTheory.Pairwise ι)).obj (iSup ((Opens.map f).toPrefunctor.obj ∘ U))).obj X_1)

case e_7.e_8
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram U ⋙ Opens.map f).map f_1 ≫ (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) Y_1 =
          (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) X_1 ≫
            ((Functor.const (CategoryTheory.Pairwise ι)).obj ((Opens.map f).obj (Pairwise.cocone U).pt)).map f_1)
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)).map f_1 ≫
            Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) Y_1 =
          Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) X_1 ≫ 𝟙 (iSup ((Opens.map f).toPrefunctor.obj ∘ U)))

tactic: apply proof_irrel_heq
state_before: case e_7.e_8
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram U ⋙ Opens.map f).map f_1 ≫ (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) Y_1 =
          (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) X_1 ≫
            ((Functor.const (CategoryTheory.Pairwise ι)).obj ((Opens.map f).obj (Pairwise.cocone U).pt)).map f_1)
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)).map f_1 ≫
            Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) Y_1 =
          Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) X_1 ≫ 𝟙 (iSup ((Opens.map f).toPrefunctor.obj ∘ U)))

tactic: rw [map_diagram]
state_before: case e_7.e_5.h
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ Pairwise.diagram U ⋙ Opens.map f = Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)

case e_7.e_6.h.e_a
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ (Opens.map f).obj (iSup U) = iSup ((Opens.map f).toPrefunctor.obj ∘ U)

case e_7.e_7
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq (fun j => (Opens.map f).map (Pairwise.coconeιApp U j)) (Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U))

case e_7.e_8
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram U ⋙ Opens.map f).map f_1 ≫ (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) Y_1 =
          (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) X_1 ≫
            ((Functor.const (CategoryTheory.Pairwise ι)).obj ((Opens.map f).obj (Pairwise.cocone U).pt)).map f_1)
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)).map f_1 ≫
            Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) Y_1 =
          Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) X_1 ≫ 𝟙 (iSup ((Opens.map f).toPrefunctor.obj ∘ U)))

tactic: rw [Opens.map_iSup]
state_before: case e_7.e_6.h.e_a
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ (Opens.map f).obj (iSup U) = iSup ((Opens.map f).toPrefunctor.obj ∘ U)

case e_7.e_7
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq (fun j => (Opens.map f).map (Pairwise.coconeιApp U j)) (Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U))

case e_7.e_8
C : Type u
inst✝ : Category C
X Y : TopCat
f : X ⟶ Y
ι : Type w
U : ι → Opens ↑Y
⊢ HEq
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram U ⋙ Opens.map f).map f_1 ≫ (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) Y_1 =
          (fun j => (Opens.map f).map ((Pairwise.cocone U).ι.app j)) X_1 ≫
            ((Functor.const (CategoryTheory.Pairwise ι)).obj ((Opens.map f).obj (Pairwise.cocone U).pt)).map f_1)
    (_ :
      ∀ ⦃X_1 Y_1 : CategoryTheory.Pairwise ι⦄ (f_1 : X_1 ⟶ Y_1),
        (Pairwise.diagram ((Opens.map f).toPrefunctor.obj ∘ U)).map f_1 ≫
            Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) Y_1 =
          Pairwise.coconeιApp ((Opens.map f).toPrefunctor.obj ∘ U) X_1 ≫ 𝟙 (iSup ((Opens.map f).toPrefunctor.obj ∘ U)))