module
Cat.Functor.Reasoning.FullyFaithful
{o β o' β'} {C : Precategory o β} {D : Precategory o' β'}
(F : Functor C D) (ff : is-fully-faithful F)
whereReasoning for ff functorsπ
This module contains a few short combinators for reasoning about the actions of fully faithful functors on morphisms and isomorphisms.
open Fr F public
private
module C = Cat.Reasoning C
module D = Cat.Reasoning D
private variable
a b c d : C.Ob
Ξ± Ξ² Ξ³ Ξ΄ : D.Ob
f g g' h i : C.Hom a b
w x x' y z : D.Hom Ξ± Ξ²
module _ {a} {b} where
open Equiv (Fβ {a} {b} , ff) public
invertible-equiv
: β {a b} {f : C.Hom a b}
β C.is-invertible f β D.is-invertible (Fβ f)
invertible-equiv {f = f} =
prop-ext! F-map-invertible (is-ffβis-conservative F ff f)
iso-equiv : β {a b} β (a C.β
b) β (Fβ a D.β
Fβ b)
iso-equiv {a} {b} = (F-map-iso {x = a} {b} , is-ffβF-map-iso-is-equiv {F = F} ff)
module invertible {a} {b} {f : C.Hom a b} =
Equiv (invertible-equiv {f = f})
module iso {a} {b} =
Equiv (F-map-iso {x = a} {b} , is-ffβF-map-iso-is-equiv {F = F} ff)fromn't : w β‘ Fβ f β from w β‘ f
fromn't p = ap from p β Ξ· _
from-id : (w β‘ D.id) β (from w β‘ C.id)
from-id = ap-equiv ((Fβ , ff) eβ»ΒΉ) βe β-post-equiv (injectiveβ (Ξ΅ D.id) F-id)
to-id : (f β‘ C.id) β (Fβ f β‘ D.id)
to-id = ap-equiv (Fβ , ff) βe id-equivr
module from-id {Ξ±} {w : D.Hom (Fβ Ξ±) (Fβ Ξ±)} = Equiv (from-id {w = w})
module to-id {a} {f : C.Hom a a} = Equiv (to-id {f = f})
from-β : from (w D.β x) β‘ from w C.β from x
from-β = injective (Ξ΅ _ β sym (F-β _ _ β apβ D._β_ (Ξ΅ _) (Ξ΅ _)))
ipushr : x D.β Fβ g β‘ x' β from (w D.β x) C.β g β‘ from (w D.β x')
ipushr p = injective (F-β _ _ ββ apβ D._β_ (Ξ΅ _) refl ββ D.pullr p β sym (Ξ΅ _))
Ξ΅-lswizzle : w D.β x β‘ D.id β w D.β Fβ (from (x D.β y)) β‘ y
Ξ΅-lswizzle = D.lswizzle (Ξ΅ _)
Ξ΅-expand : w D.β x β‘ y β Fβ (from w C.β from x) β‘ y
Ξ΅-expand p = F-β _ _ ββ apβ D._β_ (Ξ΅ _) (Ξ΅ _) ββ p
Ξ΅-twist : Fβ f D.β x β‘ y D.β Fβ g β f C.β from x β‘ from y C.β g
Ξ΅-twist {f = f} {g = g} p = injective $ swap $
ap (Fβ f D.β_) (Ξ΅ _) ββ p ββ ap (D._β Fβ g) (sym (Ξ΅ _))
invβl : x D.β Fβ f β‘ y β from x C.β f β‘ from y
invβl x = sym (Ξ΅-twist (D.eliml F-id β sym x)) β C.idl _
whackl : x D.β Fβ f β‘ Fβ g β from x C.β f β‘ g
whackl p = sym (Ξ΅-twist (D.idr _ β sym p)) β C.elimr (from-id.to refl)
whackr : Fβ f D.β x β‘ Fβ g β f C.β from x β‘ g
whackr p = Ξ΅-twist (p β sym (D.idl _)) β C.eliml (from-id.to refl)
pouncer : Fβ f D.β x β‘ z β f C.β from x β‘ from z
pouncer p = Ξ΅-twist (p β intror refl) β C.idr _
Ξ·-expand : f C.β g β‘ h β from (Fβ f D.β Fβ g) β‘ h
Ξ·-expand p = from-β ββ apβ C._β_ (Ξ· _) (Ξ· _) ββ p
Ξ·-twist : from x C.β f β‘ g C.β from y β x D.β Fβ f β‘ Fβ g D.β y
Ξ·-twist {x = x} {f = f} {g = g} {y = y} p =
x D.β Fβ f β‘Λβ¨ Ξ΅-expand refl β©
Fβ (from x C.β from (Fβ f)) β‘β¨ β¨ C.reflβ©ββ¨ Ξ· _ β© β©
Fβ (from x C.β f) β‘β¨ β¨ p β© β©
Fβ (g C.β from y) β‘Λβ¨ β¨ Ξ· _ C.β©ββ¨refl β© β©
Fβ (from (Fβ g) C.β from y) β‘β¨ Ξ΅-expand refl β©
Fβ g D.β y β
unwhackr : f C.β from w β‘ g β Fβ f D.β w β‘ Fβ g
unwhackr {f = f} {w = w} p = sym (Ξ·-twist $ C.idr _ ββ Ξ· _ ββ sym p) β elimr reflLifting Shapesπ
module _ {f : C.Hom b c} {g : C.Hom a b} {h : C.Hom a c} where
triangle-equivl : (Fβ f D.β Fβ g β‘ Fβ h) β (f C.β g β‘ h)
triangle-equivl =
Fβ f D.β Fβ g β‘ Fβ h
βΛβ¨ β-pre-equiv (sym (F-β f g)) β©
Fβ (f C.β g) β‘ Fβ h
βΛβ¨ ap-equiv (Fβ , ff) β©
f C.β g β‘ h ββ
module triangle-equivl = Equiv triangle-equivl