open import Cat.Diagram.Equaliser.Kernel
open import Cat.Instances.Shape.Terminal
open import Cat.Functor.FullSubcategory
open import Cat.Diagram.Initial
open import Cat.Instances.Comma
open import Cat.Instances.Slice
open import Cat.Abelian.Base
open import Cat.Prelude

open /-Obj
open /-Hom
open ↓Obj
open ↓Hom

module wip.image {o } {C : Precategory o } (A : is-abelian C) where
  open is-abelian A

  -- images : ∀ {A B} (f : Hom A B) → Image f
  -- images f = im where
    -- obj : ↓Obj (const! (cut f)) Forget-full-subcat
    -- obj .x = tt  images : ∀ {A B} (f : Hom A B) → Image f
  -- images f = im where
    -- obj .y .object = cut (Ker.kernel (Coker.coeq f))
    -- obj .y .witness {c} = kernels-are-subobjects C ∅ _ (Ker.has-is-kernel _)
    -- -- obj .map ./-Hom.map = decompose f .fst ∘ Coker.coeq _
    -- -- obj .map ./-Hom.commutes = pulll (Ker.universal _) ∙ Coker.universal _