module Cat.Morphism.Orthogonal where
Orthogonal mapsđ
A pair of maps and are called orthogonal, written 1, if for every fitting into a commutative diagram like
the space of liftings (dashed) which commute with everything is contractible. We will also speak of orthogonality of an object and a morphism, a morphism and a class of morphisms, and so on.
In the formalisation, we will write Orthogonal
to denote all of the
aforementioned orthogonality properties.
module _ {o â} (C : Precategory o â) where open Cat.Reasoning C open Terminal private variable a b c d x y : â C â f g h u v : Hom a b
If the ambient category has enough co/limits, being orthogonal to an object is equivalent to being orthogonal to a morphism. For example, iff. where is the unique map from into the terminal object.
object-orthogonal-!-orthogonal : â {X : Ob} (T : Terminal C) (f : Hom a b) â Orthogonal C f X â Orthogonal C f (! T {X})
The proof is mostly a calculation, so we present it without a lot of comment.
object-orthogonal-!-orthogonal {X = X} T f = prop-ext! fwd bwd where module T = Terminal T fwd : Orthogonal C f X â Orthogonal C f T.! fwd fâ„X u v sq .centre = fâ„X u .centre .fst , fâ„X u .centre .snd , T.!-uniqueâ _ _ fwd fâ„X u v sq .paths m = ÎŁ-prop-path! $ ap fst (fâ„X u .paths (m .fst , m .snd .fst)) bwd : Orthogonal C f (! T) â Orthogonal C f X bwd fâ„! u .centre = fâ„! u T.! (T.!-uniqueâ _ _) .centre .fst , fâ„! u T.! (T.!-uniqueâ _ _) .centre .snd .fst bwd fâ„! u .paths (w , eq) = ÎŁ-prop-path! $ ap fst (fâ„! _ _ _ .paths (w , eq , (T.!-uniqueâ _ _)))
As a passing observation we note that if and then Of course, this is immediate in categories, but it holds in the generality of precategories.
obj-orthogonal-iso : â {a b} {X Y} (f : Hom a b) â X â Y â Orthogonal C f X â Orthogonal C f Y
obj-orthogonal-iso f xâ y fâ„X a = contr ( g.to â contr' .centre .fst , pullr (contr' .centre .snd) â cancell g.invl ) λ x â ÎŁ-prop-path! $ apâ _â_ refl (ap fst (contr' .paths (g.from â x .fst , pullr (x .snd)))) â cancell g.invl where module g = _â _ xâ y contr' = fâ„X (g.from â a)
A slightly more interesting lemma is that, if is orthogonal to itself, then it is an isomorphism:
self-orthogonalâinvertible : â {a b} (f : Hom a b) â Orthogonal C f f â is-invertible f self-orthogonalâinvertible f fâ„f = let (f , p , q) = fâ„f id id (idl _ â intror refl) .centre in make-invertible f q p
If is an epi or is a mono, then the mere existence of any lift is enough to establish that
left-epic-liftâorthogonal : (g : Hom c d) â is-epic f â Lifts C f g â Orthogonal C f g left-epic-liftâorthogonal g f-epi lifts u v vf=gu = is-propâ„â„âis-contr (left-epicâlift-is-prop C f-epi vf=gu) (lifts u v vf=gu) right-monic-liftâorthogonal : (f : Hom a b) â is-monic g â Lifts C f g â Orthogonal C f g right-monic-liftâorthogonal f g-mono lifts u v vf=gu = is-propâ„â„âis-contr (right-monicâlift-is-prop C g-mono vf=gu) (lifts u v vf=gu)
left-epic-liftâorthogonal-class : â {Îș} (R : Arrows C Îș) â is-epic f â Lifts C f R â Orthogonal C f R left-epic-liftâorthogonal-class R f-epic lifts r râR = left-epic-liftâorthogonal r f-epic (lifts r râR) right-monic-liftâorthogonal-class : â {Îș} (L : Arrows C Îș) â is-monic f â Lifts C L f â Orthogonal C L f right-monic-liftâorthogonal-class L f-epic lifts l lâL = right-monic-liftâorthogonal l f-epic (lifts l lâL)
As a corollary, we get that isomorphisms are left and right orthogonal to every other morphism.
invertibleâleft-orthogonal : (g : Hom c d) â Orthogonal C Isos g invertibleâleft-orthogonal g f f-inv = left-epic-liftâorthogonal g (invertibleâepic f-inv) $ invertible-left-lifts C f f-inv invertibleâright-orthogonal : (f : Hom a b) â Orthogonal C f Isos invertibleâright-orthogonal f g g-inv = right-monic-liftâorthogonal f (invertibleâmonic g-inv) $ invertible-right-lifts C g g-inv
Phrased another way, the class of isomorphisms is left and right orthogonal to every other class.
isos-left-orthogonal : â {Îș} (R : Arrows C Îș) â Orthogonal C Isos R isos-left-orthogonal R f f-inv r râR = invertibleâleft-orthogonal r f f-inv isos-right-orthogonal : â {Îș} (L : Arrows C Îș) â Orthogonal C L Isos isos-right-orthogonal L l lâL f f-inv = invertibleâright-orthogonal l f f-inv
invertibleâleft-orthogonal-class : â {Îș} (R : Arrows C Îș) â is-invertible f â Orthogonal C f R invertibleâleft-orthogonal-class R f-inv r _ = invertibleâleft-orthogonal r _ f-inv invertibleâright-orthogonal-class : â {Îș} (L : Arrows C Îș) â is-invertible f â Orthogonal C L f invertibleâright-orthogonal-class L f-inv l _ = invertibleâright-orthogonal l _ f-inv
orthogonalâlifts-against : Orthogonal C f g â Lifts C f g orthogonalâlifts-against o u v p = pure (o u v p .centre) orthogonalâlifts-left-class : â {Îș} (L : Arrows C Îș) â Orthogonal C L f â Lifts C L f orthogonalâlifts-left-class L Lâ„f l lâL = orthogonalâlifts-against (Lâ„f l lâL) orthogonalâlifts-right-class : â {Îș} (R : Arrows C Îș) â Orthogonal C f R â Lifts C f R orthogonalâlifts-right-class R fâ„R r râR = orthogonalâlifts-against (fâ„R r râR)
Regarding reflectionsđ
module _ {o â o' â'} {C : Precategory o â} {D : Precategory o' â'} {r : Functor C D} {Îč : Functor D C} (râŁÎč : r ⣠Îč) (Îč-ff : is-fully-faithful Îč) where private module C = Cat.Reasoning C module D = Cat.Reasoning D module Îč = Cat.Functor.Reasoning Îč module r = Cat.Functor.Reasoning r module rÎč = Cat.Functor.Reasoning (r Fâ Îč) module Îčr = Cat.Functor.Reasoning (Îč Fâ r) open _âŁ_ râŁÎč
Let be an arbitrary reflective subcategory. Speaking abstractly, there is a âuniversalâ choice of test for whether an object is âinâ the subcategory: Whether the adjunction unit: is an isomorphism. The theory of orthogonality gives a second way to detect this situation. The proof here is from (Borceux 1994, vol. 1, sec. 5.4).
The first thing we observe is that any map such that is an isomorphism is orthogonal to every object in the subcategory: Let be inverted by and be the object. Given a map
in-subcategoryâorthogonal-to-inverted : â {X} {a b} {f : C.Hom a b} â D.is-invertible (r.â f) â Orthogonal C f (Îč.â X) in-subcategoryâorthogonal-to-inverted {X} {A} {B} {f} rf-inv aâx = contr (fact , factors) λ { (g , factors') â ÎŁ-prop-path! (hâĄk factors factors') } where module rf = D.is-invertible rf-inv module ηâ»Âč {a} = C.is-invertible (is-reflectiveâunit-right-is-iso râŁÎč Îč-ff {a})
Observe that, since is a reflective subcategory, every unit morphism is an isomorphism; We define a morphism as the composite
b : C.Hom (Îč.â (r.â A)) (Îč.â X) b = ηâ»Âč.inv C.â Îč.â (r.â aâx)
satisfying (by naturality of the unit map) the property that This is an intermediate step in what we have to do: construct a map
p : aâx ⥠b C.â unit.η _ p = sym (C.pullr (sym (unit.is-natural _ _ _)) â C.cancell zag)
We define that using the map we just constructed. Itâs the composite
and a calculation shows us that this map is indeed a factorisation of through
fact : C.Hom B (Îč.â X) fact = b C.â Îč.â rf.inv C.â unit.η _ factors = (b C.â Îč.â rf.inv C.â unit.η B) C.â f âĄâš C.pullr (C.pullr (unit.is-natural _ _ _)) â©âĄ b C.â Îč.â rf.inv C.â (Îčr.â f) C.â unit.η A âĄâš C.reflâ©ââš C.cancell (Îč.annihilate rf.invr) â©âĄ b C.â unit.η A âĄËâš p â©âĄË aâx â
The proof that this factorisation is unique is surprisingly totally independent of the actual map we just constructed: If note that we must have (since is invertible, it is epic); But then we have
and since is an isomorphism, thus monic, we have
module _ {h k : C.Hom B (Îč.â X)} (p : h C.â f ⥠aâx) (q : k C.â f ⥠aâx) where rhâĄrk : r.â h ⥠r.â k rhâĄrk = D.invertibleâepic rf-inv (r.â h) (r.â k) (r.weave (p â sym q)) hâĄk = C.invertibleâmonic (is-reflectiveâunit-right-is-iso râŁÎč Îč-ff) _ _ $ unit.η (Îč.â X) C.â h âĄâš unit.is-natural _ _ _ â©âĄ Îčr.â h C.â unit.η B âĄâš ap Îč.â rhâĄrk C.â©ââšrefl â©âĄ Îčr.â k C.â unit.η B âĄËâš unit.is-natural _ _ _ â©âĄË unit.η (Îč.â X) C.â k â
As a partial converse, if an object is orthogonal to every unit map (it suffices to be orthogonal to its own unit map), then it lies in the subcategory:
orthogonal-to-ηsâin-subcategory : â {X} â (â B â Orthogonal C (unit.η B) X) â C.is-invertible (unit.η X) orthogonal-to-ηsâin-subcategory {X} ortho = C.make-invertible x lemma (ortho X C.id .centre .snd) where x = ortho X C.id .centre .fst lemma = unit.η _ C.â x âĄâš unit.is-natural _ _ _ â©âĄ Îčr.â x C.â unit.η (Îčr.â X) âĄâš C.reflâ©â⚠η-comonad-commute râŁÎč Îč-ff â©âĄ Îčr.â x C.â Îčr.â (unit.η X) âĄâš Îčr.annihilate (ortho X C.id .centre .snd) â©âĄ C.id â
And the converse to that is a specialisation of the first thing we proved: We established that if is invertible by the reflection functor, and we know that is invertible by the reflection functor; It remains to replace with any object for which is an isomorphism.
in-subcategoryâorthogonal-to-ηs : â {X B} â C.is-invertible (unit.η X) â Orthogonal C (unit.η B) X in-subcategoryâorthogonal-to-ηs inv = obj-orthogonal-iso C (unit.η _) (C.invertibleâiso _ (C.is-invertible-inverse inv)) $ in-subcategoryâorthogonal-to-inverted (is-reflectiveâleft-unit-is-iso râŁÎč Îč-ff)
Though hang tight for a note on formalised notationâ©ïž
References
- Borceux, Francis. 1994. Handbook of Categorical Algebra. Vol. 1. Encyclopedia of Mathematics and Its Applications. Cambridge University Press. https://doi.org/10.1017/CBO9780511525858.