Index: /reasoner/reasoner.tex
===================================================================
--- /reasoner/reasoner.tex	(revision 103)
+++ /reasoner/reasoner.tex	(revision 104)
@@ -945,12 +945,17 @@
 \subsection{Constraint variables}\label{sectConstraintVariables}
 
-Constraint variables can be created by taking the respective default/actual variable, performing the variable substitution with $\variableMapping$ and, if available, a respective value for \IVMLself, turning the resulting expression into a constraint and adding it to the set of other constraints $\otherConstraints$. Moreover, the relationship between the underlying variable $v$ and the constraint must be recorded for efficient update of the constraint base upon value change (cf. Algorithm \ref{algVarChange}). Recording happens only if $v$ is defined, which may not be the case if this algorithm is called while processing container values.
+In IVML, the type \IVML{Constraint} exists, which allows defining variables, compound slots or containers of constraints. As for usual variables, the value of such a constraint variable can change unless frozen, i.e., the configuration process can influence the actual set of constraints to be checked on an IVML model. The important difference in translating 
+
+There are four basic translation patterns, three are shown below. The basic idea is to translate the (default) value, a constraint expression, directly into a constraint performing appropriate variable substitutions. For constraint containers, we translate the element values, which represent constraint expressions. If either pattern is nested within a compound (not shown for constraint containers below), the translation substitution must particularly replace \IVML{self} by the actual compound variable.
 
 \grayPara{
 \begin{gather*}
-   \patternDerivation{v}{v}
+   \patternDerivation{\IVML{Constraint } v = ex\IVML{;}}{\varSubstitution{ex}{\variableMapping}}\\
+   \patternDerivation{\IVML{containerOf(Constraint)} = \IVML{\{}ex_1 , \ldots, ex_n\IVML{\}}}{\varSubstitution{ex_1}{\variableMapping}, \ldots, \varSubstitution{ex_n}{\variableMapping}}\\
+   \patternDerivation{\IVML{Compound } C \IVML{ \{Constraint } v = ex \IVML{\}}\IVML{; } C v}{\varSubstitution{ex}{\IVML{self}=v, \variableMapping}}
 \end{gather*}
 }
 
+In more details, Algorithm \ref{algCreateConstraintVariableConstraint} translates a constraint (if not undefined, including the IVML \IVML{null} case, i.e., a de-configured constraint variable). Algorithm \ref{algCreateConstraintVariableConstraint} creates constraints through variable substitution with $\variableMapping$ and, if available, a respective value for \IVMLself (here $f$), turning the resulting expression into a constraint and adding it to the set of other constraints $\otherConstraints$. Moreover, the relationship between the underlying variable $v$ and the constraint must be recorded for efficient update of the constraint base upon value change (cf. Algorithm \ref{algVarChange}). Recording happens only if $v$ is defined, which may not be the case if this algorithm is called while processing container values.
 
 \begin{algorithm}[H]
@@ -958,11 +963,12 @@
   \KwIn{constraint expression $c$, actual value for \IVMLself{} $f$, variable $v$}
   \KwData{other constraints $\otherConstraints$, relevant constraints $\relevantConstraints$}
-
-      $c \assng \createConstraint{\varSubstitutionSelfVarMapping{c}{f}}$\;
-      $add(\otherConstraints, \set{c}, true)$\;
-      \If{$v \neq \undef$}{
-         \MISSING{map v to c for dynamic value type change}\;
-          $\relevantConstraints \assng \relevantConstraints \addMap \mapEntry{c}{v}$
-      } 
+      \If {$c \neq \undef$} {
+        $c \assng \createConstraint{\varSubstitutionSelfVarMapping{c}{f}}$\;
+        $add(\otherConstraints, \set{c}, true)$\;
+        \If{$v \neq \undef$}{
+           \MISSING{map v to c for dynamic value type change}\;
+            $\relevantConstraints \assng \relevantConstraints \addMap \mapEntry{c}{v}$
+        } 
+      }
  \caption{Creating constraints for constraint variables (\IVML{createConstraintVariableConstraint}).}\label{algCreateConstraintVariableConstraint}
 \end{algorithm}
