Theorem: CategoryTheory.Monad.algebraPreadditive_homGroup_sub_f
File: Mathlib/CategoryTheory/Preadditive/EilenbergMoore.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
α β : F ⟶ G
⊢ T.map (α.f + β.f) ≫ G.a = F.a ≫ (α.f + β.f)
state_after: no goals
tactic: simp only [Functor.map_add, add_comp, Monad.Algebra.Hom.h, comp_add]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ T.map 0 ≫ G.a = F.a ≫ 0
state_after: no goals
tactic: simp only [Functor.map_zero, zero_comp, comp_zero]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n : ℕ
α : F ⟶ G
⊢ T.map (n • α.f) ≫ G.a = F.a ≫ (n • α.f)
state_after: no goals
tactic: rw [Functor.map_nsmul, nsmul_comp, Monad.Algebra.Hom.h, comp_nsmul]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
α : F ⟶ G
⊢ T.map (-α.f) ≫ G.a = F.a ≫ (-α.f)
state_after: no goals
tactic: simp only [Functor.map_neg, neg_comp, Monad.Algebra.Hom.h, comp_neg]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
α β : F ⟶ G
⊢ T.map (α.f - β.f) ≫ G.a = F.a ≫ (α.f - β.f)
state_after: no goals
tactic: simp only [Functor.map_sub, sub_comp, Monad.Algebra.Hom.h, comp_sub]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
r : ℤ
α : F ⟶ G
⊢ T.map (r • α.f) ≫ G.a = F.a ≫ (r • α.f)
state_after: no goals
tactic: rw [Functor.map_zsmul, zsmul_comp, Monad.Algebra.Hom.h, comp_zsmul]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (a b c : F ⟶ G), a + b + c = a + (b + c)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ c✝ : F ⟶ G
⊢ a✝ + b✝ + c✝ = a✝ + (b✝ + c✝)
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ c✝ : F ⟶ G
⊢ a✝ + b✝ + c✝ = a✝ + (b✝ + c✝)
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ c✝ : F ⟶ G
⊢ (a✝ + b✝ + c✝).f = (a✝ + (b✝ + c✝)).f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ c✝ : F ⟶ G
⊢ (a✝ + b✝ + c✝).f = (a✝ + (b✝ + c✝)).f
state_after: no goals
tactic: apply add_assoc
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (a : F ⟶ G), 0 + a = a
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ 0 + a✝ = a✝
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ 0 + a✝ = a✝
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ (0 + a✝).f = a✝.f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ (0 + a✝).f = a✝.f
state_after: no goals
tactic: apply zero_add
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (a : F ⟶ G), a + 0 = a
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ a✝ + 0 = a✝
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ a✝ + 0 = a✝
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ (a✝ + 0).f = a✝.f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ (a✝ + 0).f = a✝.f
state_after: no goals
tactic: apply add_zero
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (x : F ⟶ G), (fun n α => { f := n • α.f, h := ⋯ }) 0 x = 0
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
x✝ : F ⟶ G
⊢ (fun n α => { f := n • α.f, h := ⋯ }) 0 x✝ = 0
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
x✝ : F ⟶ G
⊢ (fun n α => { f := n • α.f, h := ⋯ }) 0 x✝ = 0
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
x✝ : F ⟶ G
⊢ ((fun n α => { f := n • α.f, h := ⋯ }) 0 x✝).f = Algebra.Hom.f 0
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
x✝ : F ⟶ G
⊢ ((fun n α => { f := n • α.f, h := ⋯ }) 0 x✝).f = Algebra.Hom.f 0
state_after: no goals
tactic: apply zero_smul
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (n : ℕ) (x : F ⟶ G), (fun n α => { f := n • α.f, h := ⋯ }) (n + 1) x = (fun n α => { f := n • α.f, h := ⋯ }) n x + x
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
x✝ : F ⟶ G
⊢ (fun n α => { f := n • α.f, h := ⋯ }) (n✝ + 1) x✝ = (fun n α => { f := n • α.f, h := ⋯ }) n✝ x✝ + x✝
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
x✝ : F ⟶ G
⊢ (fun n α => { f := n • α.f, h := ⋯ }) (n✝ + 1) x✝ = (fun n α => { f := n • α.f, h := ⋯ }) n✝ x✝ + x✝
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
x✝ : F ⟶ G
⊢ ((fun n α => { f := n • α.f, h := ⋯ }) (n✝ + 1) x✝).f = ((fun n α => { f := n • α.f, h := ⋯ }) n✝ x✝ + x✝).f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
x✝ : F ⟶ G
⊢ ((fun n α => { f := n • α.f, h := ⋯ }) (n✝ + 1) x✝).f = ((fun n α => { f := n • α.f, h := ⋯ }) n✝ x✝ + x✝).f
state_after: no goals
tactic: apply succ_nsmul
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (a b : F ⟶ G), a - b = a + -b
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ : F ⟶ G
⊢ a✝ - b✝ = a✝ + -b✝
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ : F ⟶ G
⊢ a✝ - b✝ = a✝ + -b✝
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ : F ⟶ G
⊢ (a✝ - b✝).f = (a✝ + -b✝).f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ : F ⟶ G
⊢ (a✝ - b✝).f = (a✝ + -b✝).f
state_after: no goals
tactic: apply sub_eq_add_neg
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (a : F ⟶ G), (fun r α => { f := r • α.f, h := ⋯ }) 0 a = 0
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ (fun r α => { f := r • α.f, h := ⋯ }) 0 a✝ = 0
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ (fun r α => { f := r • α.f, h := ⋯ }) 0 a✝ = 0
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ ((fun r α => { f := r • α.f, h := ⋯ }) 0 a✝).f = Algebra.Hom.f 0
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ ((fun r α => { f := r • α.f, h := ⋯ }) 0 a✝).f = Algebra.Hom.f 0
state_after: no goals
tactic: apply zero_smul
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (n : ℕ) (a : F ⟶ G),
    (fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n.succ) a =
      (fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n) a + a
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ (fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n✝.succ) a✝ =
    (fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n✝) a✝ + a✝
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ (fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n✝.succ) a✝ =
    (fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n✝) a✝ + a✝
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ ((fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n✝.succ) a✝).f =
    ((fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n✝) a✝ + a✝).f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ ((fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n✝.succ) a✝).f =
    ((fun r α => { f := r • α.f, h := ⋯ }) (Int.ofNat n✝) a✝ + a✝).f
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ ↑(n✝ + 1) • a✝.f = ({ f := ↑n✝ • a✝.f, h := ⋯ } + a✝).f
tactic: dsimp
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ ↑(n✝ + 1) • a✝.f = ({ f := ↑n✝ • a✝.f, h := ⋯ } + a✝).f
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ n✝ • a✝.f + a✝.f = ({ f := n✝ • a✝.f, h := ⋯ } + a✝).f
tactic: simp only [natCast_zsmul, succ_nsmul]
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ n✝ • a✝.f + a✝.f = ({ f := n✝ • a✝.f, h := ⋯ } + a✝).f
state_after: no goals
tactic: rfl
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (n : ℕ) (a : F ⟶ G),
    (fun r α => { f := r • α.f, h := ⋯ }) (Int.negSucc n) a = -(fun r α => { f := r • α.f, h := ⋯ }) (↑n.succ) a
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ (fun r α => { f := r • α.f, h := ⋯ }) (Int.negSucc n✝) a✝ = -(fun r α => { f := r • α.f, h := ⋯ }) (↑n✝.succ) a✝
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ (fun r α => { f := r • α.f, h := ⋯ }) (Int.negSucc n✝) a✝ = -(fun r α => { f := r • α.f, h := ⋯ }) (↑n✝.succ) a✝
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ ((fun r α => { f := r • α.f, h := ⋯ }) (Int.negSucc n✝) a✝).f =
    (-(fun r α => { f := r • α.f, h := ⋯ }) (↑n✝.succ) a✝).f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
