% number subsubsections and put them in the table of contents... \setcounter{tocdepth}{3} \setcounter{secnumdepth}{3} \newcommand{\notimp}{\emph{Status:} Not yet implemented.} % algorithm2e package settings... \SetInd{1mm}{2mm} \SetVlineSkip{.5mm} \SetKw{Break}{break} \SetKw{Assert}{assert} \SetKw{Integer}{Integer} \SetKw{Array}{array} \SetKw{Of}{of} \SetKwFor{Procedure}{procedure}{is}{end procedure} \SetKwInOut{Uses}{uses} \SetKwInOut{Invariant}{invariant} % Type/font styles... \newcommand{\upsty}[1]{\textup{\textsf{#1}}} \newcommand{\setsty}[1]{\textup{\textsf{\textcolor{blue}{#1}}}} \newcommand{\code}[1]{\texttt{\textcolor{blue}{#1}}} \newcommand{\ct}[1]{\texttt{#1}} % Theorem environments... \newtheorem{theorem}{Theorem} \theoremstyle{definition} \newtheorem{definition}{Definition}[subsection] % Symbols... \renewcommand{\implies}{\Rightarrow} \newcommand{\ra}{\rightarrow} \newcommand{\B}{\mathbb{B}} \newcommand{\N}{\mathbb{N}} \newcommand{\lb}{\texttt{\char`\{}} \newcommand{\rb}{\texttt{\char`\}}} \newcommand{\U}{\texttt{\char`\_}} %\newcommand{\U}{{\ttfamily\symbol{'137}}} \newcommand{\UU}{\U\U} % Static notions... \newcommand{\rootscope}{\setsty{root}} % root static scope \newcommand{\start}{\setsty{start}} % start location $l_0$ \newcommand{\Var}{\setsty{Var}} % set of all variables \newcommand{\bool}{\setsty{bool}} % boolean type \newcommand{\proc}{\setsty{proc}} % process reference type \newcommand{\Val}{\setsty{Val}} % set of all values \newcommand{\vtype}{\setsty{vtype}} % type of variable \newcommand{\etype}{\setsty{etype}} % type of expression \newcommand{\Type}{\setsty{Type}} % set of all types \newcommand{\Expr}{\setsty{Expr}} % set of all expressions \newcommand{\Eval}{\setsty{Eval}} % set of all valuations on variables \newcommand{\eval}{\setsty{eval}} % evaluation of an expression \newcommand{\sparent}{\setsty{sparent}} % parent of a static scope \newcommand{\dparent}{\setsty{dparent}} % parent of a dynamic scope \newcommand{\fscope}{\setsty{fscope}} % scope of a function \newcommand{\lscope}{\setsty{lscope}} % scope of a location \newcommand{\static}{\setsty{static}} % static scope associated to a dynamic one \newcommand{\stack}{\setsty{stack}} % call stack \newcommand{\vars}{\setsty{vars}} % variables declared in a scope \newcommand{\ancestors}{\setsty{ancestors}} % as in tree \newcommand{\descendants}{\setsty{descendants}} % as in tree \newcommand{\returntype}{\setsty{returnType}} % function's return type \newcommand{\numparams}{\setsty{numParams}} % number of params for a func. \newcommand{\params}{\setsty{params}} % sequence of formal parameters \newcommand{\void}{\setsty{void}} % type for func. returning nothing \newcommand{\Loc}{\setsty{Loc}} % locations in function's trans. sys. \newcommand{\Func}{\mathcal{F}} % set of function symbols \newcommand{\true}{\textit{true}} % boolean value true \newcommand{\false}{\textit{false}} % boolean value false \newcommand{\default}{\setsty{default}} % default value of type \newcommand{\len}{\setsty{length}} % length of sequence \newcommand{\func}{\setsty{func}} % function a static scope belongs to % Dynamic notions... \newcommand{\fnode}{\setsty{fnode}} % function node of dyscope \newcommand{\State}{\setsty{State}} % set of all states of model \newcommand{\deval}{\setsty{deval}} % valuation on dyscope \newcommand{\droot}{\setsty{droot}} % root dyscope \newcommand{\Frame}{\setsty{Frame}} % set of activation frames % Tables... \newcommand{\notationtable}{% \begin{tabular}{lll} Symbol & Section & Meaning\\ \hline $\B$ & \S\ref{sec:notation} & \{\true,\false\}\\ $\N$ & \S\ref{sec:notation} & \{0,1,2,\ldots\}\\ $\ancestors$ & \S\ref{sec:notation} & set of ancestors of node in a tree (inclusive)\\ $\descendants$ & \S\ref{sec:notation} & set of descendants of node in a tree (inclusive)\\ $\len$ & \S\ref{sec:notation} & length of a sequence\\ $\Var$ & \S\ref{sec:context} & the set of all variables\\ $\bool$ & \S\ref{sec:context} & the boolean type\\ $\proc$ & \S\ref{sec:context} & the process reference type\\ $\Val$ & \S\ref{sec:context} & the set of all values\\ $\Val_t$ & \S\ref{sec:context} & values of type $t$\\ $\default_t$ & \S\ref{sec:context} & default value of type $t$\\ $\vtype$ & \S\ref{sec:context} & function $\Var\ra\Type$ giving type of each variable\\ $\Eval$ & \S\ref{sec:context} & set of all valuations on $\Var$\\ $\Eval(V)$ & \S\ref{sec:state} & set of all valuations on variables in $V\subseteq\Var$\\ $\Expr$ & \S\ref{sec:context} & set of typed expressions over $\Var$\\ $\etype$ & \S\ref{sec:context} & $\Expr\ra\Type$, gives type of each expression\\ $\eval$ & \S\ref{sec:context} & $\Expr\times\Eval\ra\Val$, the evaluation function\\ $\mathcal{C}$ & \S\ref{sec:context} & a CIVL context\\ $\Sigma$ & \S\ref{sec:scopes} & set of all static scopes\\ $\rootscope$ & \S\ref{sec:scopes} & the root scope (member of $\Sigma$)\\ $\sparent$ & \S\ref{sec:scopes} & $\Sigma\setminus\{\rootscope\}\ra\Sigma$, parent function in static scope tree\\ $\vars$ & \S\ref{sec:scopes} & $\Sigma\ra 2^{\Var}$, specifies variables declared in scope\\ $\Lambda$ & \S\ref{sec:scopes} & a lexical scope system\\ $\void$ & \S\ref{sec:functions} & type used for function that does not return a value\\ $\Type'$ & \S\ref{sec:functions} & $\Type\cup\{\void\}$\\ $\Func$ & \S\ref{sec:functions} & set of function symbols\\ $\fscope$ & \S\ref{sec:functions} & $\Func\ra\Sigma\setminus\{\rootscope\}$, gives function scope of each function\\ $\returntype$ & \S\ref{sec:functions} & $\Func\ra\Type'$, gives return type of each function\\ % $\numparams$ & \S\ref{sec:functions} & $\Func\ra\N$, gives number of inputs for each function\\ $\params$ & \S\ref{sec:functions} & $\Func\ra\Var^*$, formal parameter sequence for $f\in\Func$\\ $f_0$ & \S\ref{sec:functions} & the root function (member of $\mathcal{F}$)\\ $\func$ & \S\ref{sec:functions} & $\Sigma\ra\Func$, function to which scope belongs\\ $\Loc_f$ & \S\ref{sec:gts} & set of locations for $f\in\Func$\\ $\lscope_f$ & \S\ref{sec:gts} & $\Loc_f\ra\Sigma$, gives scope of each location for $f\in\Func$\\ $\start_f$ & \S\ref{sec:gts} & start location for $f\in\Func$ (member of $\Loc_f$)\\ $T_f$ & \S\ref{sec:gts} & set of guarded transitions for $f\in\Func$\\ \end{tabular} } % CIVL-C keywords \newcommand{\cckey}{\$} \newcommand{\cc}[1]{\mbox{\texttt{\cckey{}#1}}} \newcommand{\cabstract}{\cc{abstract}} \newcommand{\ccontains}{\cc{contains}} \newcommand{\ccopy}{\cc{copy}} \newcommand{\cproc}{\cc{proc}} \newcommand{\cprocdefined}{\cc{proc{\U}defined}} \newcommand{\cprocNull}{\cc{proc{\U}null}} \newcommand{\cself}{\cc{self}} \newcommand{\cinput}{\cc{input}} \newcommand{\coutput}{\cc{output}} \newcommand{\cspawn}{\cc{spawn}} \newcommand{\cwait}{\cc{wait}} \newcommand{\cwaitall}{\cc{waitall}} \newcommand{\cassert}{\cc{assert}} \newcommand{\ctrue}{\cc{true}} \newcommand{\cfalse}{\cc{false}} \newcommand{\cassume}{\cc{assume}} \newcommand{\catom}{\cc{atom}} \newcommand{\catomic}{\cc{atomic}} \newcommand{\cwhen}{\cc{when}} \newcommand{\cchoose}{\cc{choose}} \newcommand{\cchooseint}{\cc{choose{\U}int}} \newcommand{\cinvariant}{\cc{invariant}} \newcommand{\crequires}{\cc{requires}} \newcommand{\censures}{\cc{ensures}} \newcommand{\cexit}{\cc{exit}} \newcommand{\cresult}{\cc{result}} \newcommand{\cat}{\texttt{@}} \newcommand{\ccollective}{\cc{collective}} \newcommand{\cequals}{\cc{equals}} \newcommand{\cfor}{\cc{for}} \newcommand{\cparfor}{\cc{parfor}} %\newcommand{\cheap}{\cc{heap}} \newcommand{\cscope}{\cc{scope}} \newcommand{\cscopedefined}{\cc{scope{\U}defined}} \newcommand{\cscopeof}{\cc{scopeof}} \newcommand{\cscopeparent}{\cc{scope{\U}parent}} \newcommand{\cscoperoot}{\cc{root}} \newcommand{\chere}{\cc{here}} \newcommand{\cregion}{\cc{region}} \newcommand{\cmalloc}{\cc{malloc}} \newcommand{\cfree}{\cc{free}} \newcommand{\cbundle}{\cc{bundle}} \newcommand{\cbundlesize}{\cc{bundle{\U}size}} \newcommand{\cbundlepack}{\cc{bundle{\U}pack}} \newcommand{\cbundleunpack}{\cc{bundle{\U}unpack}} \newcommand{\cbundleunpackapply}{\cc{bundle{\U}unpack{\U}apply}} \newcommand{\cmessage}{\cc{message}} \newcommand{\cmessagepack}{\cc{message{\U}pack}} \newcommand{\cmessagesource}{\cc{message{\U}source}} \newcommand{\cmessagetag}{\cc{message{\U}tag}} \newcommand{\cmessagedest}{\cc{message{\U}dest}} \newcommand{\cmessagesize}{\cc{message{\U}size}} \newcommand{\cmessageunpack}{\cc{message{\U}unpack}} \newcommand{\ccomm}{\cc{comm}} \newcommand{\ccommcreate}{\cc{comm{\U}create}} \newcommand{\cgcomm}{\cc{gcomm}} \newcommand{\cgcommcreate}{\cc{gcomm{\U}create}} \newcommand{\cbarrier}{\cc{barrier}} \newcommand{\cgbarrier}{\cc{gbarrier}} \newcommand{\cgbarriercreate}{\cc{gbarrier{\U}create}} \newcommand{\cbarriercreate}{\cc{barrier{\U}create}} \newcommand{\cbarriercall}{\cc{barrier{\U}call}} \newcommand{\cgbarrierdestroy}{\cc{gbarrier{\U}destroy}} \newcommand{\cbarrierdestroy}{\cc{barrier{\U}destroy}} \newcommand{\ccollator}{\cc{collator}} \newcommand{\cgcollator}{\cc{gcollator}} \newcommand{\cseqinit}{\cc{seq{\U}init}} \newcommand{\cseqlen}{\cc{seq{\U}length}} \newcommand{\cseqinsert}{\cc{seq{\U}insert}} \newcommand{\cseqrm}{\cc{seq{\U}remove}} \newcommand{\cforall}{\cc{forall}} \newcommand{\cexists}{\cc{exists}} \newcommand{\cimplies}{\ct{=>}} \newcommand{\crange}{\cc{range}} \newcommand{\cdomain}{\cc{domain}} \newcommand{\cdomainof}[1]{\cc{domain}\ct{(}#1\ct{)}} % version information \newcommand{\version}{v1.21} \newcommand{\versiondate}{2021-11-04}