\renewcommand{\l}{\alpha}

\newcommand{\nlt}{\not <}
\newcommand{\ra}{\rightarrow}
\newcommand{\nra}{\not \rightarrow}
\newcommand{\kra}{\ra^k}
\newcommand{\nkra}{{\not \ra}^k}
\newcommand{\cra}{\ra^c}
\newcommand{\ncra}{{\not \ra}^c}
\newcommand{\kcc}{\|^k}
\newcommand{\ccc}{\|^c}
\newcommand{\eqra}{\stackrel{\rightarrow}{\_}}
\newcommand{\eqkra}{\stackrel{\rightarrow}{\_}^k}
\newcommand{\eqcra}{\stackrel{\rightarrow}{\_}^c}
\newcommand{\implies}{\Rightarrow}
\newcommand{\ord}{\mapsto}
\newcommand{\nord}{\not \mapsto}
\newcommand{\kord}{\mapsto^k}
\newcommand{\cord}{\mapsto^c}
\newcommand{\hra}{\hookrightarrow}
\newcommand{\nhra}{\not \hookrightarrow}
\newtheorem{thm}{Theorem}

\newcommand{\fn}{\footnote{By concurrent programs, we include all
parallel programming paradigms such as: multi-threaded programs,
shared-memory parallel programs, message-passing distributed programs,
distributed shared-memory programs, etc. We will refer to a parallel
entity as a process, although in practice it may also be a thread.} }

\newcommand{\fns}{\footnotesize}


%\newcommand{\lb}{\langle}
%\newcommand{\rb}{\rangle}
%\newtheorem{prob}{Problem Statement}
%\newcommand{\qrc}{\stackrel{c}{\stackrel{\rightarrow}{\_}}}
