\newcommand{\eg}{e.g.,\xspace{}}
\newcommand{\ie}{e.g.,\xspace{}}
\newcommand{\flatzinc}{\gls{flatzinc}\xspace{}}
\newcommand{\microzinc}{\gls{microzinc}\xspace{}}
\newcommand{\minisearch}{\gls{minisearch}\xspace{}}
\newcommand{\minizinc}{\gls{minizinc}\xspace{}}
\newcommand{\nanozinc}{\gls{nanozinc}\xspace{}}
\newcommand{\cml}{\gls{constraint-modelling} language\xspace{}}
\newcommand{\cmls}{\gls{constraint-modelling} languages\xspace{}}

\renewcommand{\phi}{\varphi}
\newcommand{\tuple}[1]{\ensuremath{\langle #1 \rangle}}
\newcommand{\Prog}{\ensuremath{\mathcal{P}}}
\newcommand{\Ctx}{\ensuremath{\phi}}
\newcommand{\Env}{\ensuremath{\sigma}}
\newcommand{\Sem}[2]{\ptinline{[\!\![#1]\!\!]\tuple{#2}}}
\newcommand{\Cbind}{\ensuremath{\wedge}}

% Half-reification math things

\newcommand{\VV}{{\cal\ V}}
\newcommand{\PP}{{\cal\ P}}
\newcommand{\range}[2]{\left[\,#1\,..\,#2\,\right]}
\newcommand{\gfp}{\textup{gfp}}
\newcommand{\lfp}{\textup{lfp}}
\newcommand{\iter}{\mathit{iter}}

\newcommand{\half}{\Rightarrow}
\newcommand{\full}{\Leftrightarrow}
\renewcommand{\half}{\rightarrow}
\renewcommand{\full}{\leftrightarrow}

\newcommand{\entails}{\models}
\newcommand{\bigsqcap}{\mathop{\lower.1ex\hbox{\Large$\sqcap$}}}

\DeclareMathOperator{\rules}{\mathit{rules}}
\DeclareMathOperator{\lazy}{\mathit{lazy}}
\DeclareMathOperator{\events}{\mathit{events}}
\DeclareMathOperator{\domain}{\mathit{domain}}
\DeclareMathOperator{\bc}{\mathit{bc}}
\DeclareMathOperator{\lbc}{\mathit{lbc}}
\DeclareMathOperator{\ubc}{\mathit{ubc}}
\DeclareMathOperator{\dmc}{\mathit{dmc}}
\DeclareMathOperator{\fix}{\mathit{fix}}
\DeclareMathOperator{\event}{\mathit{event}}
\DeclareMathOperator{\minassign}{\mathit{minassign}}
\DeclareMathOperator{\assign}{\mathit{assign}}
\DeclareMathOperator{\cl}{\mathit{cl}}
\DeclareMathOperator{\UP}{\mathit{UP}}
\DeclareMathOperator{\up}{\mathit{up}}
\DeclareMathOperator{\DOM}{\mathit{DOM}}
\DeclareMathOperator{\setb}{\mathit{sb}}
\DeclareMathOperator{\bnd}{\mathit{bnd}}
\DeclareMathOperator{\dsb}{\mathit{dsb}}
\DeclareMathOperator{\vars}{\mathit{vars}}
\DeclareMathOperator{\ivars}{\mathit{input}}
\DeclareMathOperator{\ovars}{\mathit{output}}

\DeclareMathOperator{\solns}{\mathit{solns}}
\DeclareMathOperator{\solv}{\mathit{solv}}
\DeclareMathOperator{\isolv}{\mathit{isolv}}
\DeclareMathOperator{\conv}{\mathit{conv}}
\DeclareMathOperator{\ran}{\mathit{ran}}
\DeclareMathOperator{\ite}{\mathit{ite}}
\DeclareMathOperator{\VAR}{\mathit{VAR}}

\DeclareMathOperator{\dom}{\mathit{idx}}
