{-# OPTIONS --type-in-type
#-}
module SigVecs where
open import NeilPrelude
open import RealTime
open import TimeDeltaList
import SVDesc
open SVDesc public
------------------------------------------------------
-- The change prefixes are inclusive of the time argument
-- (i.e. any changes at that point in time will appear in the list)
ChangeList = TimeDeltaList
ChangePrefix : Set → Set
ChangePrefix A = Time → ChangeList A
SigVec : SVDesc → Set
SigVec (C A) = Time → A
SigVec (E A) = Maybe A × ChangePrefix A
SigVec (S A) = A × ChangePrefix A
SigVec (as , bs) = SigVec as × SigVec bs
SF : SVDesc → SVDesc → Set
SF as bs = SigVec as → SigVec bs
------------------------------------------------------