From 5bfe2af4e0eea69a3c6c07effd946b5d5b250e59 Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Wed, 14 Jul 2021 20:42:24 +1000 Subject: [PATCH] Notes by Guido --- assets/acronyms.tex | 2 - assets/bibliography/references.bib | 19 + assets/glossary.tex | 13 +- assets/img/back_compilation_structure.pdf | Bin 68597 -> 70611 bytes assets/img/rew_compilation_structure.pdf | Bin 71828 -> 93740 bytes assets/listing/back_knapsack.fzn | 11 + chapters/1_introduction.tex | 10 +- chapters/2_background.tex | 106 +++--- chapters/3_rewriting.tex | 417 +++++++++++++--------- chapters/3_rewriting_preamble.tex | 6 +- chapters/4_half_reif.tex | 19 +- chapters/5_incremental.tex | 4 +- chapters/5_incremental_preamble.tex | 2 +- chapters/6_conclusions.tex | 14 +- 14 files changed, 354 insertions(+), 269 deletions(-) create mode 100644 assets/listing/back_knapsack.fzn diff --git a/assets/acronyms.tex b/assets/acronyms.tex index 54c2cb9..653b809 100644 --- a/assets/acronyms.tex +++ b/assets/acronyms.tex @@ -58,7 +58,5 @@ \newacronym{sgp}{SGP}{Social Golfer Problem} -\newacronym[see={[Glossary:]{gls-trs}}]{trs}{TRS\glsadd{gls-trs}}{Term Rewriting System} - \newacronym{tsp}{TSP}{Travelling Salesperson Problem} diff --git a/assets/bibliography/references.bib b/assets/bibliography/references.bib index 787a35f..03aa235 100644 --- a/assets/bibliography/references.bib +++ b/assets/bibliography/references.bib @@ -1163,6 +1163,25 @@ bibsource = {dblp computer science bibliography, https://dblp.org}, } +@inproceedings{stuckey-2019-conditionals, + author = {Peter J. Stuckey and Guido Tack}, + editor = {Thomas Schiex and Simon de Givry}, + title = {Compiling Conditional Constraints}, + booktitle = {Principles and Practice of Constraint Programming - 25th + International Conference, {CP} 2019, Stamford, CT, USA, September + 30 - October 4, 2019, Proceedings}, + series = {Lecture Notes in Computer Science}, + volume = {11802}, + pages = {384--400}, + publisher = {Springer}, + year = {2019}, + url = {https://doi.org/10.1007/978-3-030-30048-7\_23}, + doi = {10.1007/978-3-030-30048-7\_23}, + timestamp = {Sat, 12 Oct 2019 12:51:44 +0200}, + biburl = {https://dblp.org/rec/conf/cp/StuckeyT19.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org}, +} + @unpublished{van-hentenryck-1992-indexicals, title = {Constraint processing in cc(FD)}, author = {Van Hentenryck, P. and Saraswat, V. and Deville, Y.}, diff --git a/assets/glossary.tex b/assets/glossary.tex index 5966d4d..4d00f3f 100644 --- a/assets/glossary.tex +++ b/assets/glossary.tex @@ -48,6 +48,11 @@ description={A \gls{solver} is said to backtrack when it revisits a search decision (\eg{} an value assumed during search). Notably the action of backtracking generally involves invalidating all effects of the revisited and subsequent search decisions}, } +\newglossaryentry{binding}{ + name={binding}, + description={A \gls{variable} is said to have a binding \gls{domain} when it is tighter than the bounds that can be computed from its defining expression. A binding \gls{domain} is a \gls{constraint} of the overall \gls{model}}, +} + \newglossaryentry{bnb}{ name={branch and bound}, description={A search method to find an \gls{opt-sol}. After an initial \gls{sol} is found, the search continuously looks for \glspl{sol} for which the \gls{objective} will return a better value than the incumbent \gls{sol}. If it is proven that no such \gls{sol} exists, then the final incumbent \gls{sol} is an \gls{opt-sol}}, @@ -170,7 +175,7 @@ name={decomposition}, description={ A formulation of a \gls{constraint} in terms of other \glspl{constraint} in order to reach \gls{native} \glspl{constraint}. - Note that the new \glspl{constraint} might represent the same decisions using a different \glspl{variable}, possibly of different types + Note that the new \glspl{constraint} can represent the same decisions using a different \glspl{variable}, possibly of different types }, } @@ -455,7 +460,7 @@ description={ Problem parameters are part of the external input for a \gls{model}. They can be used as immutable data used to define \glspl{constraint} or provide structural information about an \gls{instance}. - For example, a problem parameter might influence the number of \glspl{constraint} in an \gls{instance} + For example, a problem parameter can influence the number of \glspl{constraint} in an \gls{instance} }, } @@ -546,7 +551,7 @@ description={A chronological account of changes to data structures with as goal to possibly reverse these changes. The usage of a trail is a common way for \gls{solver} to revisit search decisions (\ie{} \gls{backtrack})}, } -\newglossaryentry{gls-trs}{ +\newglossaryentry{trs}{ name={term rewriting system}, description={A computational model that expresses computation through the application of rewriting rules. A rewriting rule replaces the \glspl{term} on its left hand side with the \glspl{term} on its right hand side}, } @@ -560,7 +565,7 @@ name={decision variable}, description={ A formalised decision that is yet to be made. - When searching for a \gls{sol} a decision variable is said to have a certain \gls{domain}, which contains the values that the decision variable might still take. + When searching for a \gls{sol} a decision variable is said to have a certain \gls{domain}, which contains the values that the decision variable can still take. If at any point the \gls{domain} is reduced to a single value, then the decision variable is said to be \gls{fixed}. If, however, a decision variable has an empty \gls{domain}, then there is no value it can take that is consistent with the \glspl{constraint} }, diff --git a/assets/img/back_compilation_structure.pdf b/assets/img/back_compilation_structure.pdf index 993cd1644ec0b9f635db08ae3c045cc1e9cbc07d..f8cc55509f2acc6cbef061d0313ca65b1f01f685 100644 GIT binary patch delta 69916 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 RBhJhMSbuP-s=E5S0RSDuNlE|! diff --git a/assets/img/rew_compilation_structure.pdf b/assets/img/rew_compilation_structure.pdf index 3691a2c49a81bb80a95abad4703671bdf94623c6..d27a9f9b0dae0c8f69c5eac558a2591d79c2b57b 100644 GIT binary patch literal 93740 zcmaf)V~{3MleVXA+qP}n?rHOB+qP}noVIP-wrx%0o8A5K{@M68qN1Ws)>U_AoT|u^ z6_JNbQB<6ciJldjZ1M7ZADW4fk80RMl4pC8)97Vuvou>2uIOP0~mbitr z^S^mz5V!s}gQ6zJc7T6D%9_}kIhzx5vT?9-^79iqIsbblHqh?b$v&GkWPG+eJ_5rX z@N=8o1pb7A$U{yxUjDp&v1Y!YogizzeuSUy@#R`-oqn^wSh{<3OAUL(9QysFt^O4Cmc?;NjD=`x z3LHpeunhJ52*nIzeE*&G^B5QS{<;i0{uWpl_#W|rbXWTB zXGq=cePeie-8q8#{8?myf2Y7+k>LD6k*Mize)wn~Y5Ttaw61zAYSGi@TaL?=o=Atl zd!F4AkgjT1QL*qH!liizF_#NoiSf-jdrL2&l+@2`zAqw*NyNe@D0o&Lp*g-&a-0US zhY~%M{~>GhMx>K5;`B+La~ex4ivSB>Xw0=)Tx^_@5#Vj>l%)$6H1`wr0U;T_hdg-^ z`iXyq`C@^U-QdeKS9hXO$trJu-lDgEgCs%d+%RX;Jsl{3sG`;D1j7jVHsF1>rF+_l zW`aveXkXn8_+T=s+<0X!oSNXSEVCi-F2zDcRHxB0R z2}nVDy}a!skJipdDDTEK!)f(rikXp^VOgb-CJqC`7|&jE#DgwF){I5Ww$PnvFh_~J_f7>h$?YEXW|w8;8&SRACTt6yGvnof%cU|L za*e*zv4iiXr`5JkTYkTkI@*1`_Falw^dK3q8-9SBC(u00sO9)1G}sL}S^W6C-uUST zXblc_En*Y7kCoHd`10O2WfTj=*r95SeAB@t=Q;uEmZloz4Q3)-Cl!2qT{rZP);Yb- zK55qgu;3!p-MNJ5o+bB^An>-#fgm(!mk)2q8c`?rS86}uWDu9j*g_N?rR@5nikqWT zTjg1(!~7nVT7<6Er%7Z@o-OJ92TdFF`V{Ai$2^@yLwd%s^RYyDgfY5$uIaLit5CO8 z+XNdbpdf%>V1f~L-;dR_(p1h9_<%y6DH9Mzf|Sf^zHNk{!G{9cYWE7 z;iR4v08h58l@;#da*a22{ZQc6N9B*jKIT^LK!3e*h;E;=R?8Q_+tBKv_+-Oowjc+< zmK?n!bb_>L5J@M32#|D}q29DGO~VW`F>zj{Aj*n4{lGbT{RL6W*Jn8J=Mtt#=VKiW zQtQy~k|_e+*Jn24mn=sTV+YjCWGf z6=X881z~NZE5Hk-6BeUkt17<0v9MdMz_?ty>$GvZ+UE(E7j6sW^my-j9jcvCr}S|O zS>hV<+YEmny`F_S`>&nBt|T0b+I+xxxy_6HxDjFh1{_{twkL)NW}#0gv$?|exG_c1 zZ(j5u)d*PT`QAy~3i;4WQmK*IP$_H$K>U^I0nSyg$apoTo|(4i(M8@7Uq}vNaKf|T z#E*hGeen(Hxo`9f2nR0;P-i;{&)A6fIRfmsk>VXN|=%x?t z){XH#HPV0!fs=pC0UWs+1w6h38T=Afl?$|Za0PdaqO>)(6g&L!G1f$#1?*Gy!oT!D z20t!KL~0S%O-UpHqxqJfDp?r$o}W}g%c~N8GN21kZrF!md@{JD(7I%+Vx*K?;ma69 z^nxwDpP2x@u#AnmzSi8(DF*^GO8`3%)RtZ73(TsazYyzzV4o%gAKNyt)Jg&safICv~8TE9D|*QD)P_~jxi;0MW39NwTX~4NYXhni?L%)U_yfo zxT-$OD=yI&jv=NnlUhTlzk~1*mlQ!E2&)$w*+8QXw!mGChNG@mLf$Fdsp7@-St<5T zCw7QLwk~b1rG4oM+pfXBY1y!^S{lYFxe3$)xtEWKDMS7{>hk{MX?e}z({
Sej5 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�$5`d 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 R&_cYt5MBTyqpZ5z{{i-Zo}~Z) literal 71828 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 z

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 and \syntax{}, which you can assume to be the same as the definition of \syntax{} and \syntax{} in the \minizinc\ grammar, see \cref{ch:minizinc-grammar}. -While we omit the typing rules here for space reasons, we will assume that in well-typed \microzinc{} programs, the conditions \syntax{} in if-then-else and where expressions have \mzninline{par} type. +In \microzinc{} it is specifically used to mark functions that are \gls{native} to the target \solver{}. +We have omitted the definitions of \syntax{} and \syntax{}, which can be assumed to be the same as the definition of \syntax{} and \syntax{} in the \minizinc{} grammar, see \cref{ch:minizinc-grammar}. +While we omit the typing rules here for space reasons, we will assume that in well-typed \microzinc{} programs conditional expressions are \parameters{}. +This means that the where conditions \syntax{} in \glspl{comprehension}, the conditions \syntax{} in if-then-else expressions, and the \syntax{} index in array accesses must have \mzninline{par} type. \begin{figure} \begin{grammar} ::= ** - ::= "predicate" "(" ["," ]* ");" - - ::= "function" ":" "(" ["," ]* ")" "=" ";" + ::= "function" ":" "(" ["," ]* ")" "=" ";" + \alt "function" "var" "bool" ":" "(" ["," ]* ")" ";" ::= | @@ -75,20 +90,21 @@ While we omit the typing rules here for space reasons, we will assume that in we \alt "[" "|" "where" "]" \alt "[" "]" - ::= [ "=" ]";" + ::= [ "=" ]";" \alt "tuple(" ["," ]* "):" = "(" ["," ]* ")"; - \alt "(" ["," ]* ")" "=" ";" + \alt "(" ["," ]* ")" "=" ";" \alt "constraint" ";" - ::= ":" + ::= ":" - ::= "in" ["," "in" ]* + ::= "in" ["," "in" ]* \end{grammar} \caption{\label{fig:rew-uzn-syntax}Syntax of \microzinc{}.} \end{figure} -A \nanozinc\ program, defined in \cref{fig:rew-nzn-syntax}, is simply a list of \variable{} declarations and \constraints{} in the form of calls. -The syntax ``\texttt{↳}'' will be used to track dependent constraints (this will be explained in detail in \cref{sec:rew-nanozinc}, for now you can ignore them). +A \nanozinc{} program, defined in \cref{fig:rew-nzn-syntax}, is simply a list of \variable{} declarations and \constraints{} in the form of calls. +The syntax ``\texttt{↳}'' will be used to ``attach'' \constraints{} to \variables{} in order to track dependent \constraints{}. +This will be explained in detail in \cref{sec:rew-nanozinc}. \begin{figure} \begin{grammar} @@ -98,60 +114,74 @@ The syntax ``\texttt{↳}'' will be used to track dependent constraints (this wi ::= "constraint" "(" ["," ]* ")"";" - ::= "var" ":" ";" * + ::= "var" ":" ";" * ::= ".." | \alt "bool" | "int" | "float" | "set of int" - ::= "↳" + ::= "↳" \end{grammar} \caption{\label{fig:rew-nzn-syntax}Syntax of \nanozinc{}.} \end{figure} -\subsection{\glsentrytext{minizinc} to \glsentrytext{microzinc}/\glsentrytext{nanozinc}} +\subsection{\glsentrytext{minizinc} to \glsentrytext{microzinc}} -The translation from \minizinc\ to \microzinc{} involves the following steps: +The translation from \minizinc{} to \microzinc{} involves the following steps: \begin{enumerate} - \item Transform all expressions that are valid in \minizinc\ but not in \microzinc{}. - This includes simple cases such as replacing operator expressions like \mzninline{x+y} by function calls \mzninline{int_plus(x,y)}. + \item Transform all expressions that are valid in \minizinc{} but not in \microzinc{}. + This includes simple cases such as replacing operator expressions, like \mzninline{x+y}, by function calls, \mzninline{int_plus(x,y)}, and replacing generators in calls, like \mzninline{sum(x in A)(x)}, by \glspl{comprehension}, \mzninline{sum([x|x in A])}. As mentioned above, conditional expressions where the decision is made by a \variable{} are also not directly supported in \microzinc{}. These expressions are therefore also replaced by function calls that are possibly decomposed. - An expression \mzninline{if x then A else B endif}, where \mzninline{x} is a \variable{}, is replaced by a call: + An expression \mzninline{if x then A else B endif}, where \mzninline{x} is a \variable{}, is replaced the following call. \begin{mzn} if_then_else([x, true], [A, B]) \end{mzn} - \noindent{}And, an expression \mzninline{A[x]}, where \mzninline{x} is a \variable{}, is replaced by a call: + And, an expression \mzninline{A[x]}, where \mzninline{x} is a \variable{}, is replaced by the following call. \begin{mzn} element(A, x) \end{mzn} + \mzninline{element} is a well-known \gls{global}. + For many \gls{cp} \solvers{} it is a \gls{native} \constraint{} and for other \solvers{} there have long been accepted \glspl{decomp}. + A recent study by \textcite{stuckey-2019-conditionals} describes how \mzninline{if_then_else} can be decomposed for different types of \solvers{}. + \item Replace optional \variables{} into non-optional forms. - As shown by Mears et al., optional variable types can be represented using a \variable{} of the same non-optional type and a Boolean \variable{} \autocite*{mears-2014-option}. + As shown by \textcite{mears-2014-option}, optional type \variables{} can be represented using a \variable{} of the same non-optional type and a Boolean \variable{}. The Boolean \variable{}, then, represents if the variable exists or is absent, while the non-optional \variable{} of the same type represents the value of the optional \variable{} if it exists. In \microzinc{} this can be represented as a tuple of the two \variables{}. - The functions definitions for optional types then take both \variables{} into account. - For example, the definition of \mzninline{int_plus(x, y)} for optional types will add the value variable to the result of the function if Boolean \variable exists. + The function definitions for optional types then take both \variables{} into account. + For example, the definition of \mzninline{int_plus(x, y)} for optional types can be translated into the following function. + + \begin{mzn} + function var int: int_plus(tuple(var bool, var int): x, tuple(var bool, var int): y) = + let { + (x1, x2) = x; + (y1, y2) = y; + var int: x3 = if_then_else([x1, true], [x2, 0]); + var int: y3 = if_then_else([y1, true], [y2, 0]); + var int: res = int_plus(x3, y3); + } in res; + \end{mzn} \item Lift the partiality in expressions into the surrounding context to implement \minizinc{}'s relational semantics. - In contrast to \minizinc{}, the evaluation of \microzinc{} will implement strict semantics for partial expressions, whereas \minizinc\ uses relational semantics. - Stuckey and Tack have extensively examined these problems and describe how to transform any partial function into a total function. - \autocite*{stuckey-2013-functions}. - A general approach for describing the partially in \microzinc{} functions is to make the function return an additional Boolean \variable{}. - This \variable{} indicates the totality with regards to the input to the function. + In contrast to \minizinc{}, a \microzinc{} expression must be total. + \textcite{stuckey-2013-functions} have extensively examined these problems and describe how to transform any partial function into a total function while maintaining the relational semantics of the original \cmodel{}. + A general approach for describing the partiality in \microzinc{} functions is to make the function return an additional Boolean \variable{}. + This \variable{} indicates whether the result of the function call is defined with regards to the function parameters. The resulting value of the function is then adjusted to return a predefined value when it would normally be undefined. - For example, The function + For example, the \mzninline{element} function in \minizinc{} is declared as follows. \begin{mzn} function var int: element(array of int: a, var int: x); \end{mzn} - \noindent{}is only defined when \mzninline{x in index_set(a)}. - A total version to be used in \microzinc{} could look like\footnote{For brevity's sake, we will still use \minizinc{} \glspl{operator} to write the \microzinc{} definition.}: + \noindent{}It is only defined when \mzninline{x in index_set(a)}. + The following function is a total version of this function that can be used in \microzinc{}.\footnote{For brevity's sake, we will still use \minizinc{} \glspl{operator} to write the \microzinc{} definition.} \begin{mzn} function tuple(var int, var bool): element_safe(array of int: a, var int: x) = @@ -170,9 +200,9 @@ The translation from \minizinc\ to \microzinc{} involves the following steps: } in ret; \end{mzn} - Similar to the replacement of optional values, all usage of the \mzninline{element} function are replaced by \mzninline{element_safe}. + Similar to the replacement of optional values, all occurrences of the \mzninline{element} function are replaced by \mzninline{element_safe}. The usage of its result should be guarded by the returned totality variable in the surrounding Boolean context. - This means that, for example, the expression \mzninline{element(e, v) = 5 \/ b} would be transformed into: + This means that, for example, the expression \mzninline{element(e, v) = 5 \/ b} would be replaced by the following expression. \begin{mzn} let { @@ -181,27 +211,29 @@ The translation from \minizinc\ to \microzinc{} involves the following steps: \end{mzn} \item Resolve sub-type based overloading statically. - To prevent the runtime overhead of the dynamic lookup of overloaded function definitions for every call, the function dispatch in \microzinc\ is determined statically. + To prevent the runtime overhead of the dynamic lookup of overloaded function definitions for every call, the function dispatch in \microzinc{} is determined statically. - It is important, however, that the correct version of a function is chosen when it allows for either \variable{} and \parameter arguments. + It is important, however, that the correct version of a function is chosen when it allows for either \variable{} and \parameter{} arguments. And, as we will later discuss in more detail, is possible for a \variable{} to be \gls{fixed} to a single value during the \gls{rewriting} process. - At which point it can be treated as a \parameter{}. + At that point it can be treated as a \parameter{}. To ensure the correct version of the function is used, functions are changed to, at runtime, check if a \variable{} is fixed and, if so, dispatch to the \parameter{} version of the function. - If we, for example, have a \minizinc{} function \mzninline{f} that is overloaded on \mzninline{var int} and \mzninline{int}, then the \microzinc{} transformation might look like: + If we, for example, have a \minizinc{} function \mzninline{f} that is overloaded on \mzninline{var int} and \mzninline{int}, then the \microzinc{} transformation can be described by the following two functions. \begin{mzn} function f_int(int: x) = /* original body */; - function f_varint(varint: x) = + function f_varint(var int: x) = if is_fixed(x) then - f_int(x) + f_int(fix(x)) else /* original body */; endif; \end{mzn} - \item Transform all function definitions so that they do not refer to top-level \variables{}, by adding those \variables{} as extra arguments to the function declaration and each call site. + \item Transform all function definitions so that they do not refer to \variables{} and \parameters{} defined outside the scope of the function. + Instead they are added as extra arguments to the function definition and each call. - \item Move all top-level \variable{} declarations and \constraints{} into a let expression in the body of a new function called \mzninline{main}, whose arguments are the parameters of the model and which returns a fresh Boolean \variable{}. + \item Move all top-level \variable{} declarations and \constraints{} into a let expression in the body of a new function called \mzninline{main}. + The arguments to this function are the top-level \parameters{} of the \minizinc{} model and it returns a fresh Boolean \variable{}. \end{enumerate} @@ -224,10 +256,12 @@ The translation from \minizinc\ to \microzinc{} involves the following steps: \begin{mzn} function var bool: all_different(array[int] of var int: x) = - forall([ + let { + set of int: S = range(1, length(x)); + } in forall([ int_neq(element(x, i),element(x, j)) - | i in range(1, length(x)), - j in range(1, length(x)) + | i in S, + j in S where int_lt(i,j) ]); @@ -248,17 +282,17 @@ The translation from \minizinc\ to \microzinc{} involves the following steps: \subsection{Partial Evaluation of \glsentrytext{nanozinc}}\label{sub:rew-partial} -Each call in a \nanozinc\ program is either a call to a \gls{native} predicate, or it has a corresponding \microzinc\ function definition. -The goal of partial evaluation is to rewrite the \nanozinc{} program into a \gls{slv-mod}, \ie\ a program where all calls are calls to \gls{native} predicates. +Each call in a \nanozinc{} program is either a call to a \gls{native} \constraint{}, or it has a corresponding \microzinc{} function definition. +The goal of partial evaluation is to rewrite the \nanozinc{} program into a \gls{slv-mod}, \ie{} a program where all calls are calls to \gls{native} \constraints{}. To achieve this, we define the semantics of \microzinc{} as a \gls{rewriting} system that produces \nanozinc{} calls. Each non-\gls{native} call in a \nanozinc{} program can then be replaced with the result of evaluating the corresponding \microzinc{} function. A key element of this \gls{rewriting} process, then, is the transformation of functional expressions into relational form. -For this to happen, the \gls{rewriting} process introduces \glspl{ivar} to represent intermediate expressions. +For this to happen, the \gls{rewriting} process introduces fresh \variables{} to represent intermediate expressions. \begin{example}\label{ex:rew-abs} - Consider the following (reasonably typical) \minizinc\ encoding for the absolute value function: + Consider the following (reasonably typical) \minizinc{} encoding for the absolute value function: \begin{mzn} function var int: abs(var int: x) = @@ -279,27 +313,26 @@ If \mzninline{z} is unused in the rest of the model, both \mzninline{z} and the As we shall see in \cref{sec:rew-simplification}, certain optimisations and simplifications during the evaluation can lead to many expressions becoming unused. It is therefore important to track which constraints were merely introduced to define results of function calls. -In order to track these dependencies, \nanozinc\ attaches constraints that define a variable to the item that introduces the \variable{}. +In order to track these dependencies, \nanozinc{} attaches constraints that define a variable to the item that introduces the \variable{}. \subsection{\glsentrytext{nanozinc}}\label{sec:rew-nanozinc} -A \nanozinc\ model (\cref{fig:rew-nzn-syntax}) consists of a topologically-ordered list of declarations of \variables{} and \constraints{}. -\Variables{} are declared with an identifier, a domain, and it is associated with a list of identifiers of auxiliary \constraints{}. -\Constraints{} can also occur at the top-level of the \nanozinc{} model. -These are said to be the ``root-context'' \constraints{} of the model, \ie\ those that have to hold globally and are not just used to define an \gls{ivar}. +A \nanozinc{} program (\cref{fig:rew-nzn-syntax}) consists of a topologically-ordered list of declarations of \variables{} and \constraints{}. +\Variables{} are declared with an identifier, a domain, and are associated with a list of attached \constraints{}. +\Constraints{} can also occur at the top-level of the \nanozinc{} program. +These are said to be the ``root-context'' \constraints{} of the \cmodel{}, \ie{} those that have to hold globally and are not just used to define an \gls{ivar}. Only root-context \constraints{} can effectively constrain the overall problem. \Constraints{} attached to \variables{} originate from function calls, and since all functions are guaranteed to be total, attached constraints can only define the function result. \begin{example}\label{ex:rew-absnzn} - Consider the \minizinc{} fragment + Consider the following \minizinc{} fragment. \begin{mzn} constraint abs(x) > y; \end{mzn} - \noindent{}where \mzninline{x} and \mzninline{y} have domain \mzninline{-10..10}. - After rewriting all definitions, the resulting \nanozinc{} program could look like this: + \noindent{}If we assume that \mzninline{x} and \mzninline{y} have a \domain{} of \mzninline{-10..10}, then after \gls{rewriting}, the resulting \nanozinc{} program could look like this: \begin{nzn} var -10..10: x; @@ -319,7 +352,7 @@ The core of the proposed \minizinc{} architecture is an abstract machine that re We can now formally define the rewriting rules for this abstract machine. The full set of rules appears in \cref{fig:rew-rewrite-to-nzn-calls,fig:rew-rewrite-to-nzn-let,fig:rew-rewrite-to-nzn-other}. -To simplify presentation, we assume that all rules that introduce new identifiers into the \nanozinc{} program do so in a way that ensures those identifiers are fresh (\ie\ not used in the rest of the \nanozinc\ program), by suitable alpha renaming. +To simplify presentation, we assume that all rules that introduce new identifiers into the \nanozinc{} program do so in a way that ensures those identifiers are fresh (\ie{} not used in the rest of the \nanozinc{} program), by suitable alpha renaming. \begin{figure*} \centering @@ -335,29 +368,29 @@ To simplify presentation, we assume that all rules that introduce new identifier \end{prooftree} \\ \bigskip \begin{prooftree} - \hypo{\texttt{predicate}~\ptinline{F(\(p_1, \ldots, p_k\));} \in \Prog} - \infer1[(CallPredicate)]{\Sem{F(\(a_1, \ldots, a_k\))}{\Prog, \Env} \Rightarrow{} + \hypo{\texttt{function var bool:}~\ptinline{F(\(p_1, \ldots, p_k\));} \in \Prog} + \infer1[(CallNative)]{\Sem{F(\(a_1, \ldots, a_k\))}{\Prog, \Env} \Rightarrow{} \tuple{\ensuremath{\texttt{constraint}~\ptinline{F}(a_1, \ldots, a_k), \Env}}} \end{prooftree} \caption{\label{fig:rew-rewrite-to-nzn-calls} Rewriting rules for partial evaluation - of \microzinc\ calls to \nanozinc{}.} + of \microzinc{} calls to \nanozinc{}.} \end{figure*} The rules in \cref{fig:rew-rewrite-to-nzn-calls} handle function calls. -The first rule, (Call), evaluates a function call expression in the context of a \microzinc\ program \(\Prog{}\) and \nanozinc\ program \(\Env{}\). +The first rule, (Call), evaluates a function call expression in the context of a \microzinc{} program \(\Prog{}\) and \nanozinc{} program \(\Env{}\). The rule evaluates the function body \(\ptinline{E}\) where the formal parameters \(p_{i}\) are substituted by the call arguments \(a_{i}\).\footnote{We use \(E_{[a \mapsto b]}\) as a notation for the expression \(E\) where \(a\) is substituted by \(b\).} The result of this evaluation is the result of the function call. The (CallBuiltin) rule applies to ``built-in'' functions that can be evaluated directly, such as arithmetic and Boolean operations on fixed values. The rule simply returns the result of evaluating the built-in function on the evaluated parameter values. -The (CallPredicate) rule applies to calls to predicates \gls{native} to the \solver{}. +The (CallNative) rule applies to calls to functions for \constraints{} \gls{native} to the \solver{}. Since these are directly supported by the \solver{}, they simply need to be transferred into the \nanozinc{} program. \begin{figure*} \centering \begin{prooftree} \hypo{\Sem{\(\mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env, \emptyset} \Rightarrow \tuple{x, \Env'}} - \infer1[(Let)]{\Sem{let \{ \(\mathbf{I}\) \} in \(\mathbf{X}\)}{\Prog, \Env} \Rightarrow\ \tuple{x, \Env'}} + \infer1[(Let)]{\Sem{let \{ \(\mathbf{I}\) \} in \(\mathbf{X}\)}{\Prog, \Env} \Rightarrow{} \tuple{x, \Env'}} \end{prooftree} \\ \bigskip \begin{prooftree} @@ -368,41 +401,42 @@ Since these are directly supported by the \solver{}, they simply need to be tran \begin{prooftree} \hypo{\Sem{\(C\)}{\Prog, \Env} \Rightarrow \tuple{c, \Env'}} \hypo{\Sem{\(\mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env', \{c\}\cup\Ctx} \Rightarrow \tuple{x, \Env''}} - \infer2[(ItemC)]{\Sem{\(\mbox{constraint}~C\texttt{;} \mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env, \Ctx} \Rightarrow\ \tuple{x, \Env''}} + \infer2[(ItemC)]{\Sem{\(\mbox{constraint}~C\texttt{;} \mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env, \Ctx} \Rightarrow{} \tuple{x, \Env''}} \end{prooftree} \\ \bigskip \begin{prooftree} - \hypo{\Sem{\(\mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env\ \cup\ \{t : x\}, \Ctx} \Rightarrow \tuple{x, \Env'}} + \hypo{\Sem{\(\mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env{} \cup{} \{t : x\}, \Ctx} \Rightarrow \tuple{x, \Env'}} \infer1[(ItemT)]{\Sem{\(t\texttt{:}~x\texttt{;} \mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env, \Ctx} \Rightarrow{} \tuple{x, \Env'}} \end{prooftree} \\ \bigskip \begin{prooftree} \hypo{\Sem{\(E\)}{\Prog, \Env} \Rightarrow \tuple{v, \Env'}} - \hypo{\Sem{\(\mathbf{I}_{[x \mapsto v]} \mid{} \mathbf{X}_{[x \mapsto v]}\)}{\Prog, \Env', \Ctx} \Rightarrow\ \tuple{x, \Env''}} - \infer2[(ItemTE)]{\Sem{\(t\texttt{:}~x = E\texttt{;} \mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env, \Ctx} \Rightarrow\ \tuple{x, \Env''}} + \hypo{\Sem{\(\mathbf{I}_{[x \mapsto v]} \mid{} \mathbf{X}_{[x \mapsto v]}\)}{\Prog, \Env', \Ctx} \Rightarrow{} \tuple{x, \Env''}} + \infer2[(ItemTE)]{\Sem{\(t\texttt{:}~x = E\texttt{;} \mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env, \Ctx} \Rightarrow{} \tuple{x, \Env''}} \end{prooftree} \\ \bigskip \begin{prooftree} \hypo{\Sem{\(E_{i}\)}{\Prog,\Env^{i-1}} \Rightarrow \tuple{v_{i}, \Env^{i}}, \forall{} 1 \leq{} i \leq{} k} - \infer[no rule]1{\Sem{\(\mathbf{I}_{[x_{\langle{}i\rangle} \mapsto v_{i}, \forall{} 1 \leq{} i \leq{} k]} \mid{} \mathbf{X}_{[x_{\langle{}i\rangle} \mapsto v_{i}, \forall{} 1 \leq{} i \leq{} k]}\)}{\Prog, \Env^{k}, \Ctx} \Rightarrow\ \tuple{x, \Env'}} + \infer[no rule]1{\Sem{\(\mathbf{I}_{[x_{\langle{}i\rangle} \mapsto v_{i}, \forall{} 1 \leq{} i \leq{} k]} \mid{} \mathbf{X}_{[x_{\langle{}i\rangle} \mapsto v_{i}, \forall{} 1 \leq{} i \leq{} k]}\)}{\Prog, \Env^{k}, \Ctx} \Rightarrow{} \tuple{x, \Env'}} \infer1[(ItemTupC)]{\Sem{\( \texttt{tuple(}t_{1}, \ldots, t_{k}\texttt{):}~x = \left(E_{1}, \ldots, E_{k}\right)\)}{\Prog, \Env^{0}, \Ctx} \Rightarrow{} \tuple{x, \Env'}} \end{prooftree} \\ \bigskip \begin{prooftree} \hypo{\Sem{\(E\)}{\Prog, \Env} \Rightarrow \tuple{\left(v_{\langle{}1\rangle}, \ldots, v_{\langle{}k\rangle}\right), \Env'}} - \infer[no rule]1{\Sem{\(\mathbf{I}_{[x_{i} \mapsto v_{\langle{}i\rangle}, \forall{} 1 \leq{} i \leq{} k]} \mid{} \mathbf{X}_{[x_{i} \mapsto v_{\langle{}i\rangle}, \forall{} 1 \leq{} i \leq{} k]}\)}{\Prog, \Env', \Ctx} \Rightarrow\ \tuple{x, \Env''}} - \infer1[(ItemTupD)]{\Sem{\(\left(t_{1}\texttt{:}~x_{1}, \ldots, t_{k}\texttt{:}~x_{k}\right) = E\texttt{;} \mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env, \Ctx} \Rightarrow\ \tuple{x, \Env''}} + \infer[no rule]1{\Sem{\(\mathbf{I}_{[x_{i} \mapsto v_{\langle{}i\rangle}, \forall{} 1 \leq{} i \leq{} k]} \mid{} \mathbf{X}_{[x_{i} \mapsto v_{\langle{}i\rangle}, \forall{} 1 \leq{} i \leq{} k]}\)}{\Prog, \Env', \Ctx} \Rightarrow{} \tuple{x, \Env''}} + \infer1[(ItemTupD)]{\Sem{\(\left(t_{1}\texttt{:}~x_{1}, \ldots, t_{k}\texttt{:}~x_{k}\right) = E\texttt{;} \mathbf{I} \mid{} \mathbf{X}\)}{\Prog, \Env, \Ctx} \Rightarrow{} \tuple{x, \Env''}} \end{prooftree} \caption{\label{fig:rew-rewrite-to-nzn-let} Rewriting rules for partial evaluation - of \microzinc\ let expressions to \nanozinc{}.} + of \microzinc{} \glspl{let} to \nanozinc{}.} \end{figure*} -The rules in \cref{fig:rew-rewrite-to-nzn-let} considers let expressions. +The rules in \cref{fig:rew-rewrite-to-nzn-let} consider \glspl{let}. Starting from the main rule, (Let), the let items \textbf{I} are evaluated one at a time. -\Glspl{constraint} that follow from the evaluation of the let expression, by the (ItemC) rule, are captured in a third evaluation arguments. -When all inner items have been evaluated, the captured \constraints{} are bound to the literal returned by the body of the let expression \textbf{X} in (Item0). +\Glspl{constraint} that follow from the evaluation of the let expression, by the (ItemC) rule, are collected in the third component, \(\phi{}\) +, of the evaluation arguments. +When all inner items have been evaluated, the captured \constraints{} are attached to the literal returned by the body of the let expression \textbf{X} in (Item0). The (ItemT) rule handles introduction of new \variables{} by adding them to the context. -The (ItemTE) rule handles introduction of new \variables{} with a defining equation by evaluating them in the current context and substituting the name of the new \variable{} by the result of evaluation in the remainder of the namespace. +The (ItemTE) rule handles introduction of new \variables{} with a defining equation by evaluating them in the current context and substituting the name of the new \variable{} by the result of evaluation in the entire scope of the variable. The rules (ItemTupC) and (ItemTupD) are for the construction and deconstruction of tuple objects. We use the notation \(x_{\langle{}i\rangle}\) to mark the \(i^{\text{th}}\) member of the tuple \(x\) in our substitution notation. @@ -410,7 +444,7 @@ We use the notation \(x_{\langle{}i\rangle}\) to mark the \(i^{\text{th}}\) memb \centering \begin{prooftree} \hypo{x \in \langle \text{ident} \rangle} - \hypo{\{t: x \texttt{~↳~} \phi\ \} \in \Env} + \hypo{\{t: x \texttt{~↳~} \phi{} \} \in \Env} \infer2[(Ident)]{\Sem{\(x\)}{\Prog, \Env} \Rightarrow{} \tuple{x, \Env}} \end{prooftree} \\ \bigskip @@ -454,13 +488,11 @@ We use the notation \(x_{\langle{}i\rangle}\) to mark the \(i^{\text{th}}\) memb \tuple{\mbox{concat} [ A_v~|~v \in{} S ], \Env{} \cup{} \bigcup{}_{v \in{} S} \Env{}_{v}}} \end{prooftree} \caption{\label{fig:rew-rewrite-to-nzn-other} Rewriting rules for partial evaluation - of other \microzinc\ expressions to \nanozinc{}.} + of other \microzinc{} expressions to \nanozinc{}.} \end{figure*} Finally, the rules in \cref{fig:rew-rewrite-to-nzn-other} handle the evaluation of \variables{}, constants, conditionals and comprehensions. -For completeness, we give the details here. - -The (Ident) rule looks up a \variable{} in the environment and return its bound value (for constants) or the \variable{} itself. +The (Ident) rule looks up a \variable{} in the environment and return its fixed value (for constants) or the \variable{} itself. The (Const) rule simply returns the constant. The (If\(_T\)) and (If\(_F\)) rules evaluate the if condition and then return the result of the then or else branch appropriately. The (WhereT) rule evaluates the guard of a where comprehension and if true returns the resulting expression in a list. @@ -474,7 +506,7 @@ It returns the concatenation of the resulting lists with all the additional \nan Our prototype implementation of the \microzinc{}/\nanozinc{} framework consists of the following components. The \gls{compiler} translates \minizinc{} into a \gls{byte-code} encoding of \microzinc{}. -The compiler currently supports a significant subset of the full \minizinc\ language, with the missing features (such floating point values and complex output statements) requiring additional engineering effort but no new technology. +The compiler currently supports a significant subset of the full \minizinc{} language, with the missing features (such floating point values and complex output statements) requiring additional engineering effort but no new technology. The \gls{interpreter} evaluates \microzinc{} \gls{byte-code} and \nanozinc{} programs based on the \gls{rewriting} system introduced in this section. It can read \parameters{} from a file or via an \gls{api}. @@ -482,12 +514,10 @@ The \gls{interpreter} constructs the call to the \mzninline{main} function, and Memory management is implemented using reference counting, which lends itself well to the optimisations discussed in the next section. The interpreter is written in around 3.5kLOC of C++ to enable easy embedding into applications and other programming languages. -The framework has the ability to multiple \solvers{}. +The framework has the ability to support multiple \solvers{}. It can pretty-print the \nanozinc{} code to standard \flatzinc{}, so that any solver currently compatible with \minizinc{} can be used. Additionally, a direct C++ \gls{api} can be used to connect solvers directly, in order to enable incremental solving. We revisit this topic in \cref{ch:incremental}. - -\textbf{Python bindings} to the framework are provided to enable easy scripting. The source code for the complete system will be made available under an open source license. \todo{actually make source available} @@ -496,17 +526,18 @@ The source code for the complete system will be made available under an open sou The previous section introduced the basic evaluation model of \nanozinc: each call that has a corresponding \microzinc{} definition can be rewritten into a set of calls by evaluating the \microzinc{} code. This section looks at further steps that the system can perform in order to produce better, more compact \glspl{slv-mod}. -\subsection{Removing dead variables and constraints} +\subsection{Removing unused variables and constraints} The most basic form of simplification is to identify \variables{} that are not used by any call, and remove them. This is correct because the semantics of \nanozinc{} requires us to find values for all \variables{} such that all \constraints{} are \gls{satisfied} --- but if a \variable{} does not occur in any \constraint{}, we can pick any value for it. -The model without the \variable{} is therefore \gls{eqsat} with the original model. +The model without the unused \variable{} is therefore \gls{eqsat} with the original model. -Consider now the case where a \variable{} in \nanozinc is only used in its own auxiliary definitions (the constraints directly succeeding the declaration prepended by \texttt{↳}). +Consider now the case where a \variable{} in \nanozinc{} is only used in its attached \constraints{}. +The constraints directly succeeding the declaration prepended by \texttt{↳}. \begin{example}\label{ex:rew-absreif} - The following is a slight variation on the \minizinc{} fragment in \cref{ex:rew-absnzn}: + The following is a slight variation on the \minizinc{} fragment in \cref{ex:rew-absnzn}. \begin{mzn} constraint abs(x) > y \/ c; @@ -516,7 +547,8 @@ Consider now the case where a \variable{} in \nanozinc is only used in its own a The \constraint{} \mzninline{abs(x) > y} is now used in a disjunction. This means that instead of enforcing the \constraint{} globally, we need to create a \gls{reif}. Following the rewriting rules, the generated \nanozinc{} code will look very similar to the code generated in \cref{ex:rew-absnzn}, but with an additional \mzninline{bool_or} \constraint{} for the disjunction. - It uses a \variable \mzninline{b} that will be introduced for \mzninline{abs(x) > y}: + It uses a \variable{} \mzninline{b} that will be introduced for \mzninline{abs(x) > y}. + The \gls{rewriting} of this fragment will result in the following \nanozinc{} program. \begin{nzn} var true: c; @@ -534,12 +566,12 @@ Consider now the case where a \variable{} in \nanozinc is only used in its own a The \gls{reif} of \mzninline{abs(x) > y} is therefore not required. However, the \gls{rewriting} has to choose a particular order in which arguments are evaluated, so it is always possible that it already evaluated the left-hand side before ``noticing'' that the disjunction is true. - If the system now simplifies the constraint \mzninline{bool_or(b, c)} to \mzninline{true}, then the identifier \mzninline{b} will become unused outside its auxiliary definitions. + If the system now simplifies the constraint \mzninline{bool_or(b, c)} to \mzninline{true}, then the identifier \mzninline{b} will become unused outside its attached \constraints{}. It was only referenced from the \mzninline{bool_or} call. Removing \mzninline{b} leads to its defining constraint, \mzninline{int_gt_reif}, being removed. - This in turn means that \mzninline{z} is not referenced anywhere outside its auxiliary definitions + This in turn means that \mzninline{z} is not referenced anywhere outside its attached \constraints{}. It can also be removed together with its definition. - The resulting \nanozinc\ program is much more compact: + The resulting \nanozinc{} program is much more compact: \begin{nzn} var true: c; @@ -548,17 +580,18 @@ Consider now the case where a \variable{} in \nanozinc is only used in its own a \end{nzn} We assume here that \mzninline{c}, \mzninline{x} and \mzninline{y} are used in other parts of the model not shown here and therefore not removed. - Note how counting usage of \variables{} outside its auxiliary definitions allows us to remove the \mzninline{z} variable --- we could not simply have counted the usage of \mzninline{z} in all \constraints{} since the \constraint{} used to define it, \mzninline{int_abs(x, z)}, would have kept it alive. + Note how it is crucial to exclude the attached \constraints{} when counting the usage of \variables{}. + \mzninline{int_abs(x, z)}, the \constraint{} which merely defines \mzninline{z}, would otherwise force us to keep \mzninline{z} in the \nanozinc{} program, if it were included in the count. \end{example} -It is important to notice the difference between \constraints{} that appear at the top level and \constraints{} that appear as part of the auxiliary definitions of a \variable{}. -Top-level \constraint{} help define the problem, they are globally enforced and cannot be removed from the problem unless it can be proved that its relationship is already enforced. -\Constraints{} in auxiliary definitions, on the other hand, are used to define a \variable{}. -Auxiliary definitions generally occur from a functional relationship, like \mzninline{abs(x)} in the example, or from a \gls{reif}, like \mzninline{abs(x) > y} when used in the disjunction with \mzninline{c}. -In this thesis we will follow the same naming standard as \minizinc{} where a \gls{reif} of a constraint has the same name as the original constraint with \texttt{\_reif} appended. +It is important to notice the difference between \constraints{} that appear at the top level and \constraints{} that appear as part of the attached \constraints{} of a \variable{}. +Top-level \constraints{} help define the problem, they are globally enforced and cannot be removed from the problem unless it can be proved that its relationships are already enforced. +\Constraints{} attached to a \variable{}, on the other hand, are used to define a \variable{}. +\Constraints{} are generally attached when they stem from a functional relationship, like \mzninline{abs(x)} in the example, or from a \gls{reif}, like \mzninline{abs(x) > y} when used in the disjunction with \mzninline{c}. +In this thesis we will follow the same naming standard as \minizinc{}, where a \gls{reif} of a constraint has the same name as the original constraint with \texttt{\_reif} appended. \begin{example} - The importance of the use of auxiliary definitions when removing dead \variables{} and \constraints{} is demonstrated in the following example: + The importance of the use of attached \constraints{} when removing unused \variables{} and \constraints{} is demonstrated in the following \minizinc{} fragment. \begin{mzn} int: n; @@ -572,10 +605,10 @@ In this thesis we will follow the same naming standard as \minizinc{} where a \g The \gls{rewriting} of this \minizinc{} model will initially create the \mzninline{n} elements for the array comprehension. Each element is evaluated as a new \variable{} \mzninline{y} and a \constraint{} to ensure that \mzninline{y} is the multiplication of \mzninline{x} and \mzninline{i}. - Although \mzninline{n} variables are created, only the first \variable{} is constrained to be 10. All other \variables{} can thus be removed and the model will stay \gls{eqsat}. + Although \mzninline{n} variables are created, only the last \variable{} is constrained to be 10. All other \variables{} can thus be removed and the model will stay \gls{eqsat}. - In the \nanozinc{} version of this model, each of the multiplications \constraints{} will be added to the list of auxiliary \constraints{} of its corresponding \mzninline{y} \variable{}. - When, after evaluating the array access, all of those \variables{} except the first are detected to be unused, their removal triggers the removal of the subtraction \constraints{}. + In the \nanozinc{} version of this model, each of the multiplications \constraints{} will be added to the list of attached \constraints{} of its corresponding \mzninline{y} \variable{}. + When, after evaluating the array access, all of those \variables{} except the last are detected to be unused, their removal triggers the removal of the subtraction \constraints{}. For this example the current \minizinc{} compiler, version 2.5.5, will produce a \gls{slv-mod} that contains: @@ -586,7 +619,7 @@ In this thesis we will follow the same naming standard as \minizinc{} where a \g \end{itemize} \noindent{}This is despite the fact that the \domain{} of the \variable{} \mzninline{x} has already been \gls{fixed} to 10\@. - The \nanozinc{} system, can correctly detect that the \mzninline{y} \variables{} and multiplication \constraints{} are not required. + The \nanozinc{} system can correctly detect that the \mzninline{y} \variables{} and multiplication \constraints{} are not required. \end{example} \paragraph{Implementation} The removal of unused identifiers is taken care of by garbage collection in the interpreter. @@ -594,13 +627,14 @@ Since our prototype interpreter uses reference counting, it already accurately t \subsection{Constraint Propagation} -\Gls{propagation} is another important technique used to simplify the produced \nanozinc{}. -It allows us to tighten the \glspl{domain} of \variables{} in the \nanozinc{} and remove \constraints{} proven to hold. -This, in turn, offers another way that \variables{} can become unused. +\Gls{propagation} is the main inference technique used in \gls{cp} \solvers{}, as discussed in \cref{subsec:back-cp}. +At its core, \gls{propagation} simplifies the internal representation of the \gls{slv-mod}: it removes inconsistent values from \variable{} \domains{}, and it may be able to detect that certain \constraints{} are subsumed, which means that they can be removed safely. +Since a \nanozinc{} program is in fact quite similar to the internal representation of \gls{cp} \solver{}, we can use \gls{propagation} to simplify \nanozinc{}. When using \gls{propagation} for \nanozinc{} simplification, we have to carefully consider its effects. For instance, given the \constraint{} \mzninline{x > y}, with initial \domains{} \mzninline{x in 1..10, y in 1..10}, \gls{propagation} would result in the \domains{} being tightened to \mzninline{x in 2..10, y in 1..9}. -Note, however, that this may now prevent us from removing \mzninline{x} or \mzninline{y}: even if they later become unused, the tightened domains may impose a constraint on their definition. +Note, however, that this may now prevent us from removing \mzninline{x} or \mzninline{y}: even if they later become unused, the tightened \domains{} may impose a \constraint{} on their \variables{}. +When the \domain{} of a \variable{} is tighter than the bounds given by its defining expression, the \domain{} are said to be \gls{binding}. For instance, if \mzninline{x} is defined as \mzninline{abs(z)}, then any restriction on the \domain{} of \mzninline{x} constrains the possible values of \mzninline{z} through the \mzninline{abs} function. We therefore need to track whether the \domain{} of a \variable{} is the result of external \constraints{}, or is the consequence of its own definition. @@ -619,8 +653,9 @@ Equalities therefore present a valuable opportunity for model simplification, bu Consider the simple case of \mzninline{x=y} where one of the \variables{}, say \mzninline{x}, was a top-level variable introduced by the modeller, and not defined as the result of a function call. In that case, we can propagate the equality \constraint{} by replacing all occurrences of \mzninline{x} with \mzninline{y}, and remove the definition of \mzninline{x}. -The more complicated case for \mzninline{x=y} is when both \mzninline{x} and \mzninline{y} are the result of function calls, \eg\ from a \constraint{} such as \mzninline{constraint f(a)=g(b)}. -The corresponding \nanozinc{} code looks like this: +The more complicated case for \mzninline{x=y} is when both \mzninline{x} and \mzninline{y} are the result of function calls. +For example, a \constraint{} such as \mzninline{constraint f(a)=g(b)}. +Assuming functions \mzninline{f} and \mzninline{g} are directly rewritten into relational forms \mzninline{f_rel} and \mzninline{g_rel}, the corresponding \nanozinc{} code looks as follows. \begin{nzn} var int: x; @@ -635,8 +670,8 @@ This would trigger the removal of the corresponding definition \mzninline{f_rel( Rather, the \interpreter{} needs to pick one of the two definitions and \emph{promote} it to top-level status. Let us assume that the \interpreter{} decides to replace \mzninline{y} by \mzninline{x}. \mzninline{y} is then globally replaced by \mzninline{x}, and its declaration is removed. -The \interpreter{} moves all auxiliary \constraints{} from \mzninline{y} into the list of top-level \constraints{}, and then removes the \mzninline{int_eq} \constraint{}. -The resulting \nanozinc{} looks like this: +The \interpreter{} moves all attached \constraints{} from \mzninline{y} into the list of top-level \constraints{}, and then removes the \mzninline{int_eq} \constraint{}. +The following \nanozinc{} program would be its result. \begin{nzn} var int: x; @@ -645,46 +680,46 @@ The resulting \nanozinc{} looks like this: \end{nzn} The process of equality propagation is similar to unification in logic programming \autocite{warren-1983-wam}. -However, since equations in \minizinc\ always concern scalar variables rather than terms, we can restrict ourselves to this simple substitution scheme and leave the further checking of the resulting equalities to the target \solver{}. +However, since equations in \minizinc{} always concern scalar variables rather than terms, we can restrict ourselves to this simple substitution scheme and leave the further checking of the resulting equalities to the target \solver{}. \paragraph{Implementation} \Gls{rewriting} a function call that has a \microzinc{} definition and \gls{rewriting} a constraint due to \gls{propagation} are very similar. The \interpreter{} therefore simply interleaves both forms of \gls{rewriting}. -Efficient \gls{propagation} engines ``wake up'' a \gls{propagator} only when one of its \variables{} has received an update (\ie\ when its \domain{} has been shrunk). +Efficient \gls{propagation} engines ``wake up'' a \gls{propagator} only when one of its \variables{} has received an update (\ie{} when its \domain{} has been shrunk). To enable this, the \interpreter{} needs to keep a data structure linking \variables{} to the \constraints{} where they appear (in addition to the reverse links from calls to the \variables{} in their arguments). These links do not take part in the reference counting. Together with its current \domain{}, each \variable{} in the interpreter also contains a Boolean flag. -This flag signifies whether the \gls{domain} of the \variable{} is an additional constraint. +This flag signifies whether the \domain{} of the \variable{} is \gls{binding}. When the flag is set, the \variable{} cannot be removed, even when the reference count is zero. -This happens when a \constraint{} that does not define the variable changes its \gls{domain}. -This \constraint{} might thereafter be removed, if it now proven to hold, but its effects will still be enforced. -If, however, any defining \constraint{} further tightens the \gls{domain}, then its constraint is no longer constraining. -The flag can then be unset and the variable can potentially be removed. +This flag is set when the \domain{} of a \variable{} is tightened by a \constraint{} that is not attached to the \variable{}. +This \constraint{} may then become subsumed after \gls{propagation} and can then be removed. +Its meaning is now completely captured by the \domains{} of the \variables{}. +If, however, any defining \constraint{} further tightens the \domain{}, then it is is no longer \gls{binding}, because it is again fully implied by its defining \constraints{}. +The flag can then be unset and the \variable{} can potentially be removed. \subsection{Delayed Rewriting} -\gls{propagation} might change \variables{}. -It might shrink their \domains{} or even fix them to a single value. -When this happens for the arguments of a call, a more specific \gls{decomp} might become available. -It is therefore important to evaluate calls when all possible information is available to create efficient \nanozinc{}. +\Gls{propagation} can tighten \domains{} of \variables{} or even fix them to a single value. +When this happens for the arguments of a call, a more specific \gls{decomp} may become available. +As discussed in \cref{subsec:back-delayed-rew}, it is therefore important to evaluate calls when all possible information is available to create efficient \glspl{slv-mod}. -In our \microzinc{}/\nanozinc{} system, we allow predicates and functions to be annotated as potential candidates for \gls{del-rew}. -Any annotated \constraint{} is handled by the (CallPredicate) rule rather than the (Call) rule, which means that it is simply added as a call into the \nanozinc{} code, without evaluating its body. -When \gls{propagation} reaches a fix-point, all annotations are removed from the current \nanozinc{} program, and evaluation resumes with the predicate bodies. +In our \microzinc{}/\nanozinc{} system, we allow functions to be annotated as potential candidates for \gls{del-rew}. +Any annotated \constraint{} is handled by the (CallNative) rule rather than the (Call) rule, which means that it is simply added as a call into the \nanozinc{} code, without evaluating its body. +When \gls{propagation} reaches a \gls{fixpoint}, all annotations are removed from the current \nanozinc{} program, and evaluation resumes with the function bodies. This crucial optimisation enables rewriting in multiple \emph{phases}. For example, a \cmodel{} targeted at a \gls{mip} \solver{} is rewritten into Boolean and reified \constraints{}, whose definitions are annotated to be delayed. -The \nanozinc{} program can then be fully simplified by \gls{propagation}, before the Boolean and reified \constraints{} are rewritten into \gls{native} linear \constraints suitable for \gls{mip}. +The \nanozinc{} program can then be fully simplified by \gls{propagation}, before the Boolean and reified \constraints{} are rewritten into \gls{native} linear \constraints{} suitable for \gls{mip}. \subsection{Common Sub-expression Elimination}% \label{sec:rew-cse} -\Gls{cse} is a crucial technique to avoid duplications in a \gls{model}. +As shown in \cref{subsec:back-cse}, \gls{cse} is a crucial technique to avoid duplications in a \gls{model}. In our architecture \gls{cse} is performed on two levels. -The \microzinc{} \interpreter{} performs \gls{cse} through memorisation. +The \microzinc{} \interpreter{} performs \gls{cse} through memoisation. It maintains a table that maps a function identifier and the call arguments to its result for each call instruction that is executed. Before it executes a call instruction, it searches the table for an entry with identical function identifier and call arguments. Since functions in \microzinc{} are guaranteed to be pure and total, whenever the table search succeeds, the result can be used instead of executing the call instruction. @@ -699,7 +734,7 @@ Earlier in the process, however, the \minizinc{} to \microzinc{} \compiler{} can \end{mzn} In this case a static \gls{compiler} analysis could detect that the same syntactical expression, \mzninline{abs(x)}, occurs twice. - Since these expressions are guaranteed to have equivalent result, this analysis could then be able to hoist into a let expression. + Since these expressions are guaranteed to have equivalent results, this analysis could then hoist the shared expression into a \gls{let}. \begin{mzn} constraint let { var int: y = abs(x) } in @@ -709,55 +744,81 @@ Earlier in the process, however, the \minizinc{} to \microzinc{} \compiler{} can \end{example} As such, the \compiler{} can enforce sharing of common sub-expressions before evaluation begins. -It is worth noting that, although the \gls{cse} approach based on memorisation would also covers the static example above, this method can potentially avoid many dynamic table look-ups. +It is worth noting that, although the \gls{cse} approach based on memorisation would also cover the static example above, this method can potentially avoid many dynamic table look-ups. Since the static analysis is cheap, it is valuable to combine both approaches. The static approach can be further improved by \emph{inlining} function calls, since that may expose more calls as being syntactically equal. \paragraph{Implementation} In the implementation of our \microzinc{} \interpreter{}, \gls{cse} directly interacts with the reference counting mechanism. -It is clear that a new reference must created when an entry of the \gls{cse} is reused in \nanozinc{}, but the entries of the table themselves are also essentially references. -However, when a \variable{} is no longer referenced in the \nanozinc{}, we still expect it to be removed, even if it is still part of the \gls{cse} table. -As such, we treat \gls{cse} entries as \emph{weak} references. -They reference an object, but do not affect its liveness (\ie{} increase its reference count). +It is clear that when an expression is reused by returning it from the \gls{cse} table, this creates a new reference to that expression. +However, the entries in the \gls{cse} table should not keep the corresponding variables alive. +Otherwise, no \variable{} would ever become unused. +Therefore, we treat \gls{cse} entries as weak references. +They reference a \variable{}, but do not affect its liveness (\ie{} increase its reference count). If an entry is found in the \gls{cse} table with a reference count of zero, it is removed from the table and its contents are not used. The usage of a \gls{cse} table can be costly. -It requires a lot of memory and the time to find entries can be significant in the overall process. +The memory requirement and time spent finding entries can be significant in the overall process. This is aggravated by the fact that \minizinc{} has many places where a function's body only contains a single call to a function that is not used anywhere else. Although this structure offers flexibility when defining \minizinc{} libraries, it results in many \gls{cse} entries that differ only by their function identifier. +For example, the \mzninline{knapsack} \gls{global} is defined in the \minizinc{} standard library as follows. + +\begin{mzn} +predicate knapsack( + array[int] of int: w, + array[int] of int:p, + array[int] of var int:x, + var int: W, var int: P +) = + assert( + index_set(w) = index_set(p) /\ index_set(w) = index_set(x), + "index set of weights must be equal to index set of profits and index set of items", + ) /\ assert( + lb_array(w) >= 0, + "weights must be non-negative", + ) /\ assert( + lb_array(p) >= 0, + "profits must be non-negative", + ) /\ fzn_knapsack(w, p, x, W, P); +\end{mzn} + +After checking the \parameter{} arguments, the function merely returns the result of \mzninline{fzn_knapsack}. +This function is implemented in the \solver{} library to provide the implementation of the \mzninline{knapsack} \gls{global}. +The extra function layer ensures that these checks can be performed independently of the \solver{} library and that the \solver{} can make certain assumptions about the function arguments. +But because the modeller will only use \mzninline{knapsack}, it does not make sense to also create \gls{cse} entries for \mzninline{fzn_knapsack}, as it will never be used. + Therefore, we have added an additional flag to our call instruction. -This flag controls whether the call is subject \gls{cse}. +This flag controls whether the call is subject to \gls{cse}. This allows us to disable the \gls{cse} when it is guaranteed to be unnecessary. \subsection{Constraint Aggregation}% \label{subsec:rew-aggregation} In our new system it is still possible to support \gls{aggregation}. -We aggregate \constraints{} by combining \constraints{} connected through functional definitions, eliminating the need for \glspl{ivar}. +We aggregate \constraints{} by combining \constraints{} connected through attached \constraints{}, eliminating the need for \glspl{ivar} to which they are attached. To aggregate a certain kind of \constraint{}, it is marked as a \gls{native} \constraint{}. -These \constraints will now be kept as temporary functional definitions in the \nanozinc{} program. -These functional definitions are kept in the \nanozinc{} program until a top-level (relational) \constraint{} is posted that uses these definitions. -Once this happens, the interpreter will employ dedicated \gls{aggregation} logic to visit the functional definitions and combine their constraints. +These functional definitions are kept in the \nanozinc{} program until a top-level \constraint{} is posted that uses the \variables{} to which they are attached. +Once this happens, the interpreter will employ dedicated \gls{aggregation} logic to visit the attached \constraints{} and combine them. The top-level \gls{constraint} is then replaced by the combined \gls{constraint}. When the \glspl{ivar} become unused, they will be removed using the normal mechanisms. \begin{example} For example, let us reconsider the linear constraint from \cref{ex:back-agg}: \mzninline{x + 2*y <= z}. - The constraint will result in the following \nanozinc{}: + The constraint will result in the following \nanozinc{}. \begin{nzn} var int: x; var int: y; var int: z; var int: i1; - ↳ constraint '*'(y, 2); + ↳ constraint '*'(y, 2, i1); var int: i2; - ↳ constraint '+'(x, i1); + ↳ constraint '+'(x, i1, i2); constraint '<='(i2, z); \end{nzn} \mzninline{*} and \mzninline{+} were marked as \gls{native} \constraints{} as they can be aggregated into a linear \constraint{}. Their functional definitions are put in place in the \nanozinc{}, and then a top-level \mzninline{<=} \constraint{} is created. The \interpreter{} will then recursively visit the arguments of the \constraints{}. - The \constraints{} are then combined into a single linear \constraint{}: + The \constraints{} are then combined into the following linear \constraint{}. \begin{mzn} constraint int_lin_le([1,2,-1], [x,y,z], 0) @@ -767,23 +828,23 @@ When the \glspl{ivar} become unused, they will be removed using the normal mecha \section{Experiments}\label{sec:rew-experiments} We have created a prototype implementation of the architecture presented in the preceding sections. -It consists of a \compiler{} from \minizinc{} to \microzinc{}, and an incremental \microzinc{} \interpreter{} producing \nanozinc{}. +It consists of a \compiler{} from \minizinc{} to \microzinc{}, and a \microzinc{} \interpreter{} producing \nanozinc{}. The system supports a significant subset of the full \minizinc{} language; notable features that are missing are support for set and float variables, option types, and compilation of model output expressions and annotations. We will release our implementation under an open-source license and can make it available to the reviewers upon request. \todo{I suppose it is time to release the prototype.} The implementation is not optimised for performance yet, but was created as a faithful implementation of the developed concepts, in order to evaluate their suitability and provide a solid baseline for future improvements. -In the following we present experimental results on basic \gls{rewriting} performance as well as an comparison with \glspl{interpreter} of other programming languages to demonstrate the efficiency gains that are possible thanks to the new architecture. +In the following we present experimental results on basic \gls{rewriting} performance as well as a comparison with \glspl{interpreter} of other programming languages to demonstrate the efficiency gains that are possible thanks to the new architecture. A description of the used computational environment, \minizinc{} instances, and versioned software has been included in \cref{ch:benchmarks}. -For our first experiment, we selected 17 models from the annual \minizinc\ challenge and compiled 5 instances of each model to \flatzinc{}, using the current \minizinc\ release version 2.5.5 and the new prototype system. -In both cases we use the standard \minizinc\ library of global constraints (\ie\ we decompose those constraints rather than using solver primitives, in order to stress-test the flattening). -We measured pure flattening time, \ie\ without time required to parse and type check in version 2.5.5, and without time required for compilation to \microzinc\ in the new system (compilation is usually very fast). +For our first experiment, we selected 17 models from the annual \minizinc{} challenge and compiled 5 instances of each model to \flatzinc{}, using the current \minizinc{} release version 2.5.5 and the new prototype system. +In both cases we use the standard \minizinc{} library of \glspl{global} (\ie{} we decompose those \constraints{} rather than using \solver{} \gls{native} \constraints{}, in order to stress-test the \gls{rewriting}). +We measured pure \gls{rewriting} time, \ie{} without time required to parse and type check in version 2.5.5, and without time required for compilation to \microzinc{} in the new system (compilation is usually very fast). Times are averages of 10 runs. -\Cref{sfig:rew-compareruntime} compares the flattening time for each of the 100 instances. +\Cref{sfig:rew-compareruntime} compares the \gls{rewriting} time for each of \instances{}. Points below the line indicate that the new system is faster. -On average, the new system achieves a speed-up of 5.5, with every \instance{} achieving at least 2.5 speedup and multiple \instances{} with a speedup of over \(100\). +On average, the new system achieves a speed-up of 5.5, with every \instance{} achieving at least 2.5 speedup and multiple \instances{} with a speedup of over 100. In terms of memory performance (\cref{sfig:rew-comparemem}), version 2.5.5 can sometimes still outperform the new prototype. We have identified that the main memory bottlenecks are our currently unoptimised implementations of \gls{cse} lookup tables and argument vectors. These are very encouraging results, given that we are comparing a largely unoptimised prototype to a mature piece of software. @@ -801,8 +862,8 @@ These are very encouraging results, given that we are comparing a largely unopti \includegraphics[width=\columnwidth]{assets/img/rew_compare_memory} \caption{\label{sfig:rew-comparemem}Maximum resident set size (kbytes)} \end{subfigure} - \caption{\label{fig:4-runtime}Performance on flattening MiniZinc Challenge - instances. \minizinc\ 2.5.5 (x-axis) vs new architecture (y-axis), log-log + \caption{\label{fig:4-runtime}Performance on \gls{rewriting} MiniZinc Challenge + \instances{}. \minizinc{} 2.5.5 (x-axis) vs new architecture (y-axis), log-log plot. Dots below the line indicate the new system is better.} \end{figure} @@ -836,18 +897,18 @@ We are convinced, however, that we can get closer to its performance given the r % \section{Summary}% % \label{sec:rew-summary} -% In this chapter, we introduced a systematic view of the execution of \minizinc{}, revisiting the rewriting from high-level \minizinc\ to solver-level \flatzinc{}. -% We first introduced the intermediate languages \microzinc{} and \nanozinc{} and explained how \minizinc\ can be transformed into a set of \microzinc\ definitions and a \nanozinc\ program. -% We then, crucially, discussed how to partially evaluate a \nanozinc\ program using \microzinc\ definitions and present formal definitions of the rewriting rules applied during partial evaluation. +% In this chapter, we introduced a systematic view of the execution of \minizinc{}, revisiting the rewriting from high-level \minizinc{} to solver-level \flatzinc{}. +% We first introduced the intermediate languages \microzinc{} and \nanozinc{} and explained how \minizinc{} can be transformed into a set of \microzinc{} definitions and a \nanozinc{} program. +% We then, crucially, discussed how to partially evaluate a \nanozinc{} program using \microzinc{} definitions and present formal definitions of the rewriting rules applied during partial evaluation. % Continuously applying these rules would result in a correct solver-level model, but it is unlikely to be the best model for the solver. % We, therefore, discuss multiple techniques to improve the solver-level constraint model during the partial evaluation of \nanozinc{}. % First, we introduce a novel technique to eliminate all unused variables and constraints: we track all constraints that are introduced only to define a variable. % This means we can keep an accurate count of when a variable becomes unused by counting only the references to a variable in constraints that do not help define it. -% Then, we discuss the use of \gls{propagation} during the partial evaluation of the \nanozinc\ program. +% Then, we discuss the use of \gls{propagation} during the partial evaluation of the \nanozinc{} program. % This technique can help shrink the domains of the decision variable or even combine variables known to be equal. % When a redefinition of a constraint requires the introspection into the current domain of a variable, it is often important to have the tightest possible domain. -% Hence, we discuss how in choosing the next \nanozinc\ constraint to rewrite, the interpreter can sometimes delay the rewriting of certain constraints to ensure the most amount of information is available. +% Hence, we discuss how in choosing the next \nanozinc{} constraint to rewrite, the interpreter can sometimes delay the rewriting of certain constraints to ensure the most amount of information is available. % \Gls{cse}, our next optimisation technique, ensures that we do not create or evaluate the same constraint or function twice and reuse variables where possible. % Finally, the last optimisation technique we discuss is the use of \gls{aggregation}. % The use of \gls{aggregation} ensures that individual functional constraints can be collected and combined into an aggregated form. @@ -855,5 +916,5 @@ We are convinced, however, that we can get closer to its performance given the r % This optimisation is very important for \gls{mip} solvers. % Finally, we test the described system using an experimental implementation. -% We compare this experimental implementation against the current \minizinc\ interpreter, version 2.5.3, and look at both runtime and its memory usage. -% Although the experimental implementation there are instances where the experimental implementation uses more memory than the current \minizinc\ interpreter, it clearly outperforms the current \minizinc\ interpreter in terms of time. +% We compare this experimental implementation against the current \minizinc{} interpreter, version 2.5.3, and look at both runtime and its memory usage. +% Although the experimental implementation there are instances where the experimental implementation uses more memory than the current \minizinc{} interpreter, it clearly outperforms the current \minizinc{} interpreter in terms of time. diff --git a/chapters/3_rewriting_preamble.tex b/chapters/3_rewriting_preamble.tex index b20b5dd..ef2bd8e 100644 --- a/chapters/3_rewriting_preamble.tex +++ b/chapters/3_rewriting_preamble.tex @@ -1,6 +1,4 @@ -\noindent{}\todo{This probably needs a ``why?''} - -In this chapter, we revisit the \gls{rewriting} of \minizinc{} into \glspl{slv-mod}. +\noindent{}In this chapter, we develop a new architecture for \gls{rewriting} \minizinc{} into \glspl{slv-mod}. We describe a new \textbf{systematic view of the execution of \minizinc{}} and build on this to propose a new tool chain. We show how this tool chain allows us to: @@ -14,6 +12,8 @@ We show how this tool chain allows us to: \end{itemize} +\noindent{}In addition to providing the first formalisation and systematic description of rewriting MiniZinc, we will see that the resulting architecture is also significantly more efficient and flexible than the current \minizinc{} system. + This chapter is organised as follows. \Cref{sec:rew-arch} provides an quick overview of the proposed architecture. \Cref{sec:rew-micronano} introduces the core of our \gls{rewriting} system using the \microzinc{} and \nanozinc{} languages. These new languages provide a new intermediate representation that enables more efficient \gls{rewriting}. diff --git a/chapters/4_half_reif.tex b/chapters/4_half_reif.tex index 3066123..0a972c9 100644 --- a/chapters/4_half_reif.tex +++ b/chapters/4_half_reif.tex @@ -66,7 +66,7 @@ The flattener then enforces a \constraint{} \mzninline{pred_reif(...,b)}, which \end{enumerate} In contrast, the authors introduce \gls{half-reif}. -\gls{half-reif} follows from the idea that in many cases it might be sufficient to use the logical implication of an expression, \mzninline{b -> pred(...)}, instead of the logical equivalence, \mzninline{b <-> pred(...)}. +\gls{half-reif} follows from the idea that in many cases it is sufficient to use the logical implication of an expression, \mzninline{b -> pred(...)}, instead of the logical equivalence, \mzninline{b <-> pred(...)}. Flattening with \gls{half-reif} is an approach that improves upon all these weaknesses of flattening with \emph{full} reification: \begin{enumerate} @@ -574,7 +574,7 @@ It is, however, not always safe to do so. It is, therefore, not safe to assume that all sides of the if-then-else expressions are evaluated in \rootc{} context. \end{example} -Using the \changepos{} transformation for sub-expression contexts is safe, but it might place a large burden on the \solver{}. +Using the \changepos{} transformation for sub-expression contexts is safe, but it places a large burden on the \solver{}. The solver is likely to perform better when the direct constraint predicate is used. To detect situation where the sub-expression are only used in an array access or if-then-else expression we introduce the \mayberootc{} context. @@ -629,13 +629,13 @@ During the flattening process the contexts assigned to the different expressions \todo{Replace the previous example. It was too long and complex.} \end{example} -A consequence of the use of \gls{half-reif}, shown in the example, is that it might form so called \emph{implication chains}. +A consequence of the use of \gls{half-reif}, shown in the example, is that it forms so called \emph{implication chains}. This happens when the right hand side of an implication is half reifed and a new Boolean variable is created to represent the variable. Instead, we could have directly posted the half-reified constraint using the left hand side of the implication as its control variable. In \cref{subsec:half-compress} we present a new post-processing method, \emph{chain compression}, that can be used to eliminate these implication chains. The flattening with \gls{half-reif} also interacts with some of the optimisation methods used during the flattening process. -Most importantly, \gls{half-reif} has to be considered when using \gls{cse} and \gls{propagation} might change the context of expression. +Most importantly, \gls{half-reif} has to be considered when using \gls{cse} and \gls{propagation} can change the context of expression. In \cref{subsec:half-cse} we will discuss how \gls{cse} can be adjusted to handle \gls{half-reif}. Finally, in \cref{subsec:half-dyn-context} we will discuss how the context in which a expression is executed can be adjusted during the flattening process. @@ -761,7 +761,7 @@ Clearly, a \constraint{} and its negation cannot both hold at the same time. \subsection{Dynamic Context Switching}% \label{subsec:half-dyn-context} -In \cref{subsec:half-?root} we discussed the fact that the correct context of an expression might not be known when analysing a \microzinc{} model. +In \cref{subsec:half-?root} we discussed the fact that the correct context of an expression is not always known when analysing a \microzinc{} model. Its context depends on data that is only known at an instance level. The same situation can be caused by \gls{propagation}. @@ -979,7 +979,8 @@ Since there are many more constraints, the introduced optimisation mechanisms ha Finally, statistics for the flattening the instances is shown in \cref{subtab:half-flat-bool}. Like linearisation, the usage of \gls{half-reif} significantly reduces number of constraints and \glspl{reif}. -Different, however, is that the booleanisation library is explicitly defined in terms of \glspl{half-reif}.Some constraints might manually introduce \mzninline{_imp} call as part of their definition. +Different, however, is that the booleanisation library is explicitly defined in terms of \glspl{half-reif}. +Some \constraints{} manually introduce \mzninline{_imp} call as part of their definition. Furthermore, the usage of chain compression does not seem to have any effect. Since all \glspl{half-reif} are defined in terms of clauses, the implications normally removed using chain compression are instead aggregated into bigger clauses. Surprisingly, the usage of \gls{half-reif} also reduces the flattening time as it reduces the workload. @@ -1006,7 +1007,7 @@ For \gls{gecode}, the usage of \gls{half-reif} does not seem to impact its solvi Although we would have hoped that propagators for \glspl{half-reif} would be more efficient and reduce the number of propagators scheduled in general. Neither number of instances solved, nor the solving time required improved. A single instance, however, is negatively impacted by the change; an optimal solution for this instance is no longer found. -We expect that this instance might have benefited from the increased Boolean propagation that is caused by full \gls{reif}. +We expect that this \instance{} has benefited from the increased Boolean propagation that is caused by full \gls{reif}. Overall, these results do not show any significant positive or negative effects in \gls{gecode}'s performance when using \gls{half-reif}. When using \gls{cplex} the usage of \gls{half-reif} is clearly a positive one. @@ -1015,9 +1016,9 @@ The same linearised instances when using the \gls{cbc} solver seem to have the o Even though it reduces the time required to prove that two instances are unsatisfiable, it can no longer find six optimal solutions. These results are hard to explain. In general, we would expect the reduction of constraints in a \gls{mip} instance would help the \gls{mip} solver. -However, we can imagine that the removed constraints might in some cases help the \gls{mip} solver. +However, we can imagine that the removed constraints in some cases help the \gls{mip} solver. An important technique used by \gls{mip} solvers is to detect certain pattern, such as cliques, during the pre-processing of the \gls{mip} instance. -Some patterns might only be detected when using a full \gls{reif}. +Some patterns can only be detected when using a full \gls{reif}. Furthermore, the performance of \gls{mip} solvers is often dependent on the order and form in which the constraints are given. \todo{Is there a citation for this?} With the usage of the \gls{aggregation} and \gls{del-rew}, these can be exceedingly different when using \gls{half-reif}. diff --git a/chapters/5_incremental.tex b/chapters/5_incremental.tex index 3029cdc..ff8b793 100644 --- a/chapters/5_incremental.tex +++ b/chapters/5_incremental.tex @@ -21,7 +21,7 @@ This extension is based on the construct introduced in \minisearch\ \autocite{re A meta-search in \minisearch\ typically solves a given \minizinc\ model, performs some calculations on the solution, adds new constraints and then solves again. Most \gls{meta-search} definitions in \minisearch\ consist of two parts. -The first part is a declarative definition of any restriction to the search space that the \gls{meta-search} algorithm might apply, called a \gls{neighbourhood}. +The first part is a declarative definition of any restriction to the search space that the \gls{meta-search} algorithm can apply, called a \gls{neighbourhood}. In \minisearch\ these definitions can make use of the function: \mzninline{function int: sol(var int: x)}, which returns the value that variable \mzninline{x} was assigned to in the previous solution (similar functions are defined for Boolean, float and set variables). This allows the \gls{neighbourhood} to be defined in terms of the previous solution. In addition, a neighbourhood predicate will typically make use of the random number generators available in the \minizinc\ standard library. @@ -233,7 +233,7 @@ If we are not in the first run for a stage we add the branch and bound cut to tr Finally, we set the objective to be the objective for the current stage. There is not always a clear order of importance for different objectives in a problem. -In these cases we might instead look for a number of diverse solutions and allow the user to pick the most acceptable options. +In these cases we instead look for a number of diverse solutions and allow the user to pick the most acceptable options. The following fragment shows a \gls{meta-search} for the Pareto optimality of a pair of objectives: \begin{mzn} diff --git a/chapters/5_incremental_preamble.tex b/chapters/5_incremental_preamble.tex index 8b47180..01a10cb 100644 --- a/chapters/5_incremental_preamble.tex +++ b/chapters/5_incremental_preamble.tex @@ -17,7 +17,7 @@ Examples of these methods are: Here we aim to provide a set of solutions that are sufficiently different from each other in order to give human decision makers an overview of the solution space. Diversity can be achieved by repeatedly solving a problem instance with different objectives. \item Interactive Optimisation \autocite{belin-2014-interactive}. - In some scenarios it might be useful to allow a user to directly provide feedback on solutions found by the solver. + In some scenarios it can be useful to allow a user to directly provide feedback on solutions found by the solver. The feedback in the form of constraint are added back into the problem, and a new solution is generated. Users may also take back some earlier feedback and explore different aspects of the problem to arrive at the best solution that suits their needs. \end{itemize} diff --git a/chapters/6_conclusions.tex b/chapters/6_conclusions.tex index 0c0163e..5544839 100644 --- a/chapters/6_conclusions.tex +++ b/chapters/6_conclusions.tex @@ -55,7 +55,7 @@ This framework enables many avenues of further research. For one, the formal rewriting rules presented open up possibilities to more extended formal reasoning about \cmls{}. This could potentially lead to the ability to proof certain properties of the rewriting process. Additionally, the framework introduces reasoning about the transition from \minizinc{} to \solver{} specification as two different levels: the transition from \minizinc{} to \microzinc{} and the evaluation of the \microzinc{} to create a \solver{} specification. -In our prototype we have presented techniques to help improve the quality of the \solver{} specification, but many improvements to these techniques and other techniques might be beneficial. +In our prototype we have presented techniques to help improve the quality of the \solver{} specification, but many improvements to these techniques and other techniques may be beneficial. Finally, we use our language \nanozinc{} to track \constraints{} that are introduced to define a \variable{}. Although we have showed how this helps when a \variable{} becomes unused, we have yet to discover its uses within the \solvers{} themselves. In \gls{cp} \solvers, for example, it is no longer has to required propagate these defining \constraints{} once their \variable{} has been fixed (under certain circumstances). @@ -73,7 +73,7 @@ We noted that the usage of \gls{half-reif} interacts with some of the existing o Foremost, \gls{cse} can no longer always reuse the same results for identical \constraint{}, it must now consider the context of the \constraint{}. For \constraints{} were \gls{cse} is triggered in multiple context, we propose rules to either use the result that is acceptable in both contexts, or create such a result. Using this adjustment we ensure that identical \constraints{} still have a single result. -The usage of \constraint{} \gls{propagation} might change the context of a \constraint{} during the rewriting process. +The usage of \gls{propagation} can change the context of a \constraint{} during the rewriting process. We described how we can communicate this change through the control variables of (half-)\glspl{reif}. Lastly, the introduction of a \gls{half-reif} on the right hand side of an logical implication essentially introduce layered implications. In this case, the created control variable forms an extra barrier in during propagation where the left hand side of the implication could have been used directly. @@ -112,25 +112,25 @@ In our experiments, we have shown that his method is highly effective. Even compared to an ``oracle'' approach, where the changes are merely read and not computed, this approach only slightly underperforms. Meanwhile, the time required to compile the meta-search description is negligible. -It might not always be possible to extend a \solver{}, for these cases we have defined a second method. +It is not always possible to extend a \solver{}, for these cases we have defined a second method. This method significantly reduces the overhead of rewriting models that incrementally changes. In particular we defined an interface for \cmls{}. A modeller can repeatedly add \constraints{} and \variables{} to the model and, crucially, the additions to the model can retracted in reverse order through the use of trailing. Each of these changes to the \constraint{} model is incrementally applied to the \solver{} specification. Since multiple generations of meta-optimisation share large parts of their \constraint{} model, this significantly reduces the amount work required in the rewriting process. -As an additional improvement, the changes observed in the \solver{} specification might also be incrementally applied within the \solver{}. +As an additional improvement, the changes observed in the \solver{} specification can be incrementally applied within the \solver{}. Ideally, the solver can fully support the incremental changes made to the specification. This avoids the overhead of re-initialisation and allows the solver to retain all search information. -Otherwise, the solver might still be warm-started. +Otherwise, the solver can still be warm-started. Instead of starting the search without any information, the \solver{} is given information about the previous solution to speed up it search. Although our experiments show that this method is not as effective as the initial method. It is still a significant improvement over the recompilation approach. -The improvements offered by these new method might spark future research. +The improvements offered by these new method may spark future research. Primarily, it will allow and promote the usage of meta-optimisation methods in \cmls{} for new problems. -New meta-optimisation techniques might require extensions of the methods presented. +New meta-optimisation techniques could require extensions of the methods presented. It would even be possible to revisit existing research that uses the combination of \cmls{} and meta-optimisation to study improvements that these methods offer. \paragraph{Summary} In conclusion, this thesis presented an architecture for the rewriting of high-level \cmls{}.