ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.ShortComplex.epi_homologyMap_of_epi_cyclesMap'
lemma epi_homologyMap_of_epi_cyclesMap'
    [S₁.HasHomology] [S₂.HasHomology] (h : Epi (cyclesMap φ)) :
    Epi (homologyMap φ) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {S₁ S₂ : CategoryTheory.ShortComplex C} (φ : S₁ ⟶ S₂) [S₁.HasHomology] [S₂.HasHomology] (h : CategoryTheory.Epi (CategoryTheory.ShortComplex.cyclesMap φ))
Goal: CategoryTheory.Epi (CategoryTheory.ShortComplex.homologyMap φ)
-- CategoryTheory.ShortComplex.FunctorEquivalence.functor_obj_map
@[simps]
def functor : ShortComplex (J ⥤ C) ⥤ J ⥤ ShortComplex C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex (CategoryTheory.Functor J C))
Goal: ∀ {X Y : J} (f : X ⟶ Y),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.functor J C).obj S).map f =
    S.mapNatTrans ((CategoryTheory.evaluation J C).map f)
-- CategoryTheory.ShortComplex.FunctorEquivalence.functor_obj_obj
@[simps]
def functor : ShortComplex (J ⥤ C) ⥤ J ⥤ ShortComplex C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex (CategoryTheory.Functor J C)) (j : J)
Goal: ((CategoryTheory.ShortComplex.FunctorEquivalence.functor J C).obj S).obj j =
  S.map ((CategoryTheory.evaluation J C).obj j)
-- CategoryTheory.ShortComplex.FunctorEquivalence.functor_map_app
@[simps]
def functor : ShortComplex (J ⥤ C) ⥤ J ⥤ ShortComplex C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C]
Goal: ∀ {X Y : CategoryTheory.ShortComplex (CategoryTheory.Functor J C)} (φ : X ⟶ Y) (j : J),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.functor J C).map φ).app j =
    ((CategoryTheory.evaluation J C).obj j).mapShortComplex.map φ
-- CategoryTheory.ShortComplex.FunctorEquivalence.inverse_obj_g
@[simps]
def inverse : (J ⥤ ShortComplex C) ⥤ ShortComplex (J ⥤ C) 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (F : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ((CategoryTheory.ShortComplex.FunctorEquivalence.inverse J C).obj F).g =
  CategoryTheory.whiskerLeft F CategoryTheory.ShortComplex.π₂Toπ₃
-- CategoryTheory.ShortComplex.FunctorEquivalence.inverse_obj_X₃
@[simps]
def inverse : (J ⥤ ShortComplex C) ⥤ ShortComplex (J ⥤ C) 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (F : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ((CategoryTheory.ShortComplex.FunctorEquivalence.inverse J C).obj F).X₃ = F.comp CategoryTheory.ShortComplex.π₃
-- CategoryTheory.ShortComplex.FunctorEquivalence.inverse_obj_X₂
@[simps]
def inverse : (J ⥤ ShortComplex C) ⥤ ShortComplex (J ⥤ C) 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (F : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ((CategoryTheory.ShortComplex.FunctorEquivalence.inverse J C).obj F).X₂ = F.comp CategoryTheory.ShortComplex.π₂
-- CategoryTheory.ShortComplex.FunctorEquivalence.inverse_obj_f
@[simps]
def inverse : (J ⥤ ShortComplex C) ⥤ ShortComplex (J ⥤ C) 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (F : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ((CategoryTheory.ShortComplex.FunctorEquivalence.inverse J C).obj F).f =
  CategoryTheory.whiskerLeft F CategoryTheory.ShortComplex.π₁Toπ₂
-- CategoryTheory.ShortComplex.FunctorEquivalence.inverse_obj_X₁
@[simps]
def inverse : (J ⥤ ShortComplex C) ⥤ ShortComplex (J ⥤ C) 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (F : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ((CategoryTheory.ShortComplex.FunctorEquivalence.inverse J C).obj F).X₁ = F.comp CategoryTheory.ShortComplex.π₁
-- CategoryTheory.ShortComplex.FunctorEquivalence.inverse_map_τ₂
@[simps]
def inverse : (J ⥤ ShortComplex C) ⥤ ShortComplex (J ⥤ C) 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C]
Goal: ∀ {X Y : CategoryTheory.Functor J (CategoryTheory.ShortComplex C)} (φ : X ⟶ Y),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.inverse J C).map φ).τ₂ =
    CategoryTheory.whiskerRight φ CategoryTheory.ShortComplex.π₂
-- CategoryTheory.ShortComplex.FunctorEquivalence.inverse_map_τ₃
@[simps]
def inverse : (J ⥤ ShortComplex C) ⥤ ShortComplex (J ⥤ C) 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C]
Goal: ∀ {X Y : CategoryTheory.Functor J (CategoryTheory.ShortComplex C)} (φ : X ⟶ Y),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.inverse J C).map φ).τ₃ =
    CategoryTheory.whiskerRight φ CategoryTheory.ShortComplex.π₃
