The simulation allows the user to (partially) execute tasks, control the simulated peripherals, inspect the internal state of the tasks, and interact with \glspl{SDS}.
\begin{lstClean}[caption={The entry point for the simulation interpretation.},label={lst:simulatemain}]
-:: TraceTask a // from the mTask simulator library
-simulate :: (Main (TraceTask a)) -> [String]
+:: TraceTask a; :: TT a // from the mTask simulator library
+simulate :: (Main (TT a)) -> Task (TraceTask a)
\end{lstClean}
\begin{figure}