n✝ : ℕ
a✝ : F ⟶ G
⊢ ((fun r α => { f := r • α.f, h := ⋯ }) (Int.negSucc n✝) a✝).f =
    (-(fun r α => { f := r • α.f, h := ⋯ }) (↑n✝.succ) a✝).f
state_after: no goals
tactic: simp only [negSucc_zsmul, neg_inj, ← Nat.cast_smul_eq_nsmul ℤ]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (a : F ⟶ G), -a + a = 0
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ -a✝ + a✝ = 0
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ -a✝ + a✝ = 0
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ (-a✝ + a✝).f = Algebra.Hom.f 0
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ : F ⟶ G
⊢ (-a✝ + a✝).f = Algebra.Hom.f 0
state_after: no goals
tactic: apply add_left_neg
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
⊢ ∀ (a b : F ⟶ G), a + b = b + a
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ : F ⟶ G
⊢ a✝ + b✝ = b✝ + a✝
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ : F ⟶ G
⊢ a✝ + b✝ = b✝ + a✝
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ : F ⟶ G
⊢ (a✝ + b✝).f = (b✝ + a✝).f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
F G : T.Algebra
a✝ b✝ : F ⟶ G
⊢ (a✝ + b✝).f = (b✝ + a✝).f
state_after: no goals
tactic: apply add_comm
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
⊢ ∀ (P Q R : T.Algebra) (f f' : P ⟶ Q) (g : Q ⟶ R), (f + f') ≫ g = f ≫ g + f' ≫ g
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
P✝ Q✝ R✝ : T.Algebra
f✝ f'✝ : P✝ ⟶ Q✝
g✝ : Q✝ ⟶ R✝
⊢ (f✝ + f'✝) ≫ g✝ = f✝ ≫ g✝ + f'✝ ≫ g✝
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
P✝ Q✝ R✝ : T.Algebra
f✝ f'✝ : P✝ ⟶ Q✝
g✝ : Q✝ ⟶ R✝
⊢ (f✝ + f'✝) ≫ g✝ = f✝ ≫ g✝ + f'✝ ≫ g✝
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
P✝ Q✝ R✝ : T.Algebra
f✝ f'✝ : P✝ ⟶ Q✝
g✝ : Q✝ ⟶ R✝
⊢ ((f✝ + f'✝) ≫ g✝).f = (f✝ ≫ g✝ + f'✝ ≫ g✝).f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
P✝ Q✝ R✝ : T.Algebra
f✝ f'✝ : P✝ ⟶ Q✝
g✝ : Q✝ ⟶ R✝
⊢ ((f✝ + f'✝) ≫ g✝).f = (f✝ ≫ g✝ + f'✝ ≫ g✝).f
state_after: no goals
tactic: apply add_comp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
⊢ ∀ (P Q R : T.Algebra) (f : P ⟶ Q) (g g' : Q ⟶ R), f ≫ (g + g') = f ≫ g + f ≫ g'
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
P✝ Q✝ R✝ : T.Algebra
f✝ : P✝ ⟶ Q✝
g✝ g'✝ : Q✝ ⟶ R✝
⊢ f✝ ≫ (g✝ + g'✝) = f✝ ≫ g✝ + f✝ ≫ g'✝
tactic: intros
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
P✝ Q✝ R✝ : T.Algebra
f✝ : P✝ ⟶ Q✝
g✝ g'✝ : Q✝ ⟶ R✝
⊢ f✝ ≫ (g✝ + g'✝) = f✝ ≫ g✝ + f✝ ≫ g'✝
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
P✝ Q✝ R✝ : T.Algebra
f✝ : P✝ ⟶ Q✝
g✝ g'✝ : Q✝ ⟶ R✝
⊢ (f✝ ≫ (g✝ + g'✝)).f = (f✝ ≫ g✝ + f✝ ≫ g'✝).f
tactic: ext
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Preadditive C
T : Monad C
inst✝ : T.Additive
P✝ Q✝ R✝ : T.Algebra
f✝ : P✝ ⟶ Q✝
g✝ g'✝ : Q✝ ⟶ R✝
⊢ (f✝ ≫ (g✝ + g'✝)).f = (f✝ ≫ g✝ + f✝ ≫ g'✝).f
state_after: no goals
tactic: apply comp_add