{-

Mapping cones or the homotopy cofiber/cokernel

-}
{-# OPTIONS --safe #-}

module Cubical.HITs.MappingCones.Base where

open import Cubical.Foundations.Prelude

private
  variable
     ℓ' ℓ'' : Level

data Cone {X : Type } {Y : Type ℓ'} (f : X  Y) : Type (ℓ-max  ℓ') where
  inj   : Y  Cone f
  hub   : Cone f
  spoke : (x : X)  hub  inj (f x)

-- the attachment of multiple mapping cones

data Cones {X : Type } {Y : Type ℓ'} (A : Type ℓ'') (f : A  X  Y) : Type (ℓ-max (ℓ-max  ℓ') ℓ'') where
  inj   : Y  Cones A f
  hub   : A  Cones A f
  spoke : (a : A) (x : X)  hub a  inj (f a x)