Index: /reasoner/reasoner.tex
===================================================================
--- /reasoner/reasoner.tex	(revision 113)
+++ /reasoner/reasoner.tex	(revision 114)
@@ -50,6 +50,6 @@
 \newcommand\varSubstitutionSelfVarMapping[2]{\varSubstitutionOtherVarMapping{#1}{\IVMLself = #2}}
 \newcommand\tabAlg[1]{Alg.\ref{#1}}
-\newcommand\tabAlgLine[2]{Alg.\ref{#1},\ref{#2}}
-\newcommand\tabAlgLines[3]{Alg.\ref{#1},\ref{#2}-\ref{#3}}
+\newcommand\tabAlgLine[2]{Alg.\ref{#1} (\ref{#2})}
+\newcommand\tabAlgLines[3]{Alg.\ref{#1} (\ref{#2}-\ref{#3})}
 \newcommand\tabAlgFollow[0]{ $\rightarrow$ }
 \newcommand\grayPara[1]{\noindent\adjustbox{bgcolor=gray!20,minipage=[t]{\linewidth}}{#1}\linebreak}
@@ -555,5 +555,5 @@
     \While {$|base| > 0 \wedge \neg hasTimeout \wedge \neg stop$} { \label{algEvalLoopLoopStart}
         $c \assng pop(base)$\; \label{algEvalLoopPop}
-        $setCurrentScope(\scopeAssignments, c)$\;
+        $setAssignmenttScope(\scopeAssignments, c)$\; \label{algEvalLoopSetScope}
         $\usedVariables \assng \setEmpty$\; \label{algEvalLoopClear}
         $setAssignmentState(e, \isDefaultConstraint{c})$\; \label{algEvalLoopAssngState}
@@ -620,5 +620,5 @@
   \KwData{variable mapping $\variableMapping$, constraint variables $\otherConstraints$, default (deferred) constraints $\defaultConstraints$ and $\deferredDefaultConstraints$, relevant constraints $\relevantConstraints$, incremental $inc$}
   
-      $t \assng type(d)$; $dflt \assng default(d)$; $f \assng \undef$\; \label{algTranslateDeclarationDecl}
+      $t \assng type(d)$; $dflt \assng default(d)$; $f \assng \undef$; $c_m\assng NONE$\; \label{algTranslateDeclarationDecl}
       $translateDerivedDatatypeConstraints(d, t)$\; \label{algTranslateDeclarationDerivedDatatype}
       \uIf{$inc$} {
@@ -632,4 +632,5 @@
       \uIf{$isCompound(t)$}{
             $f \assng d$\; \label{algTranslateDeclarationTranslateSelf1}
+            $c_m \assng translateCompoundDeclaration(d, v, ca, t, REGISTER)$\; \label{algTranslateDeclarationRegisterCompound}
        } \uElseIf{$dflt \neq \undef \wedge \neg inc$}{
           \lIf{$ca \neq \undef$}{$s \assng ca$} \label{algTranslateDeclarationTranslateInCompound}
@@ -648,5 +649,5 @@
       }
       \uIf{$isCompound(t)$}{
-            $translateCompoundDeclaration(d, v, ca, t, dflt)$\; \label{algTranslateDeclarationTranslateCompound}
+            $translateCompoundDeclaration(d, v, ca, t, c_m)$\; \label{algTranslateDeclarationTranslateCompound}
        } \uElseIf{$ isContainer(t) $}{ \label{algTranslateDeclarationHasDefault}
             $translateContainerDeclaration(d, v, ca, t)$\; \label{algTranslateDeclarationTranslateContainer}
@@ -713,20 +714,24 @@
 \begin{algorithm}[H]
   \SetAlgoLined
-  \KwIn{declaration $d$, variable $v$, compound access $ca$, default value type $t$, constraint $dflt$}
+  \KwIn{declaration $d$, variable $v$, compound access $ca$, default value type $t$, mode $m$}
   \KwData{constraints $\otherConstraints$, variable mapping $\variableMapping$}
-
+   
+  $next \assng NONE$\;
   \If{$\neg alreadyProcessed(\variableMapping, t)$} {
-    $recordProcessed(\variableMapping, t)$\;
-    $pushContext(\variableMapping, d, v \neq \undef)$\;
-    $transferTypeExcludes(\variableMapping, t)$\;
-    $e \assng \createExpression{d}$\;
-    $registerCompoundMapping(t, ca, v, e, type(value(v)))$\;
-    $translateCompoundContent(d, v, t, ca)$\;
-    \If{$dflt \neq \undef$} { \label{algTranslateCompoundSubstStart}
-        $dflt \assng \varSubstitutionSelfVarMapping{dflt}{d}$
-    }\label{algTranslateCompoundSubstEnd}
-    $popContext(\variableMapping)$;
+    \If{$m = ANYWAY \vee m = REGISTER$}{
+      $recordProcessed(\variableMapping, t)$\;
+      $pushContext(\variableMapping, d, v \neq \undef)$\;
+      $transferTypeExcludes(\variableMapping, t)$\;
+      $e \assng \createExpression{d}$\;
+      $registerCompoundMapping(t, ca, v, e, type(value(v)))$\;
+      $next \assng TRANSLATE$\;
+    }
+    \If{$m = ANYWAY \vee m = TRANSLATE$}{
+        $translateCompoundContent(d, v, t, ca)$\;
+        $popContext(\variableMapping)$;
+        $next \assng NONE$\;
+    }
   }
-  \Return{$dflt$}
+  \Return{$next$}
  \caption{Translating compound declarations (\IVML{translateCompoundDeclaration}).}\label{algTranslateCompoundDeclaration}
 \end{algorithm}
@@ -861,25 +866,26 @@
 \begin{algorithm}[H]
   \SetAlgoLined
-  \KwIn{declaration $d$, (specific) type $t$, declared type $u$, access $ca$}
+  \KwIn{declaration $d$, (specific) type $t$, declared type $u$, access $ca$, mode $m$}
   \KwData{deferred default constraints $\deferredDefaultConstraints$}
 
     \If{$\neg alreadyProcessed(\variableMapping, t)$}{
-      $recordProcessed(\variableMapping, t)$\;
-
-      $l\assng \createExpression{\IVMLMeta{var}(t)}$\;
-
-      $e\assng\closedCases{ca, & \text{if } ca \neq \undef\\\createExpression{d}, &\text{else}}$\; \label{algTranslateDefaultsCompoundContainerInitE}
-      \uIf{$isSequence(type(d))$} {
-        $e\assng\createExpression{\IVML{asSet}(e)}$\; \label{algTranslateDefaultsCompoundContainerAsSet}
-      }
-      \uIf{$isNested(type(d))$} {
-        $e\assng\createExpression{\IVML{flatten}(e)}$\; \label{algTranslateDefaultsCompoundContainerFlatten}
-      }
-      \uIf{$u\neq t$} {
+        $recordProcessed(\variableMapping, t)$\;
+
+        $l\assng \createExpression{\IVMLMeta{var}(t)}$\;
+
+        $e\assng\closedCases{ca, & \text{if } ca \neq \undef\\\createExpression{d}, &\text{else}}$\; \label{algTranslateDefaultsCompoundContainerInitE}
+        \uIf{$isSequence(type(d))$} {
+          $e\assng\createExpression{\IVML{asSet}(e)}$\; \label{algTranslateDefaultsCompoundContainerAsSet}
+        }
+        \uIf{$isNested(type(d))$} {
+          $e\assng\createExpression{\IVML{flatten}(e)}$\; \label{algTranslateDefaultsCompoundContainerFlatten}
+        }
+        \uIf{$u\neq t$} {
             $e\assng\createExpression{\IVML{selectByKind}(e, t)}$\; \label{algTranslateDefaultsCompoundContainerCast}
-      }
-
-      $pushContext(\variableMapping, \undef, e, l, true)$\;
-      $registerCompoundMapping(t, l, \undef, d, t)$\; \label{algTranslateDefaultsCompoundContainerMapping}
+        }
+
+        $pushContext(\variableMapping, \undef, e, l, true)$\;
+        $registerCompoundMapping(t, l, \undef, d, t)$\; \label{algTranslateDefaultsCompoundContainerMapping}
+      
       $translateCompoundContent(l, \undef, t, \closedCases{\undef, & \text{if } ca = \undef\\l & \text{else}})$\; \label{algTranslateDefaultsCompoundContainerContent}
       $popContext()$\;
@@ -1156,5 +1162,5 @@
 %\begin{adjustbox}{angle=90}
 \centering
-\begin{tabular}{|p{3.5cm}|c||p{6cm}|p{3.5cm}|}
+\begin{tabular}{|p{3cm}|c||p{4cm}|p{3.5cm}|}
 \hline
 \textbf{IVML concept} & \textbf{Spec} & \textbf{Transformation Path} & \textbf{Test}\\
@@ -1177,4 +1183,6 @@
 
 Interfaces & 2.2.4.3 & no specific support needed & If1, If2\\
+
+re-assignment  & 2.1.4, 3.1.4 & \tabAlgLine{algVarChange}{algVarChangeScope}, \tabAlgLines{algEvalLoop}{algEvalLoopClearScope}{algEvalLoopSetScope} & Sc1, Sc2, Sc3\\
 
 \hline
@@ -1446,4 +1454,5 @@
 F & Reference\\
 If & Interface\\
+Sc & Scope, re-assignment\\
 \hline
 \end{tabular}
@@ -1459,5 +1468,5 @@
 %\begin{adjustbox}{angle=90}
 \centering
-\begin{tabular}{|l|p{12cm}|}
+\begin{tabular}{|l|p{12.5cm}|}
 \hline
 \textbf{Id} & \textbf{Test model}\\
@@ -1508,5 +1517,5 @@
 %\begin{adjustbox}{angle=90}
 \centering
-\begin{tabular}{|l|p{12cm}|}
+\begin{tabular}{|l|p{12.5cm}|}
 \hline
 \textbf{Id} & \textbf{Test model}\\
@@ -1563,5 +1572,5 @@
 %\begin{adjustbox}{angle=90}
 \centering
-\begin{tabular}{|l|p{12cm}|}
+\begin{tabular}{|l|p{12.5cm}|}
 \hline
 \textbf{Id} & \textbf{Test model}\\
@@ -1582,4 +1591,7 @@
 If1 & \class{interfaces/Frozen.ivml}\\
 If2 & \class{interfaces/Unfrozen.ivml}\\
+Sc1 & \class{integer/VariableFailTest.ivml}\\
+Sc2 & \class{compounds/slotReassignment/Cfg.ivml}\\
+Sc3 & \class{constraintVariables/refinedConstraints/refinedConstraints.ivml}\\
 \hline
 \end{tabular}
