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}