{-# OPTIONS --safe #-}
open import Cubical.Foundations.HLevels
open import Cubical.Foundations.Powerset
open import Cubical.Foundations.Prelude
open import Cubical.Data.Sigma
open import Cubical.Categories.Category
open import Cubical.Categories.Functor
open import Cubical.Categories.Morphism
open Category
module Cubical.Categories.Constructions.SubObject
{ℓ ℓ' : Level}
(C : Category ℓ ℓ')
(c : C .ob)
where
open import Cubical.Categories.Constructions.Slice C c
isSubObj : ℙ (SliceCat .ob)
isSubObj (sliceob arr) = isMonic C arr , isPropIsMonic C arr
SubObjCat : Category (ℓ-max ℓ ℓ') ℓ'
SubObjCat = ΣPropCat SliceCat isSubObj
SubObjCat→SliceCat : Functor SubObjCat SliceCat
SubObjCat→SliceCat = forgetΣPropCat SliceCat isSubObj
subObjMorIsMonic : {s t : SubObjCat .ob} (f : SubObjCat [ s , t ])
→ isMonic C (S-hom f)
subObjMorIsMonic {s = s} {t = t} f = postcompCreatesMonic C
(S-hom f) (S-arr (t .fst)) comp-is-monic
where comp-is-monic = subst (isMonic C) (sym (S-comm f)) (s .snd)