Theorem: CategoryTheory.Comonad.coalgebraPreadditive_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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
α β : F ⟶ G
⊢ F.a ≫ U.map (α.f + β.f) = (α.f + β.f) ≫ G.a
state_after: no goals
tactic: simp only [Functor.map_add, comp_add, Comonad.Coalgebra.Hom.h, add_comp]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
T : Monad C
inst✝¹ : T.Additive
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ F.a ≫ U.map 0 = 0 ≫ G.a
state_after: no goals
tactic: simp only [Functor.map_zero, comp_zero, zero_comp]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
T : Monad C
inst✝¹ : T.Additive
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
n : ℕ
α : F ⟶ G
⊢ F.a ≫ U.map (n • α.f) = (n • α.f) ≫ G.a
state_after: no goals
tactic: rw [Functor.map_nsmul, comp_nsmul, Comonad.Coalgebra.Hom.h, nsmul_comp]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
T : Monad C
inst✝¹ : T.Additive
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
α : F ⟶ G
⊢ F.a ≫ U.map (-α.f) = (-α.f) ≫ G.a
state_after: no goals
tactic: simp only [Functor.map_neg, comp_neg, Comonad.Coalgebra.Hom.h, neg_comp]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
T : Monad C
inst✝¹ : T.Additive
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
α β : F ⟶ G
⊢ F.a ≫ U.map (α.f - β.f) = (α.f - β.f) ≫ G.a
state_after: no goals
tactic: simp only [Functor.map_sub, comp_sub, Comonad.Coalgebra.Hom.h, sub_comp]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
T : Monad C
inst✝¹ : T.Additive
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
r : ℤ
α : F ⟶ G
⊢ F.a ≫ U.map (r • α.f) = (r • α.f) ≫ G.a
state_after: no goals
tactic: rw [Functor.map_zsmul, comp_zsmul, Comonad.Coalgebra.Hom.h, zsmul_comp]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
T : Monad C
inst✝¹ : T.Additive
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
x✝ : F ⟶ G
⊢ ((fun n α => { f := n • α.f, h := ⋯ }) 0 x✝).f = Coalgebra.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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
x✝ : F ⟶ G
⊢ ((fun n α => { f := n • α.f, h := ⋯ }) 0 x✝).f = Coalgebra.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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
a✝ : F ⟶ G
⊢ ((fun r α => { f := r • α.f, h := ⋯ }) 0 a✝).f = Coalgebra.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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
a✝ : F ⟶ G
⊢ ((fun r α => { f := r • α.f, h := ⋯ }) 0 a✝).f = Coalgebra.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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
a✝ : F ⟶ G
⊢ (-a✝ + a✝).f = Coalgebra.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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
a✝ : F ⟶ G
⊢ (-a✝ + a✝).f = Coalgebra.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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
⊢ ∀ (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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
F G : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
⊢ ∀ (P Q R : U.Coalgebra) (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
U : Comonad C
inst✝ : U.Additive
P✝ Q✝ R✝ : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
P✝ Q✝ R✝ : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
P✝ Q✝ R✝ : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
P✝ Q✝ R✝ : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
⊢ ∀ (P Q R : U.Coalgebra) (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
U : Comonad C
inst✝ : U.Additive
P✝ Q✝ R✝ : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
P✝ Q✝ R✝ : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
P✝ Q✝ R✝ : U.Coalgebra
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
U : Comonad C
inst✝ : U.Additive
P✝ Q✝ R✝ : U.Coalgebra
f✝ : P✝ ⟶ Q✝
g✝ g'✝ : Q✝ ⟶ R✝
⊢ (f✝ ≫ (g✝ + g'✝)).f = (f✝ ≫ g✝ + f✝ ≫ g'✝).f
state_after: no goals
tactic: apply comp_add