module NonDeterministic.Expr where
open import Coinduction
open import Data.Colist
data UserMsg : Set where
✂ : UserMsg
✈ : UserMsg
✆ : UserMsg
data ExternalMsg : Set where
↯ : ExternalMsg
data Msg : Set where
user : (m : UserMsg) → Msg
ext : (m : ExternalMsg) → Msg
data Expr : Set where
nop : (e : ∞ Expr) → Expr
tick : (m : UserMsg) (e : ∞ Expr) → Expr
Trace : Set
Trace = Colist Msg
Semantics : Set1
Semantics = Expr → Trace → Set
scissors : Trace
scissors = user ✂ ∷ (♯ scissors)
nops : Expr
nops = nop (♯ nops)
ticks : Expr
ticks = tick ✂ (♯ ticks)