Add paragraph on interaction between delaying and aggregation

This commit is contained in:
Jip J. Dekker 2021-05-26 18:21:57 +10:00
parent e358213997
commit 9e7118dd6a
No known key found for this signature in database
GPG Key ID: 517DF4A00618C9C3

View File

@ -1901,6 +1901,17 @@ Note that this heuristic does not guarantee that \variables{} have their
tightest possible \gls{domain}. One delayed \constraint{} can still influence
the \glspl{domain} of \variables{} used by other delayed \constraints{}.
Delaying the rewriting of constraints might, however, interfere with the
constraint aggregation. Since aggregation is eagerly performed only when a
\constraint{} is first encountered, it cannot aggregate any constraints that
follow from delayed values. For example, if when aggregating Boolean clauses
comes across an expression that needs to be reified, then a new Boolean
\variable{} is created and the reified \constraint{} is delayed. The problem
is, however, that if the definition of this reified constraint turn out to be
in terms of Boolean clauses as well, then this definition could have been
aggregated as well. Because the flattener does not revisit the aggregation of
variables, this does not happen.
\subsection{FlatZinc Optimisation}%
\label{subsec:back-fzn-optimisation}