Theorem: AlgebraicTopology.map_alternatingFaceMapComplex
File: Mathlib/AlgebraicTopology/AlternatingFaceMapComplex.lean

tactic: apply CategoryTheory.Functor.ext
state_before: C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
⊢ alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ) =
    (SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D

tactic: intro X Y f
state_before: case h_map
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
⊢ autoParam
    (∀ (X Y : SimplicialObject C) (f : X ⟶ Y),
      (alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).map f =
        eqToHom (_ : ?F.obj X = ?G.obj X) ≫
          ((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).map f ≫
            eqToHom
              (_ :
                ((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj Y =
                  (alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj Y))
    _auto✝

tactic: ext n
state_before: case h_map
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
X Y : SimplicialObject C
f : X ⟶ Y
⊢ (alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).map f =
    eqToHom (_ : ?F.obj X = ?G.obj X) ≫
      ((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).map f ≫
        eqToHom
          (_ :
            ((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj Y =
              (alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj Y)

tactic: simp only [Functor.comp_map, HomologicalComplex.comp_f, alternatingFaceMapComplex_map_f,
  Functor.mapHomologicalComplex_map_f, HomologicalComplex.eqToHom_f, eqToHom_refl, comp_id,
  id_comp, SimplicialObject.whiskering_obj_map_app]
state_before: case h_map.h
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
X Y : SimplicialObject C
f : X ⟶ Y
n : ℕ
⊢ HomologicalComplex.Hom.f ((alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).map f)
      n =
    HomologicalComplex.Hom.f
      (eqToHom (_ : ?F.obj X = ?G.obj X) ≫
        ((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).map f ≫
          eqToHom
            (_ :
              ((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj Y =
                (alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj Y))
      n

tactic: intro X
state_before: case h_obj
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
⊢ ∀ (X : SimplicialObject C),
    (alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X =
      ((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X

tactic: apply HomologicalComplex.ext
state_before: case h_obj
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
X : SimplicialObject C
⊢ (alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X =
    ((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X

tactic: rintro i j (rfl : j + 1 = i)
state_before: case h_obj.h_d
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
X : SimplicialObject C
⊢ ∀ (i j : ℕ),
    ComplexShape.Rel (ComplexShape.down ℕ) i j →
      HomologicalComplex.d ((alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X)
            i j ≫
          eqToHom
            (_ :
              HomologicalComplex.X
                  ((alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X) j =
                HomologicalComplex.X (((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X)
                  j) =
        eqToHom
            (_ :
              HomologicalComplex.X
                  ((alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X) i =
                HomologicalComplex.X (((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X)
                  i) ≫
          HomologicalComplex.d (((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X) i j

tactic: dsimp only [Functor.comp_obj]
state_before: case h_obj.h_d
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
X : SimplicialObject C
j : ℕ
⊢ HomologicalComplex.d ((alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X)
        (j + 1) j ≫
      eqToHom
        (_ :
          HomologicalComplex.X
              ((alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X) j =
            HomologicalComplex.X (((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X) j) =
    eqToHom
        (_ :
          HomologicalComplex.X
              ((alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X) (j + 1) =
            HomologicalComplex.X (((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X)
              (j + 1)) ≫
      HomologicalComplex.d (((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X) (j + 1) j

tactic: simp only [Functor.mapHomologicalComplex_obj_d, alternatingFaceMapComplex_obj_d,
  eqToHom_refl, id_comp, comp_id, AlternatingFaceMapComplex.objD, Functor.map_sum,
  Functor.map_zsmul]
state_before: case h_obj.h_d
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
X : SimplicialObject C
j : ℕ
⊢ HomologicalComplex.d
        ((Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj ((alternatingFaceMapComplex C).obj X)) (j + 1) j ≫
      eqToHom
        (_ :
          HomologicalComplex.X
              ((Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj ((alternatingFaceMapComplex C).obj X)) j =
            HomologicalComplex.X ((alternatingFaceMapComplex D).obj (((SimplicialObject.whiskering C D).obj F).obj X))
              j) =
    eqToHom
        (_ :
          HomologicalComplex.X
              ((Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj ((alternatingFaceMapComplex C).obj X))
              (j + 1) =
            HomologicalComplex.X ((alternatingFaceMapComplex D).obj (((SimplicialObject.whiskering C D).obj F).obj X))
              (j + 1)) ≫
      HomologicalComplex.d ((alternatingFaceMapComplex D).obj (((SimplicialObject.whiskering C D).obj F).obj X)) (j + 1)
        j

tactic: rfl
state_before: case h_obj.h_d
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
X : SimplicialObject C
j : ℕ
⊢ ∑ x : Fin (j + 2), (-1) ^ ↑x • F.map (SimplicialObject.δ X x) =
    ∑ i : Fin (j + 2), (-1) ^ ↑i • SimplicialObject.δ (((SimplicialObject.whiskering C D).obj F).obj X) i

tactic: ext n
state_before: case h_obj.h_X
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
X : SimplicialObject C
⊢ ((alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X).X =
    (((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X).X

tactic: rfl
state_before: case h_obj.h_X.h
C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
F : C ⥤ D
inst✝ : Functor.Additive F
X : SimplicialObject C
n : ℕ
⊢ HomologicalComplex.X ((alternatingFaceMapComplex C ⋙ Functor.mapHomologicalComplex F (ComplexShape.down ℕ)).obj X) n =
    HomologicalComplex.X (((SimplicialObject.whiskering C D).obj F ⋙ alternatingFaceMapComplex D).obj X) n