Tom de Jong 22nd May 2019
Various lemmas for working with partial elements of a type.
Includes an alternative partial order on the lifting of a type without relying
on full univalence.
Moreover, there are some lemmas on the Kleisli extension for the lifting monad.
In particular, (Ξ· β f) β― is pointwise equal to πΜ f.
Added 22 June 2024.
Excluded middle holds if and only if the lifting discretely adds a single point,
viz. π X β π + X.
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import MLTT.Spartan
open import UF.FunExt
open import UF.Subsingletons
module Lifting.Miscelanea-PropExt-FunExt
(π£ : Universe)
(pe : propext π£)
(fe : Fun-Ext)
where
open import Lifting.Construction π£
open import Lifting.IdentityViaSIP π£
open import Lifting.Miscelanea π£
open import Lifting.Monad π£
open import NotionsOfDecidability.DecidableClassifier
open import UF.Base
open import UF.ClassicalLogic
open import UF.Equiv
open import UF.EquivalenceExamples
open import UF.Retracts
open import UF.Sets
open import UF.Sets-Properties
open import UF.Subsingletons-FunExt
open import UF.Subsingletons-Properties
open import UF.SubtypeClassifier hiding (β₯)
\end{code}
Assuming propositional extensionality for π£ and function extensionality, we can
prove that the lifting of a set is again a set.
\begin{code}
module _ {π€ : Universe}
{X : π€ Μ }
where
open import Lifting.UnivalentWildCategory π£ X
lifting-of-set-is-set : is-set X β is-set (π X)
lifting-of-set-is-set i {l} {m} p q = retract-of-prop r j p q
where
r : Ξ£ has-section
r = (to-Ξ£-οΌ , from-Ξ£-οΌ , tofrom-Ξ£-οΌ)
j : is-prop (Ξ£ (Ξ» pβ β transport (Ξ» P β (P β X) Γ is-prop P)
pβ (prβ l) οΌ prβ m))
j = Ξ£-is-prop
(identifications-with-props-are-props pe fe (is-defined m)
(being-defined-is-prop m) (is-defined l))
(Ξ» d β Γ-is-set (Ξ -is-set fe Ξ» _ β i)
(props-are-sets (being-prop-is-prop fe)))
\end{code}
We prefer to work with β' as it yields identifications, which can be transported
and allow for equational reasoning with οΌβ¨ β©.
Moreover, it has the right universe level for use in the Scott model of PCF.
This duplicates some material from LiftingUnivalentPrecategory. However, we only
assume propositional extensionality and function extensionality here. We do not
rely on full univalence.
\begin{code}
_β'_ : (l m : π X) β π€ β π£ βΊ Μ
l β' m = is-defined l β l οΌ m
β-to-β' : {l m : π X} β l β m β l β' m
β-to-β' {l} {m} a d = β-anti pe fe fe (a , b) where
b : m β l
b = c , v where
c : is-defined m β is-defined l
c = Ξ» _ β d
v : (e : is-defined m) β value m e οΌ value l d
v e = value m e οΌβ¨ ap (value m)
(being-defined-is-prop m e (prβ a d)) β©
value m (prβ a d) οΌβ¨ g β»ΒΉ β©
value l d β where
h : is-defined l β is-defined m
h = prβ a
g : value l d οΌ value m (prβ a d)
g = prβ a d
β'-to-β : {l m : π X} β l β' m β l β m
β'-to-β {l} {m} a = β e ββ»ΒΉ g where
e : (l β m) β (is-defined l β l β m)
e = β-open fe fe l m
g : is-defined l β l β m
g d = transport (_β_ l) (a d) (π-id l)
β'-is-reflexive : {l : π X} β l β' l
β'-is-reflexive {l} d = refl
β'-is-transitive : {l m n : π X} β l β' m β m β' n β l β' n
β'-is-transitive {l} {m} {n} a b d = l οΌβ¨ a d β©
m οΌβ¨ b (οΌ-to-is-defined (a d) d) β©
n β
β'-is-antisymmetric : {l m : π X} β l β' m β m β' l β l οΌ m
β'-is-antisymmetric a b = β-anti pe fe fe (β'-to-β a , β'-to-β b)
β'-prop-valued : is-set X β {l m : π X} β is-prop (l β' m)
β'-prop-valued s {l} {m} =
Ξ -is-prop fe Ξ» (d : is-defined l) β lifting-of-set-is-set s
not-defined-β₯-οΌ : {l : π X} β Β¬ (is-defined l) β l οΌ β₯
not-defined-β₯-οΌ {l} nd =
β-anti pe fe fe
(((Ξ» d β π-elim (nd d)) , (Ξ» d β π-elim (nd d))) ,
π-elim , π-induction)
is-defined-Ξ·-οΌ : {l : π X} (d : is-defined l) β l οΌ Ξ· (value l d)
is-defined-Ξ·-οΌ {l} d =
β-to-β' ((Ξ» _ β β) , Ξ» (e : is-defined l) β value-is-constant l e d) d
οΌ-to-β : {l m : π X} β l οΌ m β l β m
οΌ-to-β {l} {m} refl = β-refl (is-defined l) , refl
β-to-οΌ : {l m : π X} β l β m β l οΌ m
β-to-οΌ {l} {m} (deq , veq) = β-anti pe fe fe (a , b)
where
a : l β m
a = β deq β , happly veq
b : m β l
b = (β deq ββ»ΒΉ , h)
where
h : (d : is-defined m) β value m d οΌ value l (β deq ββ»ΒΉ d)
h d = value m d οΌβ¨ value-is-constant m d d' β©
value m d' οΌβ¨ (happly veq e)β»ΒΉ β©
value l e β
where
e : is-defined l
e = β deq ββ»ΒΉ d
d' : is-defined m
d' = β deq β e
module _ {π€ : Universe}
{X : π€ Μ }
{π₯ : Universe}
{Y : π₯ Μ }
where
β―-is-defined : (f : X β π Y) (l : π X) β is-defined ((f β―) l) β is-defined l
β―-is-defined f l = prβ
β―-on-total-element : (f : X β π Y) {l : π X} (d : is-defined l)
β (f β―) l οΌ f (value l d)
β―-on-total-element f {l} d =
(f β―) l οΌβ¨ ap (f β―) (is-defined-Ξ·-οΌ d) β©
(f β―) (Ξ· (value l d)) οΌβ¨ β-to-οΌ (Kleisli-Lawβ f (value l d)) β©
f (value l d) β
open import Lifting.UnivalentWildCategory π£ Y
πΜ-β―-βΌ : (f : X β Y) β (Ξ· β f) β― βΌ πΜ f
πΜ-β―-βΌ f l = β-anti pe fe fe (a , b)
where
a : ((Ξ· β f) β―) l β (πΜ f) l
a = p , q
where
p : is-defined (((Ξ· β f) β―) l) β is-defined (πΜ f l)
p = β―-is-defined (Ξ· β f) l
q : (d : is-defined (((Ξ· β f) β―) l))
β value (((Ξ· β f) β―) l) d οΌ value (πΜ f l) (β―-is-defined (Ξ· β f) l d)
q d = refl
b : (πΜ f) l β ((Ξ· β f) β―) l
b = r , s
where
r : is-defined (πΜ f l) β is-defined (((Ξ· β f) β―) l)
r d = d , β
s : (d : is-defined (πΜ f l))
β value (πΜ f l) d οΌ value (((Ξ· β f) β―) l) (r d)
s d = refl
\end{code}
Added 22 June 2024.
Excluded middle holds if and only if the lifting discretely adds a single point,
viz. π X β π + X.
\begin{code}
lifting-of-π-is-Ξ© : π (π{π€}) β Ξ© π£
lifting-of-π-is-Ξ© =
π π ββ¨ Ξ£-cong (Ξ» P β Γ-cong (βπ fe) ππ) β©
(Ξ£ P κ π£ Μ , π Γ is-prop P) ββ¨ Ξ£-cong (Ξ» P β π-lneutral) β©
Ξ© π£ β
EM-gives-classical-lifting : (X : π€ Μ ) β EM π£ β π X β (π{π€} + X)
EM-gives-classical-lifting {π€} X em =
π X ββ¨ I β©
(Ξ£ P κ π£ Μ , is-prop P Γ (P β X)) ββ¨ II β©
(Ξ£ P κ Ξ© π£ , (P holds β X)) ββ¨ III β©
(Ξ£ b κ π , (ΞΉ b holds β X)) ββ¨ IV β©
(Ξ£ b κ π + π , (ΞΉ (e b) holds β X)) ββ¨ V β©
(π Γ (π β X)) + (π Γ (π β X)) ββ¨ VI β©
(π β X) + (π β X) ββ¨ VII β©
(π + X) β
where
ΞΉ : π β Ξ© π£
ΞΉ = inclusion-of-booleans
e : π{π€} + π{π€} β π
e = β π-β-π+π ββ»ΒΉ
I = Ξ£-cong (Ξ» _ β Γ-comm)
II = β-sym Ξ£-assoc
III = β-sym (Ξ£-change-of-variable-β _
(EM-gives-π-is-the-type-of-propositions fe pe em))
IV = β-sym (Ξ£-change-of-variable-β _ (β-sym π-β-π+π))
V = β-sym (Ξ£+-split π π (Ξ» b β ΞΉ (e b) holds β X))
VI = +-cong π-lneutral π-lneutral
VII = +-cong (β-sym (πβ fe)) (β-sym (πβ fe))
classical-lifting-of-π-gives-EM : π (π{π€}) β (π{π€} + π{π€}) β EM π£
classical-lifting-of-π-gives-EM e =
π-is-the-type-of-propositions-gives-EM fe pe I
where
I = π ββ¨ π-β-π+π β©
π + π ββ¨ β-sym e β©
π π ββ¨ lifting-of-π-is-Ξ© β©
Ξ© π£ β
classical-lifting-gives-EM : ((X : π€ Μ ) β π X β π{π€} + X) β EM π£
classical-lifting-gives-EM h = classical-lifting-of-π-gives-EM (h π)
\end{code}