ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.Functor.IsStronglyCartesian.map_comp_map
@[reassoc (attr := simp)]
lemma map_comp_map {R' R'' : 𝒮} {a' a'' : 𝒳} {f' : R' ⟶ S} {f'' : R'' ⟶ S} {g : R' ⟶ R}
    {g' : R'' ⟶ R'} (H : f' = g ≫ f) (H' : f'' = g' ≫ f') (φ' : a' ⟶ b) (φ'' : a'' ⟶ b)
    [IsStronglyCartesian p f' φ'] [IsHomLift p f'' φ''] :
    map p f' φ' H' φ'' ≫ map p f φ H φ' =
      map p f φ (show f'' = (g' ≫ g) ≫ f by rwa [assoc, ← H]) φ'' 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₁} 𝒮] [CategoryTheory.Category.{v₂, u₂} 𝒳] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsStronglyCartesian f φ] {R' R'' : 𝒮} {a' a'' : 𝒳} {f' : R' ⟶ S} {f'' : R'' ⟶ S} {g : R' ⟶ R} {g' : R'' ⟶ R'} (H : f' = g ≫ f) (H' : f'' = g' ≫ f') (φ' : a' ⟶ b) (φ'' : a'' ⟶ b) [p.IsStronglyCartesian f' φ'] [p.IsHomLift f'' φ'']
Goal: CategoryTheory.Functor.IsStronglyCartesian.map p f' φ' H' φ'' ≫
    CategoryTheory.Functor.IsStronglyCartesian.map p f φ H φ' =
  CategoryTheory.Functor.IsStronglyCartesian.map p f φ ⋯ φ''
-- CategoryTheory.Functor.IsStronglyCartesian.of_comp
protected lemma of_comp [IsStronglyCartesian p g ψ] [IsStronglyCartesian p (f ≫ g) (φ ≫ ψ)]
    [IsHomLift p f φ] : IsStronglyCartesian p f φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₁} 𝒮] [CategoryTheory.Category.{v₂, u₂} 𝒳] (p : 𝒳 ⥤ 𝒮) {R S T : 𝒮} {a b c : 𝒳} {f : R ⟶ S} {g : S ⟶ T} {φ : a ⟶ b} {ψ : b ⟶ c} [p.IsStronglyCartesian g ψ] [p.IsStronglyCartesian (f ≫ g) (φ ≫ ψ)] [p.IsHomLift f φ]
Goal: p.IsStronglyCartesian f φ
-- CategoryTheory.Functor.IsStronglyCartesian.isIso_of_base_isIso
lemma isIso_of_base_isIso (φ : a ⟶ b) [IsStronglyCartesian p f φ] [IsIso f] : IsIso φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₁} 𝒮] [CategoryTheory.Category.{v₂, u₂} 𝒳] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsStronglyCartesian f φ] [CategoryTheory.IsIso f]
Goal: CategoryTheory.IsIso φ
-- CategoryTheory.Functor.IsHomLift.cond
class Functor.IsHomLift {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) : Prop where
  cond : IsHomLiftAux p f φ
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] {p : 𝒳 ⥤ 𝒮} {R S : 𝒮} {a b : 𝒳} {f : R ⟶ S} {φ : a ⟶ b} [self : p.IsHomLift f φ]
Goal: CategoryTheory.IsHomLiftAux p f φ
-- CategoryTheory.IsHomLift.id
protected lemma id {p : 𝒳 ⥤ 𝒮} {R : 𝒮} {a : 𝒳} (ha : p.obj a = R) : p.IsHomLift (𝟙 R) (𝟙 a) 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] {p : 𝒳 ⥤ 𝒮} {R : 𝒮} {a : 𝒳} (ha : p.obj a = R)
Goal: p.IsHomLift (𝟙 R) (𝟙 a)
-- CategoryTheory.IsHomLift.domain_eq
lemma domain_eq (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ] : p.obj a = R 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ]
Goal: p.obj a = R
-- CategoryTheory.IsHomLift.codomain_eq
lemma codomain_eq (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ] : p.obj b = S 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ]
Goal: p.obj b = S
-- CategoryTheory.IsHomLift.fac
lemma fac : f = eqToHom (domain_eq p f φ).symm ≫ p.map φ ≫ eqToHom (codomain_eq p f φ) 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ]
Goal: f = CategoryTheory.eqToHom ⋯ ≫ p.map φ ≫ CategoryTheory.eqToHom ⋯
-- CategoryTheory.IsHomLift.fac'
lemma fac' : p.map φ = eqToHom (domain_eq p f φ) ≫ f ≫ eqToHom (codomain_eq p f φ).symm 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ]
Goal: p.map φ = CategoryTheory.eqToHom ⋯ ≫ f ≫ CategoryTheory.eqToHom ⋯
-- CategoryTheory.IsHomLift.commSq
lemma commSq : CommSq (p.map φ) (eqToHom (domain_eq p f φ)) (eqToHom (codomain_eq p f φ)) f 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ]
Goal: CategoryTheory.CommSq (p.map φ) (CategoryTheory.eqToHom ⋯) (CategoryTheory.eqToHom ⋯) f
-- CategoryTheory.IsHomLift.eq_of_isHomLift
lemma eq_of_isHomLift {a b : 𝒳} (f : p.obj a ⟶ p.obj b) (φ : a ⟶ b) [p.IsHomLift f φ] :
    f = p.map φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {a b : 𝒳} (f : p.obj a ⟶ p.obj b) (φ : a ⟶ b) [p.IsHomLift f φ]
