Scheme.Domain Equations
module Scheme.Domain-Equations where open import Scheme.Domain-Notation open import Scheme.Abstract-Syntax using (Ide) -- 7.2.2. Domain equations -- Domain definitions postulate Loc : Set π = Loc +β₯ -- locations π = β +β₯ -- natural numbers π = Bool +β₯ -- booleans postulate π : Domain -- symbols postulate π : Domain -- characters postulate π : Domain -- numbers ππ© = (π Γ π Γ π) -- pairs ππ― = (π β Γ π) -- vectors ππ¬ = (π β Γ π) -- strings data Misc : Set where false true null undefined unspecified : Misc π = Misc +β₯ -- miscellaneous π = String +β₯ -- errors -- Domain isomorphisms open import Function using (_β_) public postulate π : Domain -- procedure values π : Domain -- expressed values π : Domain -- stores π : Domain -- environments π : Domain -- command continuations π : Domain -- expression continuations π : Domain -- answers postulate instance iso-π : π β (π Γ (π β β π β π)) iso-π : π β (π (π + π + π + ππ© + ππ― + ππ¬ + π + π )) iso-π : π β (π β π Γ π) iso-π : π β (Ide β π) iso-π : π β (π β π) iso-π : π β (π β β π) open Function.Inverse {{ ... }} renaming (to to β» ; from to β ) public -- iso-D : D β Dβ² declares β» : D β Dβ² and β : Dβ² β D
\clearpage
variable Ξ± : π Ξ±β : π β Ξ½ : π ΞΌ : π Ο : π Ο΅ : π Ο΅β : π β Ο : π Ο : π ΞΈ : π ΞΊ : π pattern inj-ππ© ep = injβ (injβ (injβ (injβ ep))) pattern inj-π ΞΌ = injβ (injβ (injβ (injβ (injβ (injβ (injβ ΞΌ)))))) pattern inj-π Ο = injβ (injβ (injβ (injβ (injβ (injβ (injβ Ο)))))) _βπ : π β Bool +β₯ Ο΅ βπ = ((Ξ» { (inj-π _) β Ξ· true ; _ β Ξ· false }) β―) (β» Ο΅) _|π : π β π Ο΅ |π = ((Ξ» { (inj-π Ο) β Ο ; _ β β₯ }) β―) (β» Ο΅) _βπ : π (π + π) β Bool +β₯ _βπ = [ (Ξ» _ β Ξ· true), (Ξ» _ β Ξ· false) ] β― _|π : π (π + π) β π _|π = [ id , (Ξ» _ β β₯) ] β― _ππ©-in-π : ππ© β π ep ππ©-in-π = β (Ξ· (inj-ππ© ep)) _π -in-π : π β π Ο π -in-π = β (Ξ· (inj-π Ο)) unspecified-in-π : π unspecified-in-π = β (Ξ· (inj-π (Ξ· unspecified)))