Brendan Hart 2019-2020
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import MLTT.Spartan
open import UF.FunExt
open import UF.PropTrunc
module DomainTheory.Basics.ProductsContinuity
(pt : propositional-truncations-exist)
(fe : β {π€ π₯} β funext π€ π₯)
(π₯ : Universe)
where
open PropositionalTruncation pt
open import DomainTheory.Basics.Dcpo pt fe π₯
open import DomainTheory.Basics.Miscelanea pt fe π₯
open import DomainTheory.Basics.Products pt fe
open DcpoProductsGeneral π₯
module _ (π : DCPO {π€} {π€'})
(π : DCPO {π£} {π£'})
(π : DCPO {π¦} {π¦'})
where
continuousβcontinuous-in-prβ : DCPO[ π Γα΅αΆα΅α΅ π , π ] β β¨ π β© β DCPO[ π , π ]
continuousβcontinuous-in-prβ (f , f-is-continuous) e =
(Ξ» d β f (d , e)) , continuous
where
continuous : is-continuous π π (Ξ» d β f (d , e))
continuous I Ξ± Ξ΄ = u , v
where
u : is-upperbound (underlying-order π) (f (β π Ξ΄ , e)) (Ξ» i β f (Ξ± i , e))
u i = monotone-if-continuous
(π Γα΅αΆα΅α΅ π)
π
(f , f-is-continuous)
(Ξ± i , e)
(β π Ξ΄ , e)
(β-is-upperbound π Ξ΄ i , reflexivity π e)
v : (z : β¨ π β©)
β ((i : I) β (f (Ξ± i , e)) ββ¨ π β© z)
β (f (β π Ξ΄ , e)) ββ¨ π β© z
v z p = transport
(Ξ» - β - ββ¨ π β© z)
(eβ β»ΒΉ)
(β-is-lowerbound-of-upperbounds
π
iβfβ¨Ξ±i,eβ©-is-directed
z
z-is-upperbound)
where
_βe-is-directed : is-Directed π (Ξ» _ β e)
_βe-is-directed = constant-function-is-directed
π
(inhabited-if-directed (underlying-order π) Ξ± Ξ΄)
e
iββ¨Ξ±i,eβ©-is-directed : is-Directed (π Γα΅αΆα΅α΅ π) (Ξ» i β Ξ± (prβ i) , e)
iββ¨Ξ±i,eβ©-is-directed = β¨prβ,prββ©-is-directed π π Ξ΄ _βe-is-directed
iβfβ¨Ξ±i,eβ©-is-directed : is-Directed π (Ξ» i β f (Ξ± (prβ i ) , e))
iβfβ¨Ξ±i,eβ©-is-directed =
image-is-directed
(π Γα΅αΆα΅α΅ π)
π
(monotone-if-continuous (π Γα΅αΆα΅α΅ π) π (f , f-is-continuous))
iββ¨Ξ±i,eβ©-is-directed
z-is-upperbound : is-upperbound
(underlying-order π)
z
(Ξ» i β f (Ξ± (prβ i) , e))
z-is-upperbound i = p (prβ i)
eβ : f (β π Ξ΄ , e) οΌ β π iβfβ¨Ξ±i,eβ©-is-directed
eβ = f (β π Ξ΄ , e) οΌβ¨ i β©
f (β π Ξ΄ , β π _βe-is-directed) οΌβ¨ ii β©
f (β (π Γα΅αΆα΅α΅ π) iββ¨Ξ±i,eβ©-is-directed) οΌβ¨ iii β©
β π iβfβ¨Ξ±i,eβ©-is-directed β
where
i = ap (Ξ» - β f (β π Ξ΄ , -))
(constant-is-β-of-constant-function π _βe-is-directed)
ii = ap (Ξ» - β f -) (β¨β,ββ©οΌββ¨,β© π π Ξ΄ _βe-is-directed)
iii = continuous-β-οΌ
(π Γα΅αΆα΅α΅ π)
π (f , f-is-continuous)
iββ¨Ξ±i,eβ©-is-directed
continuousβcontinuous-in-prβ : DCPO[ π Γα΅αΆα΅α΅ π , π ] β β¨ π β© β DCPO[ π , π ]
continuousβcontinuous-in-prβ π@(f , f-is-continuous) d =
(Ξ» e β f (d , e)) , continuous
where
continuous : is-continuous π π (Ξ» e β f (d , e))
continuous I Ξ± Ξ΄ = u , v
where
u : is-upperbound (underlying-order π) (f (d , β π Ξ΄)) (Ξ» z β f (d , Ξ± z))
u i = monotone-if-continuous (π Γα΅αΆα΅α΅ π)
π
π
(d , Ξ± i)
(d , β π Ξ΄)
((reflexivity π d) , (β-is-upperbound π Ξ΄ i))
v : (z : β¨ π β©)
β ((i : I) β (f (d , Ξ± i)) ββ¨ π β© z)
β (f (d , β π Ξ΄)) ββ¨ π β© z
v z p = transport
(Ξ» - β - ββ¨ π β© z)
(e β»ΒΉ)
(β-is-lowerbound-of-upperbounds
π
iβfβ¨d,Ξ±iβ©-is-directed
z
z-is-upperbound)
where
_βd-is-directed : is-Directed π (Ξ» _ β d)
_βd-is-directed = constant-function-is-directed
π
(inhabited-if-directed (underlying-order π) Ξ± Ξ΄)
d
iββ¨d,Ξ±iβ©-is-directed : is-Directed (π Γα΅αΆα΅α΅ π) (Ξ» i β d , Ξ± (prβ i))
iββ¨d,Ξ±iβ©-is-directed = β¨prβ,prββ©-is-directed π π _βd-is-directed Ξ΄
iβfβ¨d,Ξ±iβ©-is-directed : is-Directed π (Ξ» i β f (d , Ξ± (prβ i)))
iβfβ¨d,Ξ±iβ©-is-directed = image-is-directed
(π Γα΅αΆα΅α΅ π)
π
(monotone-if-continuous (π Γα΅αΆα΅α΅ π) π π)
iββ¨d,Ξ±iβ©-is-directed
z-is-upperbound : is-upperbound
(underlying-order π)
z
(Ξ» i β f (d , Ξ± (prβ i)))
z-is-upperbound i = p (prβ i)
e : f (d , β π Ξ΄) οΌ β π iβfβ¨d,Ξ±iβ©-is-directed
e = f (d , β π Ξ΄) οΌβ¨ i β©
f (β π _βd-is-directed , β π Ξ΄) οΌβ¨ ii β©
f (β (π Γα΅αΆα΅α΅ π) iββ¨d,Ξ±iβ©-is-directed) οΌβ¨ iii β©
β π iβfβ¨d,Ξ±iβ©-is-directed β
where
i = ap (Ξ» - β f (- , β π Ξ΄))
(constant-is-β-of-constant-function
π _βd-is-directed)
ii = ap (Ξ» - β f -)
(β¨β,ββ©οΌββ¨,β© π π _βd-is-directed Ξ΄)
iii = continuous-β-οΌ (π Γα΅αΆα΅α΅ π) π π iββ¨d,Ξ±iβ©-is-directed
continuous-in-argumentsβcontinuous : (f : β¨ π Γα΅αΆα΅α΅ π β© β β¨ π β©)
β (β e β is-continuous π π (Ξ» d β f (d , e)))
β (β d β is-continuous π π (Ξ» e β f (d , e)))
β is-continuous (π Γα΅αΆα΅α΅ π) π f
continuous-in-argumentsβcontinuous f pβ pβ I Ξ± Ξ΄ = u , v
where
f-is-monotone : is-monotone (π Γα΅αΆα΅α΅ π) π f
f-is-monotone x@(xβ , xβ) y@(yβ , yβ) (lβ , lβ) =
transitivity π (f x) (f (xβ , yβ)) (f y) mβ mβ
where
mβ : f x ββ¨ π β© f (xβ , yβ)
mβ = monotone-if-continuous π π
((Ξ» e β f (xβ , e)) , pβ xβ)
xβ
yβ
lβ
mβ : f (xβ , yβ) ββ¨ π β© f y
mβ = monotone-if-continuous π π
((Ξ» d β f (d , yβ)) , pβ yβ)
xβ
yβ
lβ
u : is-upperbound (underlying-order π) (f (β (π Γα΅αΆα΅α΅ π) Ξ΄)) (f βΒ Ξ±)
u i = transport (Ξ» - β (f β Ξ±) i ββ¨ π β© f -) (ββ¨,β©οΌβ¨β,ββ© π π Ξ΄ β»ΒΉ) eβ
where
d = prββΞ±-is-Directed π π Ξ΄
e = prββΞ±-is-Directed π π Ξ΄
eβ : (f β Ξ±) i ββ¨ π β© f (β π d , β π e)
eβ = transitivity π
((f β Ξ±) i)
(f (prβ (Ξ± i) ,
β π e)) (f (β π d ,
β π e))
eβ
eβ
where
eβ : f (prβ (Ξ± i) , β π e) ββ¨ π β© f (β π d , β π e)
eβ = monotone-if-continuous π π
((Ξ» x β f (x , β π e)) ,
pβ (β π e))
(prβ (Ξ± i))
(β π d)
(β-is-upperbound π d i)
eβ
: f (prβ (Ξ± i) , prβ (Ξ± i)) ββ¨ π β© f (prβ (Ξ± i) , β π e)
eβ
= monotone-if-continuous π π
((Ξ» e β f (prβ (Ξ± i) , e)) , pβ (prβ (Ξ± i)))
(prβ (Ξ± i))
(β π e)
(β-is-upperbound π e i)
v : (z : β¨ π β©)
β ((i : I) β f (Ξ± i) ββ¨ π β© z)
β f (β (π Γα΅αΆα΅α΅ π) Ξ΄) ββ¨ π β© z
v z p = transport (Ξ» - β - ββ¨ π β© z) (eβ β»ΒΉ) pβ
where
d = prββΞ±-is-Directed π π Ξ΄
e = prββΞ±-is-Directed π π Ξ΄
de : is-Directed π Ξ» i β f (prβ (Ξ± i) , β π e)
de = image-is-directed π π
(monotone-if-continuous π π
((Ξ» - β f (- , β π e)) ,
pβ (β π e)))
d
fβΞ±-is-directed : is-Directed π (f β Ξ±)
fβΞ±-is-directed = inhabited-if-directed (underlying-order (π Γα΅αΆα΅α΅ π)) Ξ± Ξ΄ ,
order
where
order : (i j : I)
β β k κ I , (underlying-order π ((f β Ξ±) i) ((f β Ξ±) k) Γ
underlying-order π ((f β Ξ±) j) ((f β Ξ±) k))
order i j = β₯β₯-functor
(Ξ» (a , b , c) β a , f-is-monotone (Ξ± i) (Ξ± a) b ,
f-is-monotone (Ξ± j) (Ξ± a) c)
(semidirected-if-directed
(underlying-order (π Γα΅αΆα΅α΅ π))
Ξ±
Ξ΄
i
j)
eβ = f (β (π Γα΅αΆα΅α΅ π) Ξ΄) οΌβ¨ ii β©
f (β π d , β π e) οΌβ¨ iii β©
β π de οΌβ¨ iv β©
β π fβΞ±-is-directed β
where
ii = ap (Ξ» - β f -) (ββ¨,β©οΌβ¨β,ββ© π π Ξ΄)
iii = continuous-β-οΌ π π
((Ξ» d β f (d , β π e)) ,
pβ (β π e))
d
iv = antisymmetry π (β π de) (β π fβΞ±-is-directed) lβ lβ
where
lβ : β π fβΞ±-is-directed ββ¨ π β© β π de
lβ = β-is-lowerbound-of-upperbounds π fβΞ±-is-directed (β π de) uβ
where
uβ : is-upperbound
(underlying-order π)
(β π de)
(Ξ» i β f (prβ (Ξ± i) , prβ (Ξ± i)))
uβ i = transitivity π
(f (Ξ± i))
(f (prβ (Ξ± i) , β π e))
(β π de)
pβ
pβ
where
pβ : f (prβ (Ξ± i) , prβ (Ξ± i)) ββ¨ π β© f (prβ (Ξ± i) , β π e)
pβ = monotone-if-continuous π π
((Ξ» e β f (prβ (Ξ± i) , e)) ,
pβ (prβ (Ξ± i)))
(prβ (Ξ± i))
(β π e)
(β-is-upperbound π e i)
pβ
: f (prβ (Ξ± i) , β π e) ββ¨ π β© β π de
pβ
= β-is-upperbound π de i
lβ : β π de ββ¨ π β© β π fβΞ±-is-directed
lβ = β-is-lowerbound-of-upperbounds π de (β π fβΞ±-is-directed) uβ
where
uβ : is-upperbound
(underlying-order π)
(β π fβΞ±-is-directed)
(Ξ» i β f (prβ (Ξ± i) , β π e))
uβ i = prβ (pβ (prβ (Ξ± i))
I
(prβ β Ξ±)
e)
(β π fβΞ±-is-directed)
upper
where
upper : (iβ : I)
β (f (prβ (Ξ± i) , prβ (Ξ± iβ))) ββ¨ π β© (β π fβΞ±-is-directed)
upper j = β₯β₯-rec
(prop-valuedness π
(f (prβ (Ξ± i) , prβ (Ξ± j)))
(β π fβΞ±-is-directed))
pβ
(semidirected-if-directed
(underlying-order (π Γα΅αΆα΅α΅ π))
Ξ±
Ξ΄
i
j)
where
pβ : (Ξ£ k κ I , ((Ξ± i) ββ¨ π Γα΅αΆα΅α΅ π β© (Ξ± k) Γ
(Ξ± j) ββ¨ π Γα΅αΆα΅α΅ π β© (Ξ± k)))
β (f (prβ (Ξ± i) , prβ (Ξ± j))) ββ¨ π β© (β π fβΞ±-is-directed)
pβ (k , (a , _) , (_ , b)) =
transitivity π
(f (prβ (Ξ± i) , prβ (Ξ± j)))
((f β Ξ±) k)
(β π fβΞ±-is-directed)
(f-is-monotone
(prβ (Ξ± i) , prβ (Ξ± j))
(Ξ± k)
(a , b))
(β-is-upperbound π fβΞ±-is-directed k)
pβ : β π fβΞ±-is-directed ββ¨ π β© z
pβ = β-is-lowerbound-of-upperbounds π fβΞ±-is-directed z p
\end{code}