module Algebra.Quasigroup.Instances.Initial whereThe initial quasigroupπ
The empty type trivially forms a quasigroup.
private variable
β : Level
open Total-homEmpty-quasigroup : β {β} β Quasigroup β
Empty-quasigroup = to-quasigroup β₯-quasigroup where
open make-quasigroup
β₯-quasigroup : make-quasigroup (Lift _ β₯)
β₯-quasigroup .quasigroup-is-set = hlevel 2
β₯-quasigroup ._β_ ()
β₯-quasigroup ._β§΅_ ()
β₯-quasigroup ._/_ ()
β₯-quasigroup ./-invl ()
β₯-quasigroup ./-invr ()
β₯-quasigroup .β§΅-invr ()
β₯-quasigroup .β§΅-invl ()Moreover, the empty quasigroup is an initial object in the category of quasigroups, as there is a unique function out of the empty type.
Empty-quasigroup-is-initial : is-initial (Quasigroups β) Empty-quasigroup
Empty-quasigroup-is-initial A .centre .hom ()
Empty-quasigroup-is-initial A .centre .preserves .is-quasigroup-hom.pres-β ()
Empty-quasigroup-is-initial A .paths f = ext Ξ» ()
Initial-quasigroup : Initial (Quasigroups β)
Initial-quasigroup .Initial.bot = Empty-quasigroup
Initial-quasigroup .Initial.hasβ₯ = Empty-quasigroup-is-initialIn fact, the empty quasigroup is a strict initial object.
Initial-quasigroup-is-strict
: is-strict-initial (Quasigroups β) Initial-quasigroup
Initial-quasigroup-is-strict =
make-is-strict-initial (Quasigroups _) Initial-quasigroup $ Ξ» A f β ext Ξ» a β
absurd (Lift.lower (f # a))Strict-initial-quasigroup : Strict-initial (Quasigroups β)
Strict-initial-quasigroup .Strict-initial.initial =
Initial-quasigroup
Strict-initial-quasigroup .Strict-initial.has-is-strict =
Initial-quasigroup-is-strict