diff --git a/src/main/java/de/tlc4b/TLC4B.java b/src/main/java/de/tlc4b/TLC4B.java
index 9ce03d6c5def446b69bcb3935bd6c906630a43ea..025dccbcf1dc84f2002d2a96a9942308582f8c0c 100644
--- a/src/main/java/de/tlc4b/TLC4B.java
+++ b/src/main/java/de/tlc4b/TLC4B.java
@@ -71,24 +71,31 @@ public class TLC4B {
 
 	}
 
-
 	private void printResults(TLCResults results, boolean createTraceFile) {
-		//options
+		// options
 		System.out.println("Used Options");
 		System.out.println("| Number of workers: " + TLC4BGlobals.getWorkers());
 		System.out.println("| Invariants check: " + TLC4BGlobals.isInvariant());
-		System.out.println("| Deadlock check: " + TLC4BGlobals.isDeadlockCheck());
+		System.out.println("| Deadlock check: "
+				+ TLC4BGlobals.isDeadlockCheck());
 		System.out.println("| Assertion check: " + TLC4BGlobals.isAssertion());
 		System.out.println("| Find Goal check: " + TLC4BGlobals.isGOAL());
-		System.out.println("| LTL formulas check: " + TLC4BGlobals.isCheckLTL());
-		System.out.println("| Partial invariant evaluation: " + TLC4BGlobals.isPartialInvariantEvaluation());
-		System.out.println("| Lazy constants setup: " + !TLC4BGlobals.isForceTLCToEvalConstants());
-		System.out.println("| Agressive well-definedness check: " + TLC4BGlobals.checkWelldefinedness());
-		System.out.println("| Prob constant setup: " + TLC4BGlobals.isProBconstantsSetup());
-		System.out.println("| Symmetry used: " + TLC4BGlobals.useSymmetry());
+		System.out
+				.println("| LTL formulas check: " + TLC4BGlobals.isCheckLTL());
+		System.out.println("| Partial invariant evaluation: "
+				+ TLC4BGlobals.isPartialInvariantEvaluation());
+		System.out.println("| Lazy constants setup: "
+				+ !TLC4BGlobals.isForceTLCToEvalConstants());
+		System.out.println("| Agressive well-definedness check: "
+				+ TLC4BGlobals.checkWelldefinedness());
+		System.out.println("| Prob constant setup: "
+				+ TLC4BGlobals.isProBconstantsSetup());
+		System.out.println("| Symmetry reduction: "
+				+ TLC4BGlobals.useSymmetry());
 		System.out.print("| MIN Int: " + TLC4BGlobals.getMIN_INT());
 		System.out.print(" | MAX Int: " + TLC4BGlobals.getMAX_INT());
-		System.out.println(" | Deferret set size: " + TLC4BGlobals.getDEFERRED_SET_SIZE());
+		System.out.println(" | Standard deferret set size: "
+				+ TLC4BGlobals.getDEFERRED_SET_SIZE());
 		System.out.println("--------------------------------");
 		System.out.println("Parsing time: " + StopWatch.getRunTime("Parsing")
 				+ " ms");
@@ -96,7 +103,8 @@ public class TLC4B {
 				+ " ms");
 		System.out.println("Model checking time: "
 				+ results.getModelCheckingTime() + " sec");
-		//System.out.println("Number of workers: " + TLCGlobals.getNumWorkers());
+		// System.out.println("Number of workers: " +
+		// TLCGlobals.getNumWorkers());
 		System.out.println("States analysed: "
 				+ results.getNumberOfDistinctStates());
 		System.out.println("Transitions fired: "
@@ -162,6 +170,8 @@ public class TLC4B {
 				TLC4BGlobals.setAssertionCheck(false);
 			} else if (args[index].toLowerCase().equals("-wdcheck")) {
 				TLC4BGlobals.setWelldefinednessCheck(true);
+			} else if (args[index].toLowerCase().equals("-symmetry")) {
+				TLC4BGlobals.setSymmetryUse(true);
 			} else if (args[index].toLowerCase().equals("-tool")) {
 				TLC4BGlobals.setTool(false);
 			} else if (args[index].toLowerCase().equals("-tmp")) {
diff --git a/src/main/java/de/tlc4b/analysis/Renamer.java b/src/main/java/de/tlc4b/analysis/Renamer.java
index 410402e97e47822aec963e574c2982e6329ce381..4b397ecd55ea77a21aa5793bcb5a467758263610 100644
--- a/src/main/java/de/tlc4b/analysis/Renamer.java
+++ b/src/main/java/de/tlc4b/analysis/Renamer.java
@@ -67,6 +67,7 @@ public class Renamer extends DepthFirstAdapter {
 		KEYWORDS.add("WF_");
 		KEYWORDS.add("WITH");
 		KEYWORDS.add("STATE");
+		KEYWORDS.add("DEF");
 
 		KEYWORDS.add("Init");
 		KEYWORDS.add("Next");
diff --git a/src/main/java/de/tlc4b/analysis/UsedStandardModules.java b/src/main/java/de/tlc4b/analysis/UsedStandardModules.java
index 68b521dda5b53d3817627dd146f2d51876b628d4..5c081db5301e16c0901a739f194e4bb161db3e65 100644
--- a/src/main/java/de/tlc4b/analysis/UsedStandardModules.java
+++ b/src/main/java/de/tlc4b/analysis/UsedStandardModules.java
@@ -132,6 +132,12 @@ public class UsedStandardModules extends DepthFirstAdapter {
 		this.usedStandardModules = new HashSet<STANDARD_MODULES>();
 		this.typechecker = typechecker;
 
+		
+		
+		if (TLC4BGlobals.useSymmetry()) {
+			usedStandardModules.add(STANDARD_MODULES.TLC);
+		}
+		
 		List<PDefinition> definitions = tlaModule.getAllDefinitions();
 		if (definitions != null) {
 			for (PDefinition pDefinition : definitions) {
diff --git a/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java b/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
index 2e93d96b142e7e0eb78f7e9ab7b01168494c1cd9..41bc5a9a8795102b740b2f93c2723c1c8fd7adee 100644
--- a/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
+++ b/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
@@ -1,6 +1,7 @@
 package de.tlc4b.prettyprint;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -98,11 +99,35 @@ public class TLAPrinter extends DepthFirstAdapter {
 		printSpecFormula();
 		printLTLFormulas();
 
+		printSymmetry();
+		
+		
 		tlaModuleString.append("====");
 
 		printConfig();
 	}
 
+	private void printSymmetry() {
+
+		if(TLC4BGlobals.useSymmetry() && machineContext.getDeferredSets().size()>0){
+			
+			tlaModuleString.append("Symmetry == ");
+			Collection<Node> values = machineContext.getDeferredSets().values();
+			ArrayList<Node> array = new ArrayList<Node>(values);
+			for (int i = 0; i < array.size(); i++) {
+				Node node = array.get(i);
+				tlaModuleString.append("Permutations(");
+				node.apply(this);
+				tlaModuleString.append(")");
+				if(i<array.size()-1){
+					tlaModuleString.append(" \\cup ");
+				}
+			}
+			tlaModuleString.append("\n");
+			//Symmetry == Permutations(Clients) \cup Permutations(Resources)
+		}
+	}
+
 	private void printSpecFormula() {
 
 		if (this.configFile.isSpec()) {
@@ -235,6 +260,11 @@ public class TLAPrinter extends DepthFirstAdapter {
 				configFileString.append(assignments.get(i).getString(renamer));
 			}
 		}
+		if(TLC4BGlobals.useSymmetry()&& machineContext.getDeferredSets().size()>0){
+			configFileString.append("SYMMETRY Symmetry\n");
+		}
+		
+		
 		if (TLC4BGlobals.isPartialInvariantEvaluation()) {
 			configFileString.append("CONSTANTS\n");
 			configFileString.append("Init_action = Init_action\n");