-- CategoryTheory.ShortComplex.FunctorEquivalence.inverse_map_τ₁
@[simps]
def inverse : (J ⥤ ShortComplex C) ⥤ ShortComplex (J ⥤ C) 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C]
Goal: ∀ {X Y : CategoryTheory.Functor J (CategoryTheory.ShortComplex C)} (φ : X ⟶ Y),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.inverse J C).map φ).τ₁ =
    CategoryTheory.whiskerRight φ CategoryTheory.ShortComplex.π₁
-- CategoryTheory.ShortComplex.FunctorEquivalence.unitIso_inv_app_τ₂_app
@[simps!]
def unitIso : 𝟭 _ ≅ functor J C ⋙ inverse J C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.ShortComplex (CategoryTheory.Functor J C))
Goal: ∀ (X_1 : J),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.unitIso J C).inv.app X).τ₂.app X_1 =
    CategoryTheory.CategoryStruct.id (X.X₂.obj X_1)
-- CategoryTheory.ShortComplex.FunctorEquivalence.unitIso_inv_app_τ₃_app
@[simps!]
def unitIso : 𝟭 _ ≅ functor J C ⋙ inverse J C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.ShortComplex (CategoryTheory.Functor J C))
Goal: ∀ (X_1 : J),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.unitIso J C).inv.app X).τ₃.app X_1 =
    CategoryTheory.CategoryStruct.id (X.X₃.obj X_1)
-- CategoryTheory.ShortComplex.FunctorEquivalence.unitIso_hom_app_τ₁_app
@[simps!]
def unitIso : 𝟭 _ ≅ functor J C ⋙ inverse J C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.ShortComplex (CategoryTheory.Functor J C))
Goal: ∀ (X_1 : J),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.unitIso J C).hom.app X).τ₁.app X_1 =
    CategoryTheory.CategoryStruct.id (X.X₁.obj X_1)
-- CategoryTheory.ShortComplex.FunctorEquivalence.unitIso_hom_app_τ₃_app
@[simps!]
def unitIso : 𝟭 _ ≅ functor J C ⋙ inverse J C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.ShortComplex (CategoryTheory.Functor J C))
Goal: ∀ (X_1 : J),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.unitIso J C).hom.app X).τ₃.app X_1 =
    CategoryTheory.CategoryStruct.id (X.X₃.obj X_1)
-- CategoryTheory.ShortComplex.FunctorEquivalence.unitIso_hom_app_τ₂_app
@[simps!]
def unitIso : 𝟭 _ ≅ functor J C ⋙ inverse J C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.ShortComplex (CategoryTheory.Functor J C))
Goal: ∀ (X_1 : J),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.unitIso J C).hom.app X).τ₂.app X_1 =
    CategoryTheory.CategoryStruct.id (X.X₂.obj X_1)
-- CategoryTheory.ShortComplex.FunctorEquivalence.unitIso_inv_app_τ₁_app
@[simps!]
def unitIso : 𝟭 _ ≅ functor J C ⋙ inverse J C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.ShortComplex (CategoryTheory.Functor J C))
Goal: ∀ (X_1 : J),
  ((CategoryTheory.ShortComplex.FunctorEquivalence.unitIso J C).inv.app X).τ₁.app X_1 =
    CategoryTheory.CategoryStruct.id (X.X₁.obj X_1)
