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}