Goal: f = p.map φ
-- CategoryTheory.IsHomLift.of_fac
lemma of_fac {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (ha : p.obj a = R) (hb : p.obj b = S)
    (h : f = eqToHom ha.symm ≫ p.map φ ≫ eqToHom hb) : p.IsHomLift f φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (ha : p.obj a = R) (hb : p.obj b = S) (h : f = CategoryTheory.eqToHom ⋯ ≫ p.map φ ≫ CategoryTheory.eqToHom hb)
Goal: p.IsHomLift f φ
-- CategoryTheory.IsHomLift.of_fac'
lemma of_fac' {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (ha : p.obj a = R) (hb : p.obj b = S)
    (h : p.map φ = eqToHom ha ≫ f ≫ eqToHom hb.symm) : p.IsHomLift f φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (ha : p.obj a = R) (hb : p.obj b = S) (h : p.map φ = CategoryTheory.eqToHom ha ≫ f ≫ CategoryTheory.eqToHom ⋯)
Goal: p.IsHomLift f φ
-- CategoryTheory.IsHomLift.of_commSq
lemma of_commSq {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (ha : p.obj a = R) (hb : p.obj b = S)
    (h : CommSq (p.map φ) (eqToHom ha) (eqToHom hb) f) : p.IsHomLift f φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (ha : p.obj a = R) (hb : p.obj b = S) (h : CategoryTheory.CommSq (p.map φ) (CategoryTheory.eqToHom ha) (CategoryTheory.eqToHom hb) f)
Goal: p.IsHomLift f φ
-- CategoryTheory.IsHomLift.comp_lift_id_right'
lemma comp_lift_id_right' {R S : 𝒮} {a b c : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ]
    (T : 𝒮) (ψ : b ⟶ c) [p.IsHomLift (𝟙 T) ψ] : p.IsHomLift f (φ ≫ ψ) 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b c : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ] (T : 𝒮) (ψ : b ⟶ c) [p.IsHomLift (𝟙 T) ψ]
Goal: p.IsHomLift f (φ ≫ ψ)
-- CategoryTheory.IsHomLift.comp_lift_id_left'
lemma comp_lift_id_left' {a b c : 𝒳} (R : 𝒮) (φ : a ⟶ b) [p.IsHomLift (𝟙 R) φ]
    {S T : 𝒮} (f : S ⟶ T) (ψ : b ⟶ c) [p.IsHomLift f ψ] : p.IsHomLift f (φ ≫ ψ) 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {a b c : 𝒳} (R : 𝒮) (φ : a ⟶ b) [p.IsHomLift (𝟙 R) φ] {S T : 𝒮} (f : S ⟶ T) (ψ : b ⟶ c) [p.IsHomLift f ψ]
Goal: p.IsHomLift f (φ ≫ ψ)
-- CategoryTheory.IsHomLift.eqToHom_domain_lift_id
lemma eqToHom_domain_lift_id {p : 𝒳 ⥤ 𝒮} {a b : 𝒳} (hab : a = b) {R : 𝒮} (hR : p.obj a = R) :
    p.IsHomLift (𝟙 R) (eqToHom hab) 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] {p : 𝒳 ⥤ 𝒮} {a b : 𝒳} (hab : a = b) {R : 𝒮} (hR : p.obj a = R)
