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}