Index: /ModelExtender/src/de/uni_hildesheim/sse/model_extender/in/DimacsReader.java
===================================================================
--- /ModelExtender/src/de/uni_hildesheim/sse/model_extender/in/DimacsReader.java	(revision 227)
+++ /ModelExtender/src/de/uni_hildesheim/sse/model_extender/in/DimacsReader.java	(revision 228)
@@ -29,5 +29,15 @@
 public class DimacsReader implements Closeable {
 
-    private static final Pattern VARIABLE_PATTERN = Pattern.compile("^c ([0-9]+) ([\\S]+)$");
+    /**
+     * Specifies whether Modeltranslator or Satyr was used to generate orginal Dimacs files. 
+     * <ul>
+     * <li>true = DIMACS is generated by ModelTranslator</li>
+     * <li>false = DIMACS is generated by Satyr</li>
+     * </ul>
+     */
+    private static final boolean USE_MADELTRANSLATOR = false;
+    private static final Pattern VARIABLE_PATTERN_MODELTRANSLATOR = Pattern.compile("^c ([0-9]+) ([\\S]+)$");
+    private static final Pattern VARIABLE_PATTERN_SATYR = Pattern.compile("^c var ([\\S]+) ([0-9]+)$");
+    
     
     private static final Pattern META_PATTERN = Pattern.compile("^p CNF ([0-9]+) ([0-9]+)$", Pattern.CASE_INSENSITIVE);
@@ -104,4 +114,5 @@
      * @throws MalformedFileException If the file is not correctly formatted.
      */
+    @SuppressWarnings("unused")
     private void readVariableDeclarations() throws IOException, MalformedFileException {
         String line;
@@ -132,20 +143,28 @@
         int numFoundVariables = variables.entrySet().size();
         if (numFoundVariables != numDeclaredVariables) {
-            StringBuilder message = new StringBuilder();
-            message.append("Number of found variables is not equal to specified number in meta line:\n");
-            message.append("\tSpecified: ").append(numDeclaredVariables).append("\n");
-            message.append("\tFound: ").append(numFoundVariables).append("\n");
-            
-            for (int i = 1; i <= Math.max(numFoundVariables, numDeclaredVariables); i++) {
-                if (i > numDeclaredVariables) {
-                    message.append("Undeclared variable: ").append(i).append(" ")
-                        .append(variables.get(i).getName()).append("\n");
+            if (USE_MADELTRANSLATOR) {
+                StringBuilder message = new StringBuilder();
+                message.append("Number of found variables is not equal to specified number in meta line:\n");
+                message.append("\tSpecified: ").append(numDeclaredVariables).append("\n");
+                message.append("\tFound: ").append(numFoundVariables).append("\n");
+                
+                for (int i = 1; i <= Math.max(numFoundVariables, numDeclaredVariables); i++) {
+                    if (i > numDeclaredVariables) {
+                        message.append("Undeclared variable: ").append(i).append(" ")
+                            .append(variables.get(i).getName()).append("\n");
+                    }
+                    if (!variables.containsKey(i)) {
+                        message.append("Not found variable ").append(i).append("\n");
+                    }
                 }
-                if (!variables.containsKey(i)) {
-                    message.append("Not found variable ").append(i).append("\n");
+                
+                throw new MalformedFileException(message.toString());
+            } else {
+                for (int i = 1; i <= numDeclaredVariables; i++) {
+                    if (!variables.containsKey(i)) {
+                        variables.put(i, new DecisionVariableDeclaration("_X" + i, BooleanType.TYPE, model));
+                    }
                 }
             }
-            
-            throw new MalformedFileException(message.toString());
         }
     }
@@ -190,5 +209,6 @@
      */
     private boolean parseVariableLine(String line) {
-        Matcher matcher = VARIABLE_PATTERN.matcher(line);
+        Matcher matcher = USE_MADELTRANSLATOR ? VARIABLE_PATTERN_MODELTRANSLATOR.matcher(line)
+            : VARIABLE_PATTERN_SATYR.matcher(line);
         
         boolean isVariableLine = false;
@@ -198,6 +218,6 @@
             
             try {
-                int num = Integer.parseInt(matcher.group(1));
-                String variableName = matcher.group(2);
+                int num = Integer.parseInt(matcher.group(USE_MADELTRANSLATOR ? 1 : 2));
+                String variableName = matcher.group(USE_MADELTRANSLATOR ? 2 : 1);
                 
                 DecisionVariableDeclaration variable =
