Brendan Hart 2019-2020 \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan open import UF.FunExt open import UF.PropTrunc open import UF.Subsingletons module PCF.Lambda.ScottModelOfIfZero (pt : propositional-truncations-exist) (fe : ā {š¤ š„} ā funext š¤ š„) (pe : propext š¤ā) where open PropositionalTruncation pt open import DomainTheory.Basics.Curry pt fe š¤ā open import DomainTheory.Basics.Exponential pt fe š¤ā open import DomainTheory.Basics.FunctionComposition pt fe š¤ā open import DomainTheory.Basics.Pointed pt fe š¤ā open import DomainTheory.Basics.Products pt fe open import PCF.Combinatory.PCFCombinators pt fe š¤ā open import PCF.Lambda.AbstractSyntax pt open import PCF.Lambda.ScottModelOfContexts pt fe pe open DcpoProductsGeneral š¤ā open IfZeroDenotationalSemantics pe ā¦ ifZeroā¦-uncurried' : DCPOā„[ šįµā Ćįµį¶įµįµā„ šįµā , šįµā ā¹įµį¶įµįµā„ šįµā ] ā¦ ifZeroā¦-uncurried' = uncurryįµį¶įµįµā„ šįµā šįµā (šįµā ā¹įµį¶įµįµā„ šįµā) ā¦ ifZeroā¦ ā¦ ifZeroā¦-uncurried : DCPOā„[ (šįµā Ćįµį¶įµįµā„ šįµā) Ćįµį¶įµįµā„ šįµā , šįµā ] ā¦ ifZeroā¦-uncurried = uncurryįµį¶įµįµā„ (šįµā Ćįµį¶įµįµā„ šįµā) šįµā šįµā ā¦ ifZeroā¦-uncurried' module _ {n : ā} (Ī : Context n) where ā¦ ifZeroā¦-arguments : DCPOā„[ ć Ī ć , šįµā ] ā DCPOā„[ ć Ī ć , šįµā ] ā DCPOā„[ ć Ī ć , šįµā ] ā DCPOā„[ ć Ī ć , (šįµā Ćįµį¶įµįµā„ šįµā) Ćįµį¶įµįµā„ šįµā ] ā¦ ifZeroā¦-arguments a b c = to-Ć-DCPOā„ ć Ī ć (šįµā Ćįµį¶įµįµā„ šįµā) šįµā f c where f : DCPOā„[ ć Ī ć , šįµā Ćįµį¶įµįµā„ šįµā ] f = to-Ć-DCPOā„ ć Ī ć šįµā šįµā a b ā¦ ifZeroā¦Ī : DCPOā„[ ć Ī ć , šįµā ] ā DCPOā„[ ć Ī ć , šįµā ] ā DCPOā„[ ć Ī ć , šįµā ] ā DCPOā„[ ć Ī ć , šįµā ] ā¦ ifZeroā¦Ī a b c = [ ć Ī ć , (šįµā Ćįµį¶įµįµā„ šįµā) Ćįµį¶įµįµā„ šįµā , šįµā ] ā¦ ifZeroā¦-uncurried āįµį¶įµįµā„ (ā¦ ifZeroā¦-arguments a b c) \end{code}