\newcommand{\eg}{e.g.,} \newcommand{\ie}{e.g.,} \newcommand{\flatzinc}{\gls{flatzinc}} \newcommand{\microzinc}{\gls{microzinc}} \newcommand{\minisearch}{\gls{minisearch}} \newcommand{\minizinc}{\gls{minizinc}} \newcommand{\nanozinc}{\gls{nanozinc}} \newcommand{\cml}{\gls{constraint-modelling} language} \newcommand{\cmls}{\gls{constraint-modelling} languages} \newcommand{\vari}{\mzninline{var}} \newcommand{\pari}{\mzninline{par}} \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}} \newcommand{\true}{\mzninline{true}} \newcommand{\false}{\mzninline{false}}