-- CategoryTheory.ShortComplex.FunctorEquivalence.counitIso_inv_app_app_τ₂
@[simps!]
def counitIso : inverse J C ⋙ functor J C ≅ 𝟭 _ 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ∀ (X_1 : J),
  (((CategoryTheory.ShortComplex.FunctorEquivalence.counitIso J C).inv.app X).app X_1).τ₂ =
    CategoryTheory.CategoryStruct.id (X.obj X_1).X₂
-- CategoryTheory.ShortComplex.FunctorEquivalence.counitIso_inv_app_app_τ₃
@[simps!]
def counitIso : inverse J C ⋙ functor J C ≅ 𝟭 _ 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ∀ (X_1 : J),
  (((CategoryTheory.ShortComplex.FunctorEquivalence.counitIso J C).inv.app X).app X_1).τ₃ =
    CategoryTheory.CategoryStruct.id (X.obj X_1).X₃
-- CategoryTheory.ShortComplex.FunctorEquivalence.counitIso_hom_app_app_τ₂
@[simps!]
def counitIso : inverse J C ⋙ functor J C ≅ 𝟭 _ 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ∀ (X_1 : J),
  (((CategoryTheory.ShortComplex.FunctorEquivalence.counitIso J C).hom.app X).app X_1).τ₂ =
    CategoryTheory.CategoryStruct.id (X.obj X_1).X₂
-- CategoryTheory.ShortComplex.FunctorEquivalence.counitIso_hom_app_app_τ₁
@[simps!]
def counitIso : inverse J C ⋙ functor J C ≅ 𝟭 _ 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ∀ (X_1 : J),
  (((CategoryTheory.ShortComplex.FunctorEquivalence.counitIso J C).hom.app X).app X_1).τ₁ =
    CategoryTheory.CategoryStruct.id (X.obj X_1).X₁
-- CategoryTheory.ShortComplex.FunctorEquivalence.counitIso_inv_app_app_τ₁
@[simps!]
def counitIso : inverse J C ⋙ functor J C ≅ 𝟭 _ 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ∀ (X_1 : J),
  (((CategoryTheory.ShortComplex.FunctorEquivalence.counitIso J C).inv.app X).app X_1).τ₁ =
    CategoryTheory.CategoryStruct.id (X.obj X_1).X₁
-- CategoryTheory.ShortComplex.FunctorEquivalence.counitIso_hom_app_app_τ₃
@[simps!]
def counitIso : inverse J C ⋙ functor J C ≅ 𝟭 _ 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] (X : CategoryTheory.Functor J (CategoryTheory.ShortComplex C))
Goal: ∀ (X_1 : J),
  (((CategoryTheory.ShortComplex.FunctorEquivalence.counitIso J C).hom.app X).app X_1).τ₃ =
    CategoryTheory.CategoryStruct.id (X.obj X_1).X₃
-- CategoryTheory.ShortComplex.functorEquivalence_unitIso
@[simps]
def functorEquivalence : ShortComplex (J ⥤ C) ≌ J ⥤ ShortComplex C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C]
Goal: (CategoryTheory.ShortComplex.functorEquivalence J C).unitIso =
  CategoryTheory.ShortComplex.FunctorEquivalence.unitIso J C
-- CategoryTheory.ShortComplex.functorEquivalence_functor
@[simps]
def functorEquivalence : ShortComplex (J ⥤ C) ≌ J ⥤ ShortComplex C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C]
Goal: (CategoryTheory.ShortComplex.functorEquivalence J C).functor =
  CategoryTheory.ShortComplex.FunctorEquivalence.functor J C
-- CategoryTheory.ShortComplex.functorEquivalence_counitIso
@[simps]
def functorEquivalence : ShortComplex (J ⥤ C) ≌ J ⥤ ShortComplex C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C]
Goal: (CategoryTheory.ShortComplex.functorEquivalence J C).counitIso =
  CategoryTheory.ShortComplex.FunctorEquivalence.counitIso J C
