Tom de Jong and MartΓn EscardΓ³, 18 January 2024.
The carrier of a pointed dcpo is an algebraically injective type.
More precisely, if π is a poset with a least element and suprema for directed
families indexed by types in a universe π₯, then the carrier of π is
algebraically injective with respect to embeddings of types in π₯.
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import MLTT.Spartan
open import UF.FunExt
open import UF.PropTrunc
module InjectiveTypes.PointedDcpos
(fe : FunExt)
(pt : propositional-truncations-exist)
(π₯ : Universe)
where
private
fe' : Fun-Ext
fe' {π€} {π₯} = fe π€ π₯
open import DomainTheory.Basics.Pointed pt fe' π₯
open import InjectiveTypes.Blackboard fe
pointed-dcpos-are-aflabby-types : (π : DCPOβ₯ {π€} {π£}) β aflabby βͺ π β« π₯
pointed-dcpos-are-aflabby-types π P P-is-prop f = I , II
where
I : βͺ π β«
I = βΛ’Λ’ π f P-is-prop
II : (p : P) β I οΌ f p
II p = βΛ’Λ’-οΌ-if-domain-holds π P-is-prop p
pointed-dcpos-are-ainjective-types :
(π : DCPOβ₯ {π€} {π£}) β ainjective-type βͺ π β« π₯ π₯
pointed-dcpos-are-ainjective-types π =
aflabby-types-are-ainjective βͺ π β« (pointed-dcpos-are-aflabby-types π)
\end{code}