module Algebra.Quasigroup.Instances.Initial where
The initial quasigroupπ
The empty type trivially forms a quasigroup.
Empty-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-initial
In 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))