Index: /reasoner/reasoner.tex
===================================================================
--- /reasoner/reasoner.tex	(revision 13)
+++ /reasoner/reasoner.tex	(revision 14)
@@ -167,10 +167,53 @@
   
   \ForAll{$d \iterAssng varDeclarations(p)$}{ %translateDeclarationDefaults
+      $translateDeclarationDefaults(d, decision(cfg, d), \undef)$\;
+  }
+ \caption{Translating project default value expressions to constraints (\IVML{translateDefaults}).}\label{algTranslateDefaults}
+\end{algorithm}
+
+\begin{algorithm}[H]
+  \SetAlgoLined
+  \KwIn{configuration $cfg$, declaration $d$, variable $v$, access $ca$}
+  \KwData{constraint $base$, variable mapping $m$, internal constraints $c_i$, attribute constraints $c_a$, constraint variables $c_v$, default constraints $c_d$, deferred default constraints $c_dd$}
+  
       $c_i \assng c_i \cup translateDerivedDatatypeConstraints(d)$\;
-      $c_a \assng c_a \cup translateAnnotationDefaults(cfg, d, \undef)$\;      
-      \TBD{fill}\;
-  }
- \caption{Translating default value expressions to constraints (\IVML{translateDefaults, translateDeclarationDefaults}).}\label{algTranslateDefaults}
-\end{algorithm}
+      $c_a \assng c_a \cup translateAnnotationDefaults(cfg, d, \undef)$\;
+      $t \assng type(d)$; $dflt \assng default(d)$; $defltC \assng c_d$\;
+      \If{$isCompound(t)$}{
+            \uIf{$ deflt \neq \undef $}{
+                $t = type(deflt)$\;
+            }
+            \TBD{$resolveCompoundDefaultValueForDeclaration(d, v, ca, t)$}\;
+            \uIf{$ deflt \neq \undef $}{
+                $ deflt \assng deflt|_{self=d, varMap}$\;
+            }
+        } \ElseIf{$ deflt \neq \undef $}{
+          \uIf{$ isContainer(type(d)) $}{
+              \ForAll{$u \iterAssng \TBD{usedTypes(deflt)}$}{
+                   \TBD{$collectCompoundsCollection(d, u)$}\;
+              }
+           }\ElseIf{$ca \neq \undef$}{
+               \uIf{$self \in deflt \vee \TBD{isOverridenSlot(d)}$}{
+                   $defltC \assng c_dd$
+               }
+               $deflt \assng deflt|_{self=ca}$
+           }
+        }
+        $c_c \assng c_c \cup \TBD{collectionCompoundConstraints(d, v, \undef)}$\;
+        \If{$isContainer(t)$}{
+            $\TBD{collectionInternalConstraints(d, \undef)}$\;
+        }
+      \If{$ deflt \neq \undef $}{
+          \uIf{$isConstraint(t)$}{
+              \uIf{$ ca \neq \undef $}{
+                  $c_v \assng c_v \cup (\createConstraint{deflt}, v)$\;
+              }
+          }\Else{
+              $defltC \assng defltC \cup \createDefaultConstraint{\IVML{assign}(\left.\begin{cases}ca, & \text{if } defltC = c_d \\ d, &\text{else}\end{cases}\right\}, deflt)}$\;
+          }
+      }
+ \caption{Translating default value expressions to constraints (\IVML{translateDeclarationDefaults}).}\label{algTranslateDefaults}
+\end{algorithm}
+
 
 \subsection{Derived types}\label{sectDerivedTypes}
