{-# OPTIONS --without-K --safe #-}
open import Categories.Category.Core using (Category)
open import Categories.Category using (module Definitions)
open import Categories.Morphism.Lifts using (MorphismClass)
module Categories.Morphism.FactorizationSystem.Core
{o β eq} (π : Category o β eq)
{ββ° ββ³} (β° : MorphismClass π ββ°) (β³ : MorphismClass π ββ³) where
open import Level
open import Categories.Morphism.Lifts π using (MorphismClassMember; β-closed; UniqueDiagonal; Diagonal)
open import Categories.Morphism {o} {β} {eq} π using (IsIso)
open Category π
open Definitions π using (CommutativeSquare)
open MorphismClassMember using (mor)
private
variable
A B C D : Obj
_β _ : Obj β Obj β Set (β β ββ°)
_β _ = MorphismClassMember β°
_β£_ : Obj β Obj β Set (β β ββ³)
_β£_ = MorphismClassMember β³
record Factorization (h : A β B) : Set (o β β β eq β ββ° β ββ³) where
field
Im : Obj
e : A β Im
m : Im β£ B
mβeβh : mor m β mor e β h
record FactorizationSystem : Set (o β β β eq β ββ° β ββ³) where
field
β°-resp-β : β-closed β°
β³-resp-β : β-closed β³
factor : β (f : A β B) β Factorization f
Isoββ° : β {h : B β C} β IsIso h β (e : A β B) β β° (h β mor e)
β³βIso : β (m : B β£ C) β {h : A β B} β IsIso h β β³ (mor m β h)
diagonal-filler : {f : A β C} {g : B β D} (e : A β B) (m : C β£ D)
(comm : CommutativeSquare (mor e) f g (mor m))
β UniqueDiagonal (mor e) f g (mor m)
diag-uniqueβ : {f : A β C} {g : B β D} (e : A β B) (m : C β£ D)
β (dβ dβ : Diagonal (mor e) f g (mor m))
β Diagonal.d dβ β Diagonal.d dβ
diag-uniqueβ {f = f} {g = g} e m dβ dβ =
UniqueDiagonal.uniqueβ (diagonal-filler e m (Diagonal.comm dβ)) dβ dβ