Goal: p.IsHomLift (𝟙 R) (CategoryTheory.eqToHom hab)
-- CategoryTheory.IsHomLift.eqToHom_codomain_lift_id
lemma eqToHom_codomain_lift_id {p : 𝒳 ⥤ 𝒮} {a b : 𝒳} (hab : a = b) {S : 𝒮} (hS : p.obj b = S) :
    p.IsHomLift (𝟙 S) (eqToHom hab) 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] {p : 𝒳 ⥤ 𝒮} {a b : 𝒳} (hab : a = b) {S : 𝒮} (hS : p.obj b = S)
Goal: p.IsHomLift (𝟙 S) (CategoryTheory.eqToHom hab)
-- CategoryTheory.IsHomLift.id_lift_eqToHom_domain
lemma id_lift_eqToHom_domain {p : 𝒳 ⥤ 𝒮} {R S : 𝒮} (hRS : R = S) {a : 𝒳} (ha : p.obj a = R) :
    p.IsHomLift (eqToHom hRS) (𝟙 a) 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] {p : 𝒳 ⥤ 𝒮} {R S : 𝒮} (hRS : R = S) {a : 𝒳} (ha : p.obj a = R)
Goal: p.IsHomLift (CategoryTheory.eqToHom hRS) (𝟙 a)
-- CategoryTheory.IsHomLift.id_lift_eqToHom_codomain
lemma id_lift_eqToHom_codomain {p : 𝒳 ⥤ 𝒮} {R S : 𝒮} (hRS : R = S) {b : 𝒳} (hb : p.obj b = S) :
    p.IsHomLift (eqToHom hRS) (𝟙 b) 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] {p : 𝒳 ⥤ 𝒮} {R S : 𝒮} (hRS : R = S) {b : 𝒳} (hb : p.obj b = S)
Goal: p.IsHomLift (CategoryTheory.eqToHom hRS) (𝟙 b)
-- CategoryTheory.IsHomLift.comp_eqToHom_lift_iff
@[simp]
lemma comp_eqToHom_lift_iff {R S : 𝒮} {a' a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (h : a' = a) :
    p.IsHomLift f (eqToHom h ≫ φ) ↔ p.IsHomLift f φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a' a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (h : a' = a)
Goal: p.IsHomLift f (CategoryTheory.eqToHom h ≫ φ) ↔ p.IsHomLift f φ
-- CategoryTheory.IsHomLift.eqToHom_comp_lift_iff
@[simp]
lemma eqToHom_comp_lift_iff {R S : 𝒮} {a b b' : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (h : b = b') :
    p.IsHomLift f (φ ≫ eqToHom h) ↔ p.IsHomLift f φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b b' : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (h : b = b')
Goal: p.IsHomLift f (φ ≫ CategoryTheory.eqToHom h) ↔ p.IsHomLift f φ
-- CategoryTheory.IsHomLift.lift_eqToHom_comp_iff
@[simp]
lemma lift_eqToHom_comp_iff {R' R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (h : R' = R) :
    p.IsHomLift (eqToHom h ≫ f) φ ↔ p.IsHomLift f φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R' R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (h : R' = R)
Goal: p.IsHomLift (CategoryTheory.eqToHom h ≫ f) φ ↔ p.IsHomLift f φ
-- CategoryTheory.IsHomLift.lift_comp_eqToHom_iff
@[simp]
lemma lift_comp_eqToHom_iff {R S S' : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (h : S = S') :
    p.IsHomLift (f ≫ eqToHom h) φ ↔ p.IsHomLift f φ 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S S' : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) (h : S = S')