-- CategoryTheory.ShortComplex.functorEquivalence_inverse
@[simps]
def functorEquivalence : ShortComplex (J ⥤ C) ≌ J ⥤ ShortComplex C 
Arguments: (J : Type u_1) (C : Type u_2) [CategoryTheory.Category.{u_3, u_1} J] [CategoryTheory.Category.{u_4, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C]
Goal: (CategoryTheory.ShortComplex.functorEquivalence J C).inverse =
  CategoryTheory.ShortComplex.FunctorEquivalence.inverse J C
-- TotalComplexShape.rel₂
class TotalComplexShape  where
    π : I₁ × I₂ → I₁₂
    ε₁ : I₁ × I₂ → ℤˣ
    ε₂ : I₁ × I₂ → ℤˣ
  rel₁ {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂) : c₁₂.Rel (π ⟨i₁, i₂⟩) (π ⟨i₁', i₂⟩)
  rel₂ (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂') : c₁₂.Rel (π ⟨i₁, i₂⟩) (π ⟨i₁, i₂'⟩)
  ε₂_ε₁ {i₁ i₁' : I₁} {i₂ i₂' : I₂} (h₁ : c₁.Rel i₁ i₁') (h₂ : c₂.Rel i₂ i₂') :
    ε₂ ⟨i₁, i₂⟩ * ε₁ ⟨i₁, i₂'⟩ = - ε₁ ⟨i₁, i₂⟩ * ε₂ ⟨i₁', i₂⟩
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} {c₁ : ComplexShape I₁} {c₂ : ComplexShape I₂} {c₁₂ : ComplexShape I₁₂} [self : TotalComplexShape c₁ c₂ c₁₂] (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂')
Goal: c₁₂.Rel (TotalComplexShape.π c₁ c₂ c₁₂ (i₁, i₂)) (TotalComplexShape.π c₁ c₂ c₁₂ (i₁, i₂'))
-- TotalComplexShape.rel₁
class TotalComplexShape  where
    π : I₁ × I₂ → I₁₂
    ε₁ : I₁ × I₂ → ℤˣ
    ε₂ : I₁ × I₂ → ℤˣ
  rel₁ {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂) : c₁₂.Rel (π ⟨i₁, i₂⟩) (π ⟨i₁', i₂⟩)
  rel₂ (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂') : c₁₂.Rel (π ⟨i₁, i₂⟩) (π ⟨i₁, i₂'⟩)
  ε₂_ε₁ {i₁ i₁' : I₁} {i₂ i₂' : I₂} (h₁ : c₁.Rel i₁ i₁') (h₂ : c₂.Rel i₂ i₂') :
    ε₂ ⟨i₁, i₂⟩ * ε₁ ⟨i₁, i₂'⟩ = - ε₁ ⟨i₁, i₂⟩ * ε₂ ⟨i₁', i₂⟩
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} {c₁ : ComplexShape I₁} {c₂ : ComplexShape I₂} {c₁₂ : ComplexShape I₁₂} [self : TotalComplexShape c₁ c₂ c₁₂] {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂)
Goal: c₁₂.Rel (TotalComplexShape.π c₁ c₂ c₁₂ (i₁, i₂)) (TotalComplexShape.π c₁ c₂ c₁₂ (i₁', i₂))
-- TotalComplexShape.ε₂_ε₁
class TotalComplexShape  where
    π : I₁ × I₂ → I₁₂
    ε₁ : I₁ × I₂ → ℤˣ
    ε₂ : I₁ × I₂ → ℤˣ
  rel₁ {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂) : c₁₂.Rel (π ⟨i₁, i₂⟩) (π ⟨i₁', i₂⟩)
  rel₂ (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂') : c₁₂.Rel (π ⟨i₁, i₂⟩) (π ⟨i₁, i₂'⟩)
  ε₂_ε₁ {i₁ i₁' : I₁} {i₂ i₂' : I₂} (h₁ : c₁.Rel i₁ i₁') (h₂ : c₂.Rel i₂ i₂') :
    ε₂ ⟨i₁, i₂⟩ * ε₁ ⟨i₁, i₂'⟩ = - ε₁ ⟨i₁, i₂⟩ * ε₂ ⟨i₁', i₂⟩
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} {c₁ : ComplexShape I₁} {c₂ : ComplexShape I₂} {c₁₂ : ComplexShape I₁₂} [self : TotalComplexShape c₁ c₂ c₁₂] {i₁ i₁' : I₁} {i₂ i₂' : I₂} (h₁ : c₁.Rel i₁ i₁') (h₂ : c₂.Rel i₂ i₂')
Goal: TotalComplexShape.ε₂ c₁ c₂ c₁₂ (i₁, i₂) * TotalComplexShape.ε₁ c₁ c₂ c₁₂ (i₁, i₂') =
  -TotalComplexShape.ε₁ c₁ c₂ c₁₂ (i₁, i₂) * TotalComplexShape.ε₂ c₁ c₂ c₁₂ (i₁', i₂)
-- ComplexShape.rel_π₁
lemma rel_π₁ {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂) :
    c₁₂.Rel (π c₁ c₂ c₁₂ ⟨i₁, i₂⟩) (π c₁ c₂ c₁₂ ⟨i₁', i₂⟩) 
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} {c₁ : ComplexShape I₁} (c₂ : ComplexShape I₂) (c₁₂ : ComplexShape I₁₂) [TotalComplexShape c₁ c₂ c₁₂] {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂)
Goal: c₁₂.Rel (c₁.π c₂ c₁₂ (i₁, i₂)) (c₁.π c₂ c₁₂ (i₁', i₂))
-- ComplexShape.next_π₁
lemma next_π₁ {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂) :
    c₁₂.next (π c₁ c₂ c₁₂ ⟨i₁, i₂⟩) = π c₁ c₂ c₁₂ ⟨i₁', i₂⟩ 
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} {c₁ : ComplexShape I₁} (c₂ : ComplexShape I₂) (c₁₂ : ComplexShape I₁₂) [TotalComplexShape c₁ c₂ c₁₂] {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂)
Goal: c₁₂.next (c₁.π c₂ c₁₂ (i₁, i₂)) = c₁.π c₂ c₁₂ (i₁', i₂)
-- ComplexShape.prev_π₁
lemma prev_π₁ {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂) :
    c₁₂.prev (π c₁ c₂ c₁₂ ⟨i₁', i₂⟩) = π c₁ c₂ c₁₂ ⟨i₁, i₂⟩ 
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} {c₁ : ComplexShape I₁} (c₂ : ComplexShape I₂) (c₁₂ : ComplexShape I₁₂) [TotalComplexShape c₁ c₂ c₁₂] {i₁ i₁' : I₁} (h : c₁.Rel i₁ i₁') (i₂ : I₂)
Goal: c₁₂.prev (c₁.π c₂ c₁₂ (i₁', i₂)) = c₁.π c₂ c₁₂ (i₁, i₂)
-- ComplexShape.rel_π₂
lemma rel_π₂ (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂') :
    c₁₂.Rel (π c₁ c₂ c₁₂ ⟨i₁, i₂⟩) (π c₁ c₂ c₁₂ ⟨i₁, i₂'⟩) 
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} (c₁ : ComplexShape I₁) {c₂ : ComplexShape I₂} (c₁₂ : ComplexShape I₁₂) [TotalComplexShape c₁ c₂ c₁₂] (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂')
Goal: c₁₂.Rel (c₁.π c₂ c₁₂ (i₁, i₂)) (c₁.π c₂ c₁₂ (i₁, i₂'))
-- ComplexShape.next_π₂
lemma next_π₂ (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂') :
    c₁₂.next (π c₁ c₂ c₁₂ ⟨i₁, i₂⟩) = π c₁ c₂ c₁₂ ⟨i₁, i₂'⟩ 
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} (c₁ : ComplexShape I₁) {c₂ : ComplexShape I₂} (c₁₂ : ComplexShape I₁₂) [TotalComplexShape c₁ c₂ c₁₂] (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂')
Goal: c₁₂.next (c₁.π c₂ c₁₂ (i₁, i₂)) = c₁.π c₂ c₁₂ (i₁, i₂')
-- ComplexShape.prev_π₂
lemma prev_π₂ (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂') :
    c₁₂.prev (π c₁ c₂ c₁₂ ⟨i₁, i₂'⟩) = π c₁ c₂ c₁₂ ⟨i₁, i₂⟩ 
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} (c₁ : ComplexShape I₁) {c₂ : ComplexShape I₂} (c₁₂ : ComplexShape I₁₂) [TotalComplexShape c₁ c₂ c₁₂] (i₁ : I₁) {i₂ i₂' : I₂} (h : c₂.Rel i₂ i₂')
Goal: c₁₂.prev (c₁.π c₂ c₁₂ (i₁, i₂')) = c₁.π c₂ c₁₂ (i₁, i₂)
-- ComplexShape.ε₂_ε₁
lemma ε₂_ε₁ {i₁ i₁' : I₁} {i₂ i₂' : I₂} (h₁ : c₁.Rel i₁ i₁') (h₂ : c₂.Rel i₂ i₂') :
    ε₂ c₁ c₂ c₁₂ ⟨i₁, i₂⟩ * ε₁ c₁ c₂ c₁₂ ⟨i₁, i₂'⟩ =
      - ε₁ c₁ c₂ c₁₂ ⟨i₁, i₂⟩ * ε₂ c₁ c₂ c₁₂ ⟨i₁', i₂⟩ 
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} {c₁ : ComplexShape I₁} {c₂ : ComplexShape I₂} (c₁₂ : ComplexShape I₁₂) [TotalComplexShape c₁ c₂ c₁₂] {i₁ i₁' : I₁} {i₂ i₂' : I₂} (h₁ : c₁.Rel i₁ i₁') (h₂ : c₂.Rel i₂ i₂')
Goal: c₁.ε₂ c₂ c₁₂ (i₁, i₂) * c₁.ε₁ c₂ c₁₂ (i₁, i₂') = -c₁.ε₁ c₂ c₁₂ (i₁, i₂) * c₁.ε₂ c₂ c₁₂ (i₁', i₂)
-- ComplexShape.ε₁_ε₂
lemma ε₁_ε₂ {i₁ i₁' : I₁} {i₂ i₂' : I₂} (h₁ : c₁.Rel i₁ i₁') (h₂ : c₂.Rel i₂ i₂') :
    ε₁ c₁ c₂ c₁₂ ⟨i₁, i₂⟩ * ε₂ c₁ c₂ c₁₂ ⟨i₁, i₂⟩ =
      - ε₂ c₁ c₂ c₁₂ ⟨i₁', i₂⟩ * ε₁ c₁ c₂ c₁₂ ⟨i₁, i₂'⟩ 
Arguments: {I₁ : Type u_1} {I₂ : Type u_2} {I₁₂ : Type u_3} {c₁ : ComplexShape I₁} {c₂ : ComplexShape I₂} (c₁₂ : ComplexShape I₁₂) [TotalComplexShape c₁ c₂ c₁₂] {i₁ i₁' : I₁} {i₂ i₂' : I₂} (h₁ : c₁.Rel i₁ i₁') (h₂ : c₂.Rel i₂ i₂')
Goal: c₁.ε₁ c₂ c₁₂ (i₁, i₂) * c₁.ε₂ c₂ c₁₂ (i₁, i₂) = -c₁.ε₂ c₂ c₁₂ (i₁', i₂) * c₁.ε₁ c₂ c₁₂ (i₁, i₂')
-- ComplexShape.TensorSigns.ε'_succ
class TensorSigns where
    ε' : Multiplicative I →* ℤˣ
  rel_add (p q r : I) (hpq : c.Rel p q) : c.Rel (p + r) (q + r)
  add_rel (p q r : I) (hpq : c.Rel p q) : c.Rel (r + p) (r + q)
  ε'_succ (p q : I) (hpq : c.Rel p q) : ε' q = - ε' p
Arguments: {I : Type u_4} [AddMonoid I] {c : ComplexShape I} [self : c.TensorSigns] (p q : I) (hpq : c.Rel p q)
Goal: (ComplexShape.TensorSigns.ε' c) q = -(ComplexShape.TensorSigns.ε' c) p
-- ComplexShape.TensorSigns.rel_add
class TensorSigns where
    ε' : Multiplicative I →* ℤˣ
  rel_add (p q r : I) (hpq : c.Rel p q) : c.Rel (p + r) (q + r)
  add_rel (p q r : I) (hpq : c.Rel p q) : c.Rel (r + p) (r + q)
  ε'_succ (p q : I) (hpq : c.Rel p q) : ε' q = - ε' p
Arguments: {I : Type u_4} [AddMonoid I] {c : ComplexShape I} [self : c.TensorSigns] (p q r : I) (hpq : c.Rel p q)
Goal: c.Rel (p + r) (q + r)
-- ComplexShape.TensorSigns.add_rel
class TensorSigns where
    ε' : Multiplicative I →* ℤˣ
  rel_add (p q r : I) (hpq : c.Rel p q) : c.Rel (p + r) (q + r)
  add_rel (p q r : I) (hpq : c.Rel p q) : c.Rel (r + p) (r + q)
  ε'_succ (p q : I) (hpq : c.Rel p q) : ε' q = - ε' p
Arguments: {I : Type u_4} [AddMonoid I] {c : ComplexShape I} [self : c.TensorSigns] (p q r : I) (hpq : c.Rel p q)
Goal: c.Rel (r + p) (r + q)
-- ComplexShape.rel_add
lemma rel_add {p q : I} (hpq : c.Rel p q) (r : I) : c.Rel (p + r) (q + r) 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns] {p q : I} (hpq : c.Rel p q) (r : I)
Goal: c.Rel (p + r) (q + r)
-- ComplexShape.add_rel
lemma add_rel (r : I) {p q : I} (hpq : c.Rel p q) : c.Rel (r + p) (r + q) 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns] (r : I) {p q : I} (hpq : c.Rel p q)
Goal: c.Rel (r + p) (r + q)
-- ComplexShape.ε_zero
@[simp]
lemma ε_zero : c.ε 0 = 1 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns]
Goal: c.ε 0 = 1
-- ComplexShape.ε_succ
lemma ε_succ {p q : I} (hpq : c.Rel p q) : c.ε q = - c.ε p 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns] {p q : I} (hpq : c.Rel p q)
Goal: c.ε q = -c.ε p
-- ComplexShape.ε_add
lemma ε_add (p q : I) : c.ε (p + q) = c.ε p * c.ε q 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns] (p q : I)
Goal: c.ε (p + q) = c.ε p * c.ε q
-- ComplexShape.next_add
lemma next_add (p q : I) (hp : c.Rel p (c.next p)) :
    c.next (p + q) = c.next p + q 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns] (p q : I) (hp : c.Rel p (c.next p))
Goal: c.next (p + q) = c.next p + q
-- ComplexShape.next_add'
lemma next_add' (p q : I) (hq : c.Rel q (c.next q)) :
    c.next (p + q) = p + c.next q 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns] (p q : I) (hq : c.Rel q (c.next q))
Goal: c.next (p + q) = p + c.next q
-- ComplexShape.instTotalComplexShape_π
@[simps]
instance : TotalComplexShape c c c 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns]
Goal: ∀ (x : I × I),
  TotalComplexShape.π c c c x =
    match x with
    | (p, q) => p + q
-- ComplexShape.instTotalComplexShape_ε₂
@[simps]
instance : TotalComplexShape c c c 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns]
Goal: ∀ (x : I × I),
  TotalComplexShape.ε₂ c c c x =
    match x with
    | (p, snd) => c.ε p
-- ComplexShape.instTotalComplexShape_ε₁
@[simps]
instance : TotalComplexShape c c c 
Arguments: {I : Type u_4} [AddMonoid I] (c : ComplexShape I) [c.TensorSigns]
Goal: ∀ (x : I × I), TotalComplexShape.ε₁ c c c x = 1
-- ComplexShape.ε_down_ℕ
@[simp]
lemma ε_down_ℕ (n : ℕ) : (ComplexShape.down ℕ).ε n = (-1 : ℤˣ) ^ n 
Arguments: (n : ℕ)
Goal: (ComplexShape.down ℕ).ε n = (-1) ^ n
-- ComplexShape.ε_up_ℤ
@[simp]
lemma ε_up_ℤ (n : ℤ) : (ComplexShape.up ℤ).ε n = n.negOnePow 
Arguments: (n : ℤ)
Goal: (ComplexShape.up ℤ).ε n = n.negOnePow