\section{mTask}
\subsection{\gls{EDSL}}
%The \gls{mTask}-\gls{EDSL} contains several classes that need to be implemented
%by a type for it to be an \gls{mTask}. For numeric and boolean arithmetic the
%classes \texttt{arith} and \texttt{boolExpr} are available and listed in a
%shortened version in Listing~\ref{lst:arithbool}. All classes are to be
%implemented by types of kind \texttt{*->*->*} a type \texttt{v t p},
%respectively a view with a type and the role.
%
%\texttt{lit} lifts a constant to the \gls{mTask} domain. For a type to be a
%valid \gls{mTask} type it needs to implement the \texttt{mTaskType} class. The
%binary operators work as expected.

\begin{lstlisting}[language=Clean,label={lst:arithbool},
	caption={Basic classes for expressions}]
class mTaskType a | toByteCode, fromByteCode, iTask, TC a

class arith v where
  lit :: t -> v t Expr | mTaskType t
  (+.) infixl 6 :: (v t p) (v t q) -> v t Expr | type, +, zero t & isExpr p & isExpr q
  ...
class boolExpr v where
  (&.) infixr 3 :: (v Bool p) (v Bool q) -> v Bool Expr | isExpr p & isExpr q
  Not           :: (v Bool p) -> v Bool Expr | isExpr p
  ...
  (==.) infix 4 :: (v a p) (v a q) -> v Bool Expr | ==, toCode a & isExpr p & isExpr q
\end{lstlisting}
%
%
%\subsection{Tasks}
%
%\subsection{Shares}
%Shares can live on multiple clients at the same time. For every share created
%for an \gls{mTask} a real \gls{SDS} is created that mirrors the value on the
%client. All shares currently in use are stored in a system-wide \gls{SDS} in
%such a way that the actual share can be retrieved at any moment. All shares
%have a unique numeric identifier and an initial value.
%
%\begin{lstlisting}[language=Clean,label={lst:sharespec}, caption={\acrlong{SDS}}]
%:: BCValue = E.e: BCValue e & mTaskType e
%:: MTaskShareType = MTaskWithShare String | MTaskLens String
%:: MTaskShare =
%	{withTask :: [String]
%	,withDevice :: [String]
%	,identifier :: Int
%	,realShare :: MTaskShareType
%	,value :: BCValue
%	}
%
%sdsStore :: Shared [MTaskShare]
%\end{lstlisting}
%\todo{Do something with the sharetype}
%
%\subsection{Communication}
%%\todo{Handshake, device specification sending, spec.c}
%%\todo{mTaskDevice class interface}
%
%\section{mTasks}
%\subsection{\gls{EDSL}}
%\todo{Show the classes}
%
%\subsection{Shares}
%\todo{Show the types and why}
%
%Shares are used to store the values 
%
%Shares all have
