File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

full_name: CochainComplex.HomComplex.Cochain.rightShift
code: /-- The map `Cochain K L n → Cochain K (L⟦a⟧) n'` when `n' + a = n`. -/
def rightShift (a n' : ℤ) (hn' : n' + a = n) : Cochain K (L⟦a⟧) n' 
goal: CochainComplex.HomComplex.Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'

full_name: CochainComplex.HomComplex.Cochain.rightShift_v
code: lemma rightShift_v (a n' : ℤ) (hn' : n' + a = n) (p q : ℤ) (hpq : p + n' = q)
    (p' : ℤ) (hp' : p + n = p') :
    (γ.rightShift a n' hn').v p q hpq = γ.v p p' hp' ≫
      (L.shiftFunctorObjXIso a q p' (by rw [← hp', ← hpq, ← hn', add_assoc])).inv 
goal: (γ.rightShift a n' hn').v p q hpq = γ.v p p' hp' ≫ (L.shiftFunctorObjXIso a q p' ⋯).inv

full_name: CochainComplex.HomComplex.Cochain.leftShift
code: /-- The map `Cochain K L n → Cochain (K⟦a⟧) L n'` when `n + a = n'`. -/
def leftShift (a n' : ℤ) (hn' : n + a = n') : Cochain (K⟦a⟧) L n' 
goal: CochainComplex.HomComplex.Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'

full_name: CochainComplex.HomComplex.Cochain.leftShift_v
code: lemma leftShift_v (a n' : ℤ) (hn' : n + a = n') (p q : ℤ) (hpq : p + n' = q)
    (p' : ℤ) (hp' : p' + n = q) :
    (γ.leftShift a n' hn').v p q hpq = (a * n' + ((a * (a - 1))/2)).negOnePow •
      (K.shiftFunctorObjXIso a p p'
        (by rw [← add_left_inj n, hp', add_assoc, add_comm a, hn', hpq])).hom ≫ γ.v p' q hp' 
goal: (γ.leftShift a n' hn').v p q hpq =
  (a * n' + a * (a - 1) / 2).negOnePow • (K.shiftFunctorObjXIso a p p' ⋯).hom ≫ γ.v p' q hp'

full_name: CochainComplex.HomComplex.Cochain.rightUnshift
code: /-- The map `Cochain K (L⟦a⟧) n' → Cochain K L n` when `n' + a = n`. -/
def rightUnshift {n' a : ℤ} (γ : Cochain K (L⟦a⟧) n') (n : ℤ) (hn : n' + a = n) :
    Cochain K L n 
goal: CochainComplex.HomComplex.Cochain K L n

full_name: CochainComplex.HomComplex.Cochain.rightUnshift_v
code: lemma rightUnshift_v {n' a : ℤ} (γ : Cochain K (L⟦a⟧) n') (n : ℤ) (hn : n' + a = n)
    (p q : ℤ) (hpq : p + n = q) (p' : ℤ) (hp' : p + n' = p') :
    (γ.rightUnshift n hn).v p q hpq = γ.v p p' hp' ≫
      (L.shiftFunctorObjXIso a p' q (by rw [← hpq, ← hn, ← add_assoc, hp'])).hom 
goal: (γ.rightUnshift n hn).v p q hpq = γ.v p p' hp' ≫ (L.shiftFunctorObjXIso a p' q ⋯).hom

full_name: CochainComplex.HomComplex.Cochain.leftUnshift
code: /-- The map `Cochain (K⟦a⟧) L n' → Cochain K L n` when `n + a = n'`. -/
def leftUnshift {n' a : ℤ} (γ : Cochain (K⟦a⟧) L n') (n : ℤ) (hn : n + a = n') :
    Cochain K L n 
goal: CochainComplex.HomComplex.Cochain K L n

full_name: CochainComplex.HomComplex.Cochain.leftUnshift_v
code: lemma leftUnshift_v {n' a : ℤ} (γ : Cochain (K⟦a⟧) L n') (n : ℤ) (hn : n + a = n')
    (p q : ℤ) (hpq : p + n = q) (p' : ℤ) (hp' : p' + n' = q) :
    (γ.leftUnshift n hn).v p q hpq = (a * n' + ((a * (a-1))/2)).negOnePow •
      (K.shiftFunctorObjXIso a p' p (by omega)).inv ≫ γ.v p' q (by omega) 
goal: (γ.leftUnshift n hn).v p q hpq =
  (a * n' + a * (a - 1) / 2).negOnePow • (K.shiftFunctorObjXIso a p' p ⋯).inv ≫ γ.v p' q ⋯

full_name: CochainComplex.HomComplex.Cochain.shift
code: /-- The map `Cochain K L n → Cochain (K⟦a⟧) (L⟦a⟧) n`. -/
def shift (a : ℤ) : Cochain (K⟦a⟧) (L⟦a⟧) n 
goal: CochainComplex.HomComplex.Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K)
  ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n

full_name: CochainComplex.HomComplex.Cochain.shift_v
code: lemma shift_v (a : ℤ) (p q : ℤ) (hpq : p + n = q) (p' q' : ℤ)
    (hp' : p' = p + a) (hq' : q' = q + a) :
    (γ.shift a).v p q hpq = (K.shiftFunctorObjXIso a p p' hp').hom ≫
      γ.v p' q' (by rw [hp', hq', ← hpq, add_assoc, add_comm a, add_assoc]) ≫
      (L.shiftFunctorObjXIso a q q' hq').inv 
goal: (γ.shift a).v p q hpq = (K.shiftFunctorObjXIso a p p' hp').hom ≫ γ.v p' q' ⋯ ≫ (L.shiftFunctorObjXIso a q q' hq').inv

full_name: CochainComplex.HomComplex.Cochain.shift_v'
code: lemma shift_v' (a : ℤ) (p q : ℤ) (hpq : p + n = q) :
    (γ.shift a).v p q hpq = γ.v (p + a) (q + a) (by omega) 
goal: (γ.shift a).v p q hpq = γ.v (p + a) (q + a) ⋯

full_name: CochainComplex.HomComplex.Cochain.rightUnshift_rightShift
code: @[simp]
lemma rightUnshift_rightShift (a n' : ℤ) (hn' : n' + a = n) :
    (γ.rightShift a n' hn').rightUnshift n hn' = γ 
goal: (γ.rightShift a n' hn').rightUnshift n hn' = γ

full_name: CochainComplex.HomComplex.Cochain.rightShift_rightUnshift
code: @[simp]
lemma rightShift_rightUnshift {a n' : ℤ} (γ : Cochain K (L⟦a⟧) n') (n : ℤ) (hn' : n' + a = n) :
    (γ.rightUnshift n hn').rightShift a n' hn' = γ 
goal: (γ.rightUnshift n hn').rightShift a n' hn' = γ

full_name: CochainComplex.HomComplex.Cochain.leftUnshift_leftShift
code: @[simp]
lemma leftUnshift_leftShift (a n' : ℤ) (hn' : n + a = n') :
    (γ.leftShift a n' hn').leftUnshift n hn' = γ 
goal: (γ.leftShift a n' hn').leftUnshift n hn' = γ

full_name: CochainComplex.HomComplex.Cochain.leftShift_leftUnshift
code: @[simp]
lemma leftShift_leftUnshift {a n' : ℤ} (γ : Cochain (K⟦a⟧) L n') (n : ℤ) (hn' : n + a = n') :
    (γ.leftUnshift n hn').leftShift a n' hn' = γ 
goal: (γ.leftUnshift n hn').leftShift a n' hn' = γ

full_name: CochainComplex.HomComplex.Cochain.rightShift_add
code: @[simp]
lemma rightShift_add (a n' : ℤ) (hn' : n' + a = n) :
    (γ₁ + γ₂).rightShift a n' hn' = γ₁.rightShift a n' hn' + γ₂.rightShift a n' hn' 
goal: (γ₁ + γ₂).rightShift a n' hn' = γ₁.rightShift a n' hn' + γ₂.rightShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.leftShift_add
code: @[simp]
lemma leftShift_add (a n' : ℤ) (hn' : n + a = n') :
    (γ₁ + γ₂).leftShift a n' hn' = γ₁.leftShift a n' hn' + γ₂.leftShift a n' hn' 
goal: (γ₁ + γ₂).leftShift a n' hn' = γ₁.leftShift a n' hn' + γ₂.leftShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.shift_add
code: @[simp]
lemma shift_add (a : ℤ) :
    (γ₁ + γ₂).shift a = γ₁.shift a + γ₂.shift a 
goal: (γ₁ + γ₂).shift a = γ₁.shift a + γ₂.shift a

full_name: CochainComplex.HomComplex.Cochain.rightShiftAddEquiv_symm_apply
code: /-- The additive equivalence `Cochain K L n ≃+ Cochain K L⟦a⟧ n'` when `n' + a = n`. -/
@[simps]
def rightShiftAddEquiv (n a n' : ℤ) (hn' : n' + a = n) :
    Cochain K L n ≃+ Cochain K (L⟦a⟧) n' 
goal: (CochainComplex.HomComplex.Cochain.rightShiftAddEquiv K L n a n' hn').symm γ = γ.rightUnshift n hn'

full_name: CochainComplex.HomComplex.Cochain.rightShiftAddEquiv_apply
code: /-- The additive equivalence `Cochain K L n ≃+ Cochain K L⟦a⟧ n'` when `n' + a = n`. -/
@[simps]
def rightShiftAddEquiv (n a n' : ℤ) (hn' : n' + a = n) :
    Cochain K L n ≃+ Cochain K (L⟦a⟧) n' 
goal: (CochainComplex.HomComplex.Cochain.rightShiftAddEquiv K L n a n' hn') γ = γ.rightShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.rightShiftAddEquiv
code: /-- The additive equivalence `Cochain K L n ≃+ Cochain K L⟦a⟧ n'` when `n' + a = n`. -/
@[simps]
def rightShiftAddEquiv (n a n' : ℤ) (hn' : n' + a = n) :
    Cochain K L n ≃+ Cochain K (L⟦a⟧) n' 
goal: CochainComplex.HomComplex.Cochain K L n ≃+
  CochainComplex.HomComplex.Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'

full_name: CochainComplex.HomComplex.Cochain.leftShiftAddEquiv
code: /-- The additive equivalence `Cochain K L n ≃+ Cochain (K⟦a⟧) L n'` when `n + a = n'`. -/
@[simps]
def leftShiftAddEquiv (n a n' : ℤ) (hn' : n + a = n') :
    Cochain K L n ≃+ Cochain (K⟦a⟧) L n' 
goal: CochainComplex.HomComplex.Cochain K L n ≃+
  CochainComplex.HomComplex.Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'

full_name: CochainComplex.HomComplex.Cochain.leftShiftAddEquiv_apply
code: /-- The additive equivalence `Cochain K L n ≃+ Cochain (K⟦a⟧) L n'` when `n + a = n'`. -/
@[simps]
def leftShiftAddEquiv (n a n' : ℤ) (hn' : n + a = n') :
    Cochain K L n ≃+ Cochain (K⟦a⟧) L n' 
goal: (CochainComplex.HomComplex.Cochain.leftShiftAddEquiv K L n a n' hn') γ = γ.leftShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.leftShiftAddEquiv_symm_apply
code: /-- The additive equivalence `Cochain K L n ≃+ Cochain (K⟦a⟧) L n'` when `n + a = n'`. -/
@[simps]
def leftShiftAddEquiv (n a n' : ℤ) (hn' : n + a = n') :
    Cochain K L n ≃+ Cochain (K⟦a⟧) L n' 
goal: (CochainComplex.HomComplex.Cochain.leftShiftAddEquiv K L n a n' hn').symm γ = γ.leftUnshift n hn'

full_name: CochainComplex.HomComplex.Cochain.shiftAddHom_apply
code: /-- The additive map `Cochain K L n →+ Cochain (K⟦a⟧) (L⟦a⟧) n`. -/
@[simps!]
def shiftAddHom (n a : ℤ) : Cochain K L n →+ Cochain (K⟦a⟧) (L⟦a⟧) n 
goal: (CochainComplex.HomComplex.Cochain.shiftAddHom K L n a) γ = γ.shift a

full_name: CochainComplex.HomComplex.Cochain.shiftAddHom
code: /-- The additive map `Cochain K L n →+ Cochain (K⟦a⟧) (L⟦a⟧) n`. -/
@[simps!]
def shiftAddHom (n a : ℤ) : Cochain K L n →+ Cochain (K⟦a⟧) (L⟦a⟧) n 
goal: CochainComplex.HomComplex.Cochain K L n →+
  CochainComplex.HomComplex.Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K)
    ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n

full_name: CochainComplex.HomComplex.Cochain.rightShift_zero
code: @[simp]
lemma rightShift_zero (a n' : ℤ) (hn' : n' + a = n) :
    (0 : Cochain K L n).rightShift a n' hn' = 0 
goal: CochainComplex.HomComplex.Cochain.rightShift 0 a n' hn' = 0

full_name: CochainComplex.HomComplex.Cochain.rightUnshift_zero
code: @[simp]
lemma rightUnshift_zero (a n' : ℤ) (hn' : n' + a = n) :
    (0 : Cochain K (L⟦a⟧) n').rightUnshift n hn' = 0 
goal: CochainComplex.HomComplex.Cochain.rightUnshift 0 n hn' = 0

full_name: CochainComplex.HomComplex.Cochain.leftShift_zero
code: @[simp]
lemma leftShift_zero (a n' : ℤ) (hn' : n + a = n') :
    (0 : Cochain K L n).leftShift a n' hn' = 0 
goal: CochainComplex.HomComplex.Cochain.leftShift 0 a n' hn' = 0

full_name: CochainComplex.HomComplex.Cochain.leftUnshift_zero
code: @[simp]
lemma leftUnshift_zero (a n' : ℤ) (hn' : n + a = n') :
    (0 : Cochain (K⟦a⟧) L n').leftUnshift n hn' = 0 
goal: CochainComplex.HomComplex.Cochain.leftUnshift 0 n hn' = 0

full_name: CochainComplex.HomComplex.Cochain.shift_zero
code: @[simp]
lemma shift_zero (a : ℤ) :
    (0 : Cochain K L n).shift a = 0 
goal: CochainComplex.HomComplex.Cochain.shift 0 a = 0

full_name: CochainComplex.HomComplex.Cochain.rightShift_neg
code: @[simp]
lemma rightShift_neg (a n' : ℤ) (hn' : n' + a = n) :
    (-γ).rightShift a n' hn' = -γ.rightShift a n' hn' 
goal: (-γ).rightShift a n' hn' = -γ.rightShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.rightUnshift_neg
code: @[simp]
lemma rightUnshift_neg {n' a : ℤ} (γ : Cochain K (L⟦a⟧) n') (n : ℤ) (hn : n' + a = n) :
    (-γ).rightUnshift n hn = -γ.rightUnshift n hn 
goal: (-γ).rightUnshift n hn = -γ.rightUnshift n hn

full_name: CochainComplex.HomComplex.Cochain.leftShift_neg
code: @[simp]
lemma leftShift_neg (a n' : ℤ) (hn' : n + a = n') :
    (-γ).leftShift a n' hn' = -γ.leftShift a n' hn' 
goal: (-γ).leftShift a n' hn' = -γ.leftShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.leftUnshift_neg
code: @[simp]
lemma leftUnshift_neg {n' a : ℤ} (γ : Cochain (K⟦a⟧) L n') (n : ℤ) (hn : n + a = n') :
    (-γ).leftUnshift n hn = -γ.leftUnshift n hn 
goal: (-γ).leftUnshift n hn = -γ.leftUnshift n hn

full_name: CochainComplex.HomComplex.Cochain.shift_neg
code: @[simp]
lemma shift_neg (a : ℤ) :
    (-γ).shift a = -γ.shift a 
goal: (-γ).shift a = -γ.shift a

full_name: CochainComplex.HomComplex.Cochain.rightUnshift_add
code: @[simp]
lemma rightUnshift_add {n' a : ℤ} (γ₁ γ₂ : Cochain K (L⟦a⟧) n') (n : ℤ) (hn : n' + a = n) :
    (γ₁ + γ₂).rightUnshift n hn = γ₁.rightUnshift n hn + γ₂.rightUnshift n hn 
goal: (γ₁ + γ₂).rightUnshift n hn = γ₁.rightUnshift n hn + γ₂.rightUnshift n hn

full_name: CochainComplex.HomComplex.Cochain.leftUnshift_add
code: @[simp]
lemma leftUnshift_add {n' a : ℤ} (γ₁ γ₂ : Cochain (K⟦a⟧) L n') (n : ℤ) (hn : n + a = n') :
    (γ₁ + γ₂).leftUnshift n hn = γ₁.leftUnshift n hn + γ₂.leftUnshift n hn 
goal: (γ₁ + γ₂).leftUnshift n hn = γ₁.leftUnshift n hn + γ₂.leftUnshift n hn

full_name: CochainComplex.HomComplex.Cochain.rightShift_smul
code: @[simp]
lemma rightShift_smul (a n' : ℤ) (hn' : n' + a = n) (x : R) :
    (x • γ).rightShift a n' hn' = x • γ.rightShift a n' hn' 
goal: (x • γ).rightShift a n' hn' = x • γ.rightShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.leftShift_smul
code: @[simp]
lemma leftShift_smul (a n' : ℤ) (hn' : n + a = n') (x : R) :
    (x • γ).leftShift a n' hn' = x • γ.leftShift a n' hn' 
goal: (x • γ).leftShift a n' hn' = x • γ.leftShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.shift_smul
code: @[simp]
lemma shift_smul (a : ℤ) (x : R) :
    (x • γ).shift a = x • (γ.shift a) 
goal: (x • γ).shift a = x • γ.shift a

full_name: CochainComplex.HomComplex.Cochain.rightShiftLinearEquiv_apply
code: /-- The linear equivalence `Cochain K L n ≃+ Cochain K L⟦a⟧ n'` when `n' + a = n` and
the category is `R`-linear. -/
@[simps!]
def rightShiftLinearEquiv (n a n' : ℤ) (hn' : n' + a = n) :
    Cochain K L n ≃ₗ[R] Cochain K (L⟦a⟧) n' 
goal: ∀ (a_1 : CochainComplex.HomComplex.Cochain K L n),
  (CochainComplex.HomComplex.Cochain.rightShiftLinearEquiv R K L n a n' hn') a_1 = a_1.rightShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.rightShiftLinearEquiv_symm_apply
code: /-- The linear equivalence `Cochain K L n ≃+ Cochain K L⟦a⟧ n'` when `n' + a = n` and
the category is `R`-linear. -/
@[simps!]
def rightShiftLinearEquiv (n a n' : ℤ) (hn' : n' + a = n) :
    Cochain K L n ≃ₗ[R] Cochain K (L⟦a⟧) n' 
goal: ∀ (a_1 : CochainComplex.HomComplex.Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'),
  (CochainComplex.HomComplex.Cochain.rightShiftLinearEquiv R K L n a n' hn').symm a_1 = a_1.rightUnshift n hn'

full_name: CochainComplex.HomComplex.Cochain.rightShiftLinearEquiv
code: /-- The linear equivalence `Cochain K L n ≃+ Cochain K L⟦a⟧ n'` when `n' + a = n` and
the category is `R`-linear. -/
@[simps!]
def rightShiftLinearEquiv (n a n' : ℤ) (hn' : n' + a = n) :
    Cochain K L n ≃ₗ[R] Cochain K (L⟦a⟧) n' 
goal: CochainComplex.HomComplex.Cochain K L n ≃ₗ[R]
  CochainComplex.HomComplex.Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'

full_name: CochainComplex.HomComplex.Cochain.leftShiftLinearEquiv_apply
code: /-- The additive equivalence `Cochain K L n ≃+ Cochain (K⟦a⟧) L n'` when `n + a = n'` and
the category is `R`-linear. -/
@[simps!]
def leftShiftLinearEquiv (n a n' : ℤ) (hn : n + a = n') :
    Cochain K L n ≃ₗ[R] Cochain (K⟦a⟧) L n' 
goal: ∀ (a_1 : CochainComplex.HomComplex.Cochain K L n),
  (CochainComplex.HomComplex.Cochain.leftShiftLinearEquiv R K L n a n' hn) a_1 = a_1.leftShift a n' hn

full_name: CochainComplex.HomComplex.Cochain.leftShiftLinearEquiv_symm_apply
code: /-- The additive equivalence `Cochain K L n ≃+ Cochain (K⟦a⟧) L n'` when `n + a = n'` and
the category is `R`-linear. -/
@[simps!]
def leftShiftLinearEquiv (n a n' : ℤ) (hn : n + a = n') :
    Cochain K L n ≃ₗ[R] Cochain (K⟦a⟧) L n' 
goal: ∀ (a_1 : CochainComplex.HomComplex.Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'),
  (CochainComplex.HomComplex.Cochain.leftShiftLinearEquiv R K L n a n' hn).symm a_1 = a_1.leftUnshift n hn

full_name: CochainComplex.HomComplex.Cochain.leftShiftLinearEquiv
code: /-- The additive equivalence `Cochain K L n ≃+ Cochain (K⟦a⟧) L n'` when `n + a = n'` and
the category is `R`-linear. -/
@[simps!]
def leftShiftLinearEquiv (n a n' : ℤ) (hn : n + a = n') :
    Cochain K L n ≃ₗ[R] Cochain (K⟦a⟧) L n' 
goal: CochainComplex.HomComplex.Cochain K L n ≃ₗ[R]
  CochainComplex.HomComplex.Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'

full_name: CochainComplex.HomComplex.Cochain.shiftLinearMap_apply
code: /-- The linear map `Cochain K L n ≃+ Cochain (K⟦a⟧) (L⟦a⟧) n` when the category is `R`-linear. -/
@[simps!]
def shiftLinearMap (n a : ℤ) :
    Cochain K L n →ₗ[R] Cochain (K⟦a⟧) (L⟦a⟧) n 
goal: ∀ (a_1 : CochainComplex.HomComplex.Cochain K L n),
  (CochainComplex.HomComplex.Cochain.shiftLinearMap R K L n a) a_1 = a_1.shift a

full_name: CochainComplex.HomComplex.Cochain.shiftLinearMap
code: /-- The linear map `Cochain K L n ≃+ Cochain (K⟦a⟧) (L⟦a⟧) n` when the category is `R`-linear. -/
@[simps!]
def shiftLinearMap (n a : ℤ) :
    Cochain K L n →ₗ[R] Cochain (K⟦a⟧) (L⟦a⟧) n 
goal: CochainComplex.HomComplex.Cochain K L n →ₗ[R]
  CochainComplex.HomComplex.Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K)
    ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n

full_name: CochainComplex.HomComplex.Cochain.rightShift_units_smul
code: @[simp]
lemma rightShift_units_smul (a n' : ℤ) (hn' : n' + a = n) (x : Rˣ) :
    (x • γ).rightShift a n' hn' = x • γ.rightShift a n' hn' 
goal: (x • γ).rightShift a n' hn' = x • γ.rightShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.leftShift_units_smul
code: @[simp]
lemma leftShift_units_smul (a n' : ℤ) (hn' : n + a = n') (x : Rˣ) :
    (x • γ).leftShift a n' hn' = x • γ.leftShift a n' hn' 
goal: (x • γ).leftShift a n' hn' = x • γ.leftShift a n' hn'

full_name: CochainComplex.HomComplex.Cochain.shift_units_smul
code: @[simp]
lemma shift_units_smul (a : ℤ) (x : Rˣ) :
    (x • γ).shift a = x • (γ.shift a) 
goal: (x • γ).shift a = x • γ.shift a

full_name: CochainComplex.HomComplex.Cochain.rightUnshift_smul
code: @[simp]
lemma rightUnshift_smul {n' a : ℤ} (γ : Cochain K (L⟦a⟧) n') (n : ℤ) (hn : n' + a = n) (x : R) :
    (x • γ).rightUnshift n hn = x • γ.rightUnshift n hn 
goal: (x • γ).rightUnshift n hn = x • γ.rightUnshift n hn

full_name: CochainComplex.HomComplex.Cochain.rightUnshift_units_smul
code: @[simp]
lemma rightUnshift_units_smul {n' a : ℤ} (γ : Cochain K (L⟦a⟧) n') (n : ℤ)
    (hn : n' + a = n) (x : Rˣ) :
    (x • γ).rightUnshift n hn = x • γ.rightUnshift n hn 
goal: (x • γ).rightUnshift n hn = x • γ.rightUnshift n hn

full_name: CochainComplex.HomComplex.Cochain.leftUnshift_smul
code: @[simp]
lemma leftUnshift_smul {n' a : ℤ} (γ : Cochain (K⟦a⟧) L n') (n : ℤ) (hn : n + a = n') (x : R) :
    (x • γ).leftUnshift n hn = x • γ.leftUnshift n hn 
goal: (x • γ).leftUnshift n hn = x • γ.leftUnshift n hn

full_name: CochainComplex.HomComplex.Cochain.leftUnshift_units_smul
code: @[simp]
lemma leftUnshift_units_smul {n' a : ℤ} (γ : Cochain (K⟦a⟧) L n') (n : ℤ)
    (hn : n + a = n') (x : Rˣ) :
    (x • γ).leftUnshift n hn = x • γ.leftUnshift n hn 
goal: (x • γ).leftUnshift n hn = x • γ.leftUnshift n hn

full_name: CochainComplex.HomComplex.Cochain.rightUnshift_comp
code: lemma rightUnshift_comp {m : ℤ} {a : ℤ} (γ' : Cochain L (M⟦a⟧) m) {nm : ℤ} (hnm : n + m = nm)
    (nm' : ℤ) (hnm' : nm + a = nm') (m' : ℤ) (hm' : m + a = m') :
    (γ.comp γ' hnm).rightUnshift nm' hnm' =
      γ.comp (γ'.rightUnshift m' hm') (by omega) 
goal: (γ.comp γ' hnm).rightUnshift nm' hnm' = γ.comp (γ'.rightUnshift m' hm') ⋯

full_name: CochainComplex.HomComplex.Cochain.leftShift_comp
code: lemma leftShift_comp (a n' : ℤ) (hn' : n + a = n') {m t t' : ℤ} (γ' : Cochain L M m)
    (h : n + m = t) (ht' : t + a = t') :
    (γ.comp γ' h).leftShift a t' ht' = (a * m).negOnePow • (γ.leftShift a n' hn').comp γ'
      (by rw [← ht', ← h, ← hn', add_assoc, add_comm a, add_assoc]) 
goal: (γ.comp γ' h).leftShift a t' ht' = (a * m).negOnePow • (γ.leftShift a n' hn').comp γ' ⋯

full_name: CochainComplex.HomComplex.Cochain.leftShift_comp_zero_cochain
code: @[simp]
lemma leftShift_comp_zero_cochain (a n' : ℤ) (hn' : n + a = n') (γ' : Cochain L M 0) :
    (γ.comp γ' (add_zero n)).leftShift a n' hn' =
      (γ.leftShift a n' hn').comp γ' (add_zero n') 
goal: (γ.comp γ' ⋯).leftShift a n' hn' = (γ.leftShift a n' hn').comp γ' ⋯

full_name: CochainComplex.HomComplex.Cochain.δ_rightShift
code: lemma δ_rightShift (a n' m' : ℤ) (hn' : n' + a = n) (m : ℤ) (hm' : m' + a = m) :
    δ n' m' (γ.rightShift a n' hn') = a.negOnePow • (δ n m γ).rightShift a m' hm' 
goal: CochainComplex.HomComplex.δ n' m' (γ.rightShift a n' hn') =
  a.negOnePow • (CochainComplex.HomComplex.δ n m γ).rightShift a m' hm'

full_name: CochainComplex.HomComplex.Cochain.δ_rightUnshift
code: lemma δ_rightUnshift {a n' : ℤ} (γ : Cochain K (L⟦a⟧) n') (n : ℤ) (hn : n' + a = n)
    (m m' : ℤ) (hm' : m' + a = m) :
    δ n m (γ.rightUnshift n hn) = a.negOnePow • (δ n' m' γ).rightUnshift m hm' 
goal: CochainComplex.HomComplex.δ n m (γ.rightUnshift n hn) =
  a.negOnePow • (CochainComplex.HomComplex.δ n' m' γ).rightUnshift m hm'

full_name: CochainComplex.HomComplex.Cochain.δ_leftShift
code: lemma δ_leftShift (a n' m' : ℤ) (hn' : n + a = n') (m : ℤ) (hm' : m + a = m') :
    δ n' m' (γ.leftShift a n' hn') = a.negOnePow • (δ n m γ).leftShift a m' hm' 
goal: CochainComplex.HomComplex.δ n' m' (γ.leftShift a n' hn') =
  a.negOnePow • (CochainComplex.HomComplex.δ n m γ).leftShift a m' hm'

full_name: CochainComplex.HomComplex.Cochain.δ_leftUnshift
code: lemma δ_leftUnshift {a n' : ℤ} (γ : Cochain (K⟦a⟧) L n') (n : ℤ) (hn : n + a = n')
    (m m' : ℤ) (hm' : m + a = m') :
    δ n m (γ.leftUnshift n hn) = a.negOnePow • (δ n' m' γ).leftUnshift m hm' 
goal: CochainComplex.HomComplex.δ n m (γ.leftUnshift n hn) =
  a.negOnePow • (CochainComplex.HomComplex.δ n' m' γ).leftUnshift m hm'

full_name: CochainComplex.HomComplex.Cochain.δ_shift
code: @[simp]
lemma δ_shift (a m : ℤ) :
    δ n m (γ.shift a) = a.negOnePow • (δ n m γ).shift a 
goal: CochainComplex.HomComplex.δ n m (γ.shift a) = a.negOnePow • (CochainComplex.HomComplex.δ n m γ).shift a

full_name: CochainComplex.HomComplex.Cochain.leftShift_rightShift
code: lemma leftShift_rightShift (a n' : ℤ) (hn' : n' + a = n) :
    (γ.rightShift a n' hn').leftShift a n hn' =
      (a * n + (a * (a - 1)) / 2).negOnePow • γ.shift a 
goal: (γ.rightShift a n' hn').leftShift a n hn' = (a * n + a * (a - 1) / 2).negOnePow • γ.shift a

full_name: CochainComplex.HomComplex.Cochain.rightShift_leftShift
code: lemma rightShift_leftShift (a n' : ℤ) (hn' : n + a = n') :
    (γ.leftShift a n' hn').rightShift a n hn' =
      (a * n' + (a * (a - 1)) / 2).negOnePow • γ.shift a 
goal: (γ.leftShift a n' hn').rightShift a n hn' = (a * n' + a * (a - 1) / 2).negOnePow • γ.shift a

full_name: CochainComplex.HomComplex.Cochain.leftShift_rightShift_eq_negOnePow_rightShift_leftShift
code: /-- The left and right shift of cochains commute only up to a sign. -/
lemma leftShift_rightShift_eq_negOnePow_rightShift_leftShift
    (a n' n'' : ℤ) (hn' : n' + a = n) (hn'' : n + a = n'') :
    (γ.rightShift a n' hn').leftShift a n hn' =
      a.negOnePow • (γ.leftShift a n'' hn'').rightShift a n hn'' 
goal: (γ.rightShift a n' hn').leftShift a n hn' = a.negOnePow • (γ.leftShift a n'' hn'').rightShift a n hn''

full_name: CochainComplex.HomComplex.Cocycle.rightShift_coe
code: /-- The map `Cocycle K L n → Cocycle K (L⟦a⟧) n'` when `n' + a = n`. -/
@[simps!]
def rightShift (γ : Cocycle K L n) (a n' : ℤ) (hn' : n' + a = n) :
    Cocycle K (L⟦a⟧) n' 
goal: ↑(γ.rightShift a n' hn') = (↑γ).rightShift a n' hn'

full_name: CochainComplex.HomComplex.Cocycle.rightShift
code: /-- The map `Cocycle K L n → Cocycle K (L⟦a⟧) n'` when `n' + a = n`. -/
@[simps!]
def rightShift (γ : Cocycle K L n) (a n' : ℤ) (hn' : n' + a = n) :
    Cocycle K (L⟦a⟧) n' 
goal: CochainComplex.HomComplex.Cocycle K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'

full_name: CochainComplex.HomComplex.Cocycle.rightUnshift
code: /-- The map `Cocycle K (L⟦a⟧) n' → Cocycle K L n` when `n' + a = n`. -/
@[simps!]
def rightUnshift {n' a : ℤ} (γ : Cocycle K (L⟦a⟧) n') (n : ℤ) (hn : n' + a = n) :
    Cocycle K L n 
goal: CochainComplex.HomComplex.Cocycle K L n

full_name: CochainComplex.HomComplex.Cocycle.rightUnshift_coe
code: /-- The map `Cocycle K (L⟦a⟧) n' → Cocycle K L n` when `n' + a = n`. -/
@[simps!]
def rightUnshift {n' a : ℤ} (γ : Cocycle K (L⟦a⟧) n') (n : ℤ) (hn : n' + a = n) :
    Cocycle K L n 
goal: ↑(γ.rightUnshift n hn) = (↑γ).rightUnshift n hn

full_name: CochainComplex.HomComplex.Cocycle.leftShift
code: /-- The map `Cocycle K L n → Cocycle (K⟦a⟧) L n'` when `n + a = n'`. -/
@[simps!]
def leftShift (γ : Cocycle K L n) (a n' : ℤ) (hn' : n + a = n') :
    Cocycle (K⟦a⟧) L n' 
goal: CochainComplex.HomComplex.Cocycle ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'

full_name: CochainComplex.HomComplex.Cocycle.leftShift_coe
code: /-- The map `Cocycle K L n → Cocycle (K⟦a⟧) L n'` when `n + a = n'`. -/
@[simps!]
def leftShift (γ : Cocycle K L n) (a n' : ℤ) (hn' : n + a = n') :
    Cocycle (K⟦a⟧) L n' 
goal: ↑(γ.leftShift a n' hn') = (↑γ).leftShift a n' hn'

full_name: CochainComplex.HomComplex.Cocycle.leftUnshift
code: /-- The map `Cocycle (K⟦a⟧) L n' → Cocycle K L n` when `n + a = n'`. -/
@[simps!]
def leftUnshift {n' a : ℤ} (γ : Cocycle (K⟦a⟧) L n') (n : ℤ) (hn : n + a = n') :
    Cocycle K L n 
goal: CochainComplex.HomComplex.Cocycle K L n

full_name: CochainComplex.HomComplex.Cocycle.leftUnshift_coe
code: /-- The map `Cocycle (K⟦a⟧) L n' → Cocycle K L n` when `n + a = n'`. -/
@[simps!]
def leftUnshift {n' a : ℤ} (γ : Cocycle (K⟦a⟧) L n') (n : ℤ) (hn : n + a = n') :
    Cocycle K L n 
goal: ↑(γ.leftUnshift n hn) = (↑γ).leftUnshift n hn

full_name: CochainComplex.HomComplex.Cocycle.shift
code: /-- The map `Cocycle K L n → Cocycle (K⟦a⟧) (L⟦a⟧) n`. -/
@[simps!]
def shift (γ : Cocycle K L n) (a : ℤ) :
    Cocycle (K⟦a⟧) (L⟦a⟧) n 
goal: CochainComplex.HomComplex.Cocycle ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K)
  ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n

full_name: CochainComplex.HomComplex.Cocycle.shift_coe
code: /-- The map `Cocycle K L n → Cocycle (K⟦a⟧) (L⟦a⟧) n`. -/
@[simps!]
def shift (γ : Cocycle K L n) (a : ℤ) :
    Cocycle (K⟦a⟧) (L⟦a⟧) n 
goal: ↑(γ.shift a) = (↑γ).shift a