Goal: p.IsHomLift (f ≫ CategoryTheory.eqToHom h) φ ↔ p.IsHomLift f φ
-- CategoryTheory.IsHomLift.isoOfIsoLift_hom
@[simps hom]
def isoOfIsoLift (f : R ⟶ S) (φ : a ≅ b) [p.IsHomLift f φ.hom] :
    R ≅ S 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ≅ b) [p.IsHomLift f φ.hom]
Goal: (CategoryTheory.IsHomLift.isoOfIsoLift p f φ).hom = f
-- CategoryTheory.IsHomLift.isoOfIsoLift_inv_hom_id
@[simp]
lemma isoOfIsoLift_inv_hom_id (f : R ⟶ S) (φ : a ≅ b) [p.IsHomLift f φ.hom] :
    (isoOfIsoLift p f φ).inv ≫ f = 𝟙 S 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ≅ b) [p.IsHomLift f φ.hom]
Goal: (CategoryTheory.IsHomLift.isoOfIsoLift p f φ).inv ≫ f = 𝟙 S
-- CategoryTheory.IsHomLift.isoOfIsoLift_hom_inv_id
@[simp]
lemma isoOfIsoLift_hom_inv_id (f : R ⟶ S) (φ : a ≅ b) [p.IsHomLift f φ.hom] :
    f ≫ (isoOfIsoLift p f φ).inv = 𝟙 R 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ≅ b) [p.IsHomLift f φ.hom]
Goal: f ≫ (CategoryTheory.IsHomLift.isoOfIsoLift p f φ).inv = 𝟙 R
-- CategoryTheory.IsHomLift.isIso_of_lift_isIso
lemma isIso_of_lift_isIso (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ] [IsIso φ] : IsIso f 
Arguments: {𝒮 : Type u₁} {𝒳 : Type u₂} [CategoryTheory.Category.{v₁, u₂} 𝒳] [CategoryTheory.Category.{v₂, u₁} 𝒮] (p : 𝒳 ⥤ 𝒮) {R S : 𝒮} {a b : 𝒳} (f : R ⟶ S) (φ : a ⟶ b) [p.IsHomLift f φ] [CategoryTheory.IsIso φ]
Goal: CategoryTheory.IsIso f
-- CategoryTheory.Functor.ShiftSequence.shiftIso_add
class ShiftSequence where
    sequence : M → C ⥤ A
    isoZero : sequence 0 ≅ F
    shiftIso (n a a' : M) (ha' : n + a = a') : shiftFunctor C n ⋙ sequence a ≅ sequence a'
  shiftIso_zero (a : M) : shiftIso 0 a a (zero_add a) =
    isoWhiskerRight (shiftFunctorZero C M) _ ≪≫ leftUnitor _
  shiftIso_add : ∀ (n m a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a''),
    shiftIso (m + n) a a'' (by rw [add_assoc, ha', ha'']) =
      isoWhiskerRight (shiftFunctorAdd C m n) _ ≪≫ Functor.associator _ _ _ ≪≫
        isoWhiskerLeft _ (shiftIso n a a' ha') ≪≫ shiftIso m a' a'' ha''
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_5, u_1} C] [CategoryTheory.Category.{u_6, u_2} A] {F : C ⥤ A} {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [self : F.ShiftSequence M] (n m a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a'')
Goal: CategoryTheory.Functor.ShiftSequence.shiftIso (m + n) a a'' ⋯ =
  CategoryTheory.isoWhiskerRight (CategoryTheory.shiftFunctorAdd C m n)
      (CategoryTheory.Functor.ShiftSequence.sequence F a) ≪≫
    (CategoryTheory.shiftFunctor C m).associator (CategoryTheory.shiftFunctor C n)
        (CategoryTheory.Functor.ShiftSequence.sequence F a) ≪≫
      CategoryTheory.isoWhiskerLeft (CategoryTheory.shiftFunctor C m)
          (CategoryTheory.Functor.ShiftSequence.shiftIso n a a' ha') ≪≫
        CategoryTheory.Functor.ShiftSequence.shiftIso m a' a'' ha''
-- CategoryTheory.Functor.ShiftSequence.shiftIso_zero
class ShiftSequence where
    sequence : M → C ⥤ A
    isoZero : sequence 0 ≅ F
    shiftIso (n a a' : M) (ha' : n + a = a') : shiftFunctor C n ⋙ sequence a ≅ sequence a'
  shiftIso_zero (a : M) : shiftIso 0 a a (zero_add a) =
    isoWhiskerRight (shiftFunctorZero C M) _ ≪≫ leftUnitor _
  shiftIso_add : ∀ (n m a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a''),
    shiftIso (m + n) a a'' (by rw [add_assoc, ha', ha'']) =
      isoWhiskerRight (shiftFunctorAdd C m n) _ ≪≫ Functor.associator _ _ _ ≪≫
        isoWhiskerLeft _ (shiftIso n a a' ha') ≪≫ shiftIso m a' a'' ha''
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_5, u_1} C] [CategoryTheory.Category.{u_6, u_2} A] {F : C ⥤ A} {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [self : F.ShiftSequence M] (a : M)
Goal: CategoryTheory.Functor.ShiftSequence.shiftIso 0 a a ⋯ =
  CategoryTheory.isoWhiskerRight (CategoryTheory.shiftFunctorZero C M)
      (CategoryTheory.Functor.ShiftSequence.sequence F a) ≪≫
    (CategoryTheory.Functor.ShiftSequence.sequence F a).leftUnitor
-- CategoryTheory.Functor.shiftIso_hom_naturality
@[reassoc (attr := simp 1100)]
lemma shiftIso_hom_naturality {X Y : C} (n a a' : M) (ha' : n + a = a') (f : X ⟶ Y) :
    (shift F a).map (f⟦n⟧') ≫ (shiftIso F n a a' ha').hom.app Y =
      (shiftIso F n a a' ha').hom.app X ≫ (shift F a').map f 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_5, u_1} C] [CategoryTheory.Category.{u_6, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] {X Y : C} (n a a' : M) (ha' : n + a = a') (f : X ⟶ Y)
Goal: (F.shift a).map ((CategoryTheory.shiftFunctor C n).map f) ≫ (F.shiftIso n a a' ha').hom.app Y =
  (F.shiftIso n a a' ha').hom.app X ≫ (F.shift a').map f
-- CategoryTheory.Functor.shiftIso_inv_naturality
@[reassoc (attr := simp 1100)]
lemma shiftIso_inv_naturality {X Y : C} (n a a' : M) (ha' : n + a = a') (f : X ⟶ Y) :
    (shift F a').map f ≫ (shiftIso F n a a' ha').inv.app Y =
      (shiftIso F n a a' ha').inv.app X ≫ (shift F a).map (f⟦n⟧') 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_5, u_1} C] [CategoryTheory.Category.{u_6, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] {X Y : C} (n a a' : M) (ha' : n + a = a') (f : X ⟶ Y)
Goal: (F.shift a').map f ≫ (F.shiftIso n a a' ha').inv.app Y =
  (F.shiftIso n a a' ha').inv.app X ≫ (F.shift a).map ((CategoryTheory.shiftFunctor C n).map f)
-- CategoryTheory.Functor.isoShift_hom_naturality
@[reassoc]
lemma isoShift_hom_naturality (n : M) {X Y : C} (f : X ⟶ Y) :
    F.map (f⟦n⟧') ≫ (F.isoShift n).hom.app Y =
      (F.isoShift n).hom.app X ≫ (F.shift n).map f 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_5, u_1} C] [CategoryTheory.Category.{u_6, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (n : M) {X Y : C} (f : X ⟶ Y)
Goal: F.map ((CategoryTheory.shiftFunctor C n).map f) ≫ (F.isoShift n).hom.app Y =
  (F.isoShift n).hom.app X ≫ (F.shift n).map f
-- CategoryTheory.Functor.isoShift_inv_naturality
@[reassoc]
lemma isoShift_inv_naturality (n : M) {X Y : C} (f : X ⟶ Y) :
    (F.shift n).map f ≫ (F.isoShift n).inv.app Y =
      (F.isoShift n).inv.app X ≫ F.map (f⟦n⟧') 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_5, u_1} C] [CategoryTheory.Category.{u_6, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (n : M) {X Y : C} (f : X ⟶ Y)
Goal: (F.shift n).map f ≫ (F.isoShift n).inv.app Y =
  (F.isoShift n).inv.app X ≫ F.map ((CategoryTheory.shiftFunctor C n).map f)
-- CategoryTheory.Functor.shiftIso_zero
lemma shiftIso_zero (a : M) :
    F.shiftIso 0 a a (zero_add a) =
      isoWhiskerRight (shiftFunctorZero C M) _ ≪≫ leftUnitor _ 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_6, u_1} C] [CategoryTheory.Category.{u_5, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (a : M)
Goal: F.shiftIso 0 a a ⋯ =
  CategoryTheory.isoWhiskerRight (CategoryTheory.shiftFunctorZero C M) (F.shift a) ≪≫ (F.shift a).leftUnitor
-- CategoryTheory.Functor.shiftIso_zero_hom_app
@[simp]
lemma shiftIso_zero_hom_app (a : M) (X : C) :
    (F.shiftIso 0 a a (zero_add a)).hom.app X =
      (shift F a).map ((shiftFunctorZero C M).hom.app X) 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_6, u_1} C] [CategoryTheory.Category.{u_5, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (a : M) (X : C)
Goal: (F.shiftIso 0 a a ⋯).hom.app X = (F.shift a).map ((CategoryTheory.shiftFunctorZero C M).hom.app X)
-- CategoryTheory.Functor.shiftIso_zero_inv_app
@[simp]
lemma shiftIso_zero_inv_app (a : M) (X : C) :
    (F.shiftIso 0 a a (zero_add a)).inv.app X =
      (shift F a).map ((shiftFunctorZero C M).inv.app X) 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_6, u_1} C] [CategoryTheory.Category.{u_5, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (a : M) (X : C)
Goal: (F.shiftIso 0 a a ⋯).inv.app X = (F.shift a).map ((CategoryTheory.shiftFunctorZero C M).inv.app X)
-- CategoryTheory.Functor.shiftIso_add
lemma shiftIso_add (n m a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a'') :
    F.shiftIso (m + n) a a'' (by rw [add_assoc, ha', ha'']) =
      isoWhiskerRight (shiftFunctorAdd C m n) _ ≪≫ Functor.associator _ _ _ ≪≫
        isoWhiskerLeft _ (F.shiftIso n a a' ha') ≪≫ F.shiftIso m a' a'' ha'' 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_6, u_1} C] [CategoryTheory.Category.{u_5, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (n m a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a'')
Goal: F.shiftIso (m + n) a a'' ⋯ =
  CategoryTheory.isoWhiskerRight (CategoryTheory.shiftFunctorAdd C m n) (F.shift a) ≪≫
    (CategoryTheory.shiftFunctor C m).associator (CategoryTheory.shiftFunctor C n) (F.shift a) ≪≫
      CategoryTheory.isoWhiskerLeft (CategoryTheory.shiftFunctor C m) (F.shiftIso n a a' ha') ≪≫
        F.shiftIso m a' a'' ha''
-- CategoryTheory.Functor.shiftIso_add_hom_app
lemma shiftIso_add_hom_app (n m a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a'') (X : C) :
    (F.shiftIso (m + n) a a'' (by rw [add_assoc, ha', ha''])).hom.app X =
      (shift F a).map ((shiftFunctorAdd C m n).hom.app X) ≫
        (shiftIso F n a a' ha').hom.app ((shiftFunctor C m).obj X) ≫
          (shiftIso F m a' a'' ha'').hom.app X 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_6, u_1} C] [CategoryTheory.Category.{u_5, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (n m a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a'') (X : C)
Goal: (F.shiftIso (m + n) a a'' ⋯).hom.app X =
  (F.shift a).map ((CategoryTheory.shiftFunctorAdd C m n).hom.app X) ≫
    (F.shiftIso n a a' ha').hom.app ((CategoryTheory.shiftFunctor C m).obj X) ≫ (F.shiftIso m a' a'' ha'').hom.app X
-- CategoryTheory.Functor.shiftIso_add_inv_app
lemma shiftIso_add_inv_app (n m a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a'') (X : C) :
    (F.shiftIso (m + n) a a'' (by rw [add_assoc, ha', ha''])).inv.app X =
      (shiftIso F m a' a'' ha'').inv.app X ≫
        (shiftIso F n a a' ha').inv.app ((shiftFunctor C m).obj X) ≫
          (shift F a).map ((shiftFunctorAdd C m n).inv.app X) 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_6, u_1} C] [CategoryTheory.Category.{u_5, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (n m a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a'') (X : C)
Goal: (F.shiftIso (m + n) a a'' ⋯).inv.app X =
  (F.shiftIso m a' a'' ha'').inv.app X ≫
    (F.shiftIso n a a' ha').inv.app ((CategoryTheory.shiftFunctor C m).obj X) ≫
      (F.shift a).map ((CategoryTheory.shiftFunctorAdd C m n).inv.app X)
-- CategoryTheory.Functor.shiftIso_add'
lemma shiftIso_add' (n m mn : M) (hnm : m + n = mn) (a a' a'' : M)
    (ha' : n + a = a') (ha'' : m + a' = a'') :
    F.shiftIso mn a a'' (by rw [← hnm, ← ha'', ← ha', add_assoc]) =
      isoWhiskerRight (shiftFunctorAdd' C m n _ hnm) _ ≪≫ Functor.associator _ _ _ ≪≫
        isoWhiskerLeft _ (F.shiftIso n a a' ha') ≪≫ F.shiftIso m a' a'' ha'' 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_6, u_1} C] [CategoryTheory.Category.{u_5, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (n m mn : M) (hnm : m + n = mn) (a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a'')
Goal: F.shiftIso mn a a'' ⋯ =
  CategoryTheory.isoWhiskerRight (CategoryTheory.shiftFunctorAdd' C m n mn hnm) (F.shift a) ≪≫
    (CategoryTheory.shiftFunctor C m).associator (CategoryTheory.shiftFunctor C n) (F.shift a) ≪≫
      CategoryTheory.isoWhiskerLeft (CategoryTheory.shiftFunctor C m) (F.shiftIso n a a' ha') ≪≫
        F.shiftIso m a' a'' ha''
-- CategoryTheory.Functor.shiftIso_add'_hom_app
lemma shiftIso_add'_hom_app (n m mn : M) (hnm : m + n = mn) (a a' a'' : M)
    (ha' : n + a = a') (ha'' : m + a' = a'') (X : C) :
    (F.shiftIso mn a a'' (by rw [← hnm, ← ha'', ← ha', add_assoc])).hom.app X =
      (shift F a).map ((shiftFunctorAdd' C m n mn hnm).hom.app X) ≫
        (shiftIso F n a a' ha').hom.app ((shiftFunctor C m).obj X) ≫
          (shiftIso F m a' a'' ha'').hom.app X 
Arguments: {C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{u_6, u_1} C] [CategoryTheory.Category.{u_5, u_2} A] (F : C ⥤ A) {M : Type u_3} [AddMonoid M] [CategoryTheory.HasShift C M] [F.ShiftSequence M] (n m mn : M) (hnm : m + n = mn) (a a' a'' : M) (ha' : n + a = a') (ha'' : m + a' = a'') (X : C)
Goal: (F.shiftIso mn a a'' ⋯).hom.app X =
  (F.shift a).map ((CategoryTheory.shiftFunctorAdd' C m n mn hnm).hom.app X) ≫
    (F.shiftIso n a a' ha').hom.app ((CategoryTheory.shiftFunctor C m).obj X) ≫ (F.shiftIso m a' a'' ha'').hom.app X