module Cat.Functor.Amnestic where
Amnestic functors🔗
The notion of amnestic functor was introduced by Adámek, Herrlich and Strecker in their book “The Joy of Cats”1 as a way to make precise the vibes-based notion of forgetful functor. Classically, the definition reads
A functor is amnestic if an isomorphism is an identity whenever is,
but what does it mean for an isomorphism to be an identity? The obvious translation would be that comes from an identification of objects, but this is just rephrasing the condition that is univalent, whereas we want a condition on the functor So, we define:
An isomorphism
is an identity if it is an identity in the total space
of Hom
, i.e. if there is an object
s.t.
in the type
Every isomorphism in a univalent category is
an identity, since we can take
and the identification in Arrows
follows from
univalence.
Let
be an identity, i.e. it is such that
Any functor
induces an identification
meaning that it preserves being an identity. A functor is
amnestic if it additionally reflects being an
identity: the natural map we have implicitly defined above (called action
) is an equivalence.
action : ∀ {a b : C.Ob} (f : C.Hom a b) → Σ[ c ∈ C ] (Hom→Arrow C (C.id {x = c}) ≡ Hom→Arrow C f) → Σ[ c ∈ D ] (Hom→Arrow D (D.id {x = c}) ≡ Hom→Arrow D (F.₁ f)) action f (c , p) = F.₀ c , q where q : Hom→Arrow D D.id ≡ Hom→Arrow D (F.₁ f) q i .fst = F.₀ (p i .fst) q i .snd .fst = F.₀ (p i .snd .fst) q i .snd .snd = hcomp (∂ i) λ where j (j = i0) → F.₁ (p i .snd .snd) j (i = i1) → F.₁ f j (i = i0) → F.F-id j is-amnestic : Type _ is-amnestic = ∀ {a b : C.Ob} (f : C.Hom a b) → C.is-invertible f → is-equiv (action f)
Who cares?🔗
The amnestic functors are interesting to consider in HoTT because they are exactly those that reflect univalence: If is an amnestic functor and is a univalent category, then is univalent, too!
reflect-category : is-category D → is-amnestic → is-category C reflect-category d-cat forget = record { to-path = A≡B ; to-path-over = q } where module _ {A} {B} isom where isom' = F-map-iso F isom
For suppose that is an isomorphism. preserves this isomorphism, meaning we have an iso now in But because is a univalent category, is an identity, and by amnesia, so is
p : Σ[ c ∈ C ] Path (Arrows C) (c , c , C.id) (A , B , isom .C.to) p = equiv→inverse (forget (isom .C.to) (C.iso→invertible isom)) $ F.₀ A , Arrows-path D refl (d-cat .to-path isom') (Univalent.Hom-pathp-reflr-iso d-cat (D.idr _))
Unfolding, we have an object and an identification We may construct an identification from the components of and this induces an identification over in a straightforward way. We’re done!
A≡B = sym (ap fst (p .snd)) ∙ ap (fst ⊙ snd) (p .snd) q : PathP (λ i → A C.≅ A≡B i) C.id-iso isom q = C.≅-pathp refl A≡B $ Hom-pathp-reflr C $ C.idr _ ·· path→to-∙ C _ _ ·· ap₂ C._∘_ refl (sym (path→to-sym C (ap fst (p .snd)))) ∙ Hom-pathp-id C (ap (snd ⊙ snd) (p .snd))
Cats are, indeed, very joyful↩︎