diff --git a/src/main/java/de/tla2b/analysis/RecursiveFunktion.java b/src/main/java/de/tla2b/analysis/RecursiveFunktion.java
index 6496f4cef454dfdeda39249dd7142f370125aa92..0f8f0c259191e6338f075c296c5b1d7b7748ff8d 100644
--- a/src/main/java/de/tla2b/analysis/RecursiveFunktion.java
+++ b/src/main/java/de/tla2b/analysis/RecursiveFunktion.java
@@ -20,7 +20,7 @@ public class RecursiveFunktion extends BuiltInOPs {
 			throws NotImplementedException {
 		def = n;
 		this.rfs = rfs;
-		evalDef();
+		//evalDef();
 	}
 
 
diff --git a/src/main/java/de/tla2b/analysis/SpecAnalyser.java b/src/main/java/de/tla2b/analysis/SpecAnalyser.java
index 45c28d535dd540bcc791114628bcdff714dc703a..7602508f2295ea4a7a62092ec2618145951d7190 100644
--- a/src/main/java/de/tla2b/analysis/SpecAnalyser.java
+++ b/src/main/java/de/tla2b/analysis/SpecAnalyser.java
@@ -70,7 +70,7 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants,
 	// surrounding operator
 	private ArrayList<String> definitionMacros = new ArrayList<String>();
 
-	private ArrayList<RecursiveFunktion> recursiveFunctions = new ArrayList<RecursiveFunktion>();
+	private ArrayList<OpDefNode> recursiveFunctions = new ArrayList<OpDefNode>();
 
 	private ArrayList<RecursiveDefinition> recursiveDefinitions = new ArrayList<RecursiveDefinition>();
 
@@ -578,9 +578,7 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants,
 				switch (getOpCode(o.getOperator().getName())) {
 				case OPCODE_rfs: { // recursive Function
 					bDefinitionsSet.remove(def);
-					ifThenElseNodes.remove(o.getArgs()[0]);
-					RecursiveFunktion rf = new RecursiveFunktion(def, o);
-					recursiveFunctions.add(rf);
+					recursiveFunctions.add(def);
 					return;
 				}
 				}
@@ -588,17 +586,17 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants,
 		}
 	}
 
-	public void evalIfThenElse() {
-		boolean b = false;
-		for (int i = 0; i < ifThenElseNodes.size() && !b; i++) {
-			OpApplNode node = ifThenElseNodes.get(i);
-			TLAType t = (TLAType) node.getToolObject(TYPE_ID);
-			if (t.getKind() != BOOL)
-				b = true;
-		}
-		if (b)
-			definitionMacros.add(IF_THEN_ELSE);
-	}
+//	public void evalIfThenElse() {
+//		boolean b = false;
+//		for (int i = 0; i < ifThenElseNodes.size() && !b; i++) {
+//			OpApplNode node = ifThenElseNodes.get(i);
+//			TLAType t = (TLAType) node.getToolObject(TYPE_ID);
+//			if (t.getKind() != BOOL)
+//				b = true;
+//		}
+//		if (b)
+//			definitionMacros.add(IF_THEN_ELSE);
+//	}
 
 	public ArrayList<LetInNode> getGlobalLets() {
 		return this.globalLets;
@@ -632,7 +630,7 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants,
 		return usedDefinitions;
 	}
 
-	public ArrayList<RecursiveFunktion> getRecursiveFunctions() {
+	public ArrayList<OpDefNode> getRecursiveFunctions() {
 		return recursiveFunctions;
 	}
 
diff --git a/src/main/java/de/tla2b/analysis/UsedExternalFunctions.java b/src/main/java/de/tla2b/analysis/UsedExternalFunctions.java
index c73b870bb6438b4cc2f2dfa43a3b00535188d8ee..8fabe8f168cdae4700e6f5bd8e1a2e53064c68d4 100644
--- a/src/main/java/de/tla2b/analysis/UsedExternalFunctions.java
+++ b/src/main/java/de/tla2b/analysis/UsedExternalFunctions.java
@@ -1,21 +1,15 @@
 package de.tla2b.analysis;
 
 import java.util.HashSet;
-import java.util.Hashtable;
 import java.util.Set;
 
-import tla2sany.semantic.ASTConstants;
-import tla2sany.semantic.AssumeNode;
 import tla2sany.semantic.ExprNode;
 import tla2sany.semantic.ExprOrOpArgNode;
-import tla2sany.semantic.LetInNode;
 import tla2sany.semantic.ModuleNode;
 import tla2sany.semantic.OpApplNode;
 import tla2sany.semantic.OpDefNode;
-import tla2sany.semantic.SemanticNode;
-import tlc2.tool.BuiltInOPs;
 
-public class UsedExternalFunctions extends BuiltInOPs implements ASTConstants {
+public class UsedExternalFunctions extends AbstractASTVisitor {
 
 	public enum EXTERNAL_FUNCTIONS {
 		CHOOSE
@@ -31,65 +25,34 @@ public class UsedExternalFunctions extends BuiltInOPs implements ASTConstants {
 			SpecAnalyser specAnalyser) {
 		usedExternalFunctions = new HashSet<UsedExternalFunctions.EXTERNAL_FUNCTIONS>();
 
-		AssumeNode[] assumes = moduleNode.getAssumptions();
-		for (int i = 0; i < assumes.length; i++) {
-			AssumeNode assume = assumes[i];
-			visitSemanticNode(assume.getAssume());
-		}
+		visitAssumptions(moduleNode.getAssumptions());
 
 		for (OpDefNode def : specAnalyser.getUsedDefinitions()) {
-			visitSemanticNode(def.getBody());
+			visitDefinition(def);
 		}
 
 	}
 
-	private void findExternalFunctions(Hashtable<Integer, SemanticNode> table) {
-		for (SemanticNode sNode : table.values()) {
-			if (sNode instanceof OpApplNode) {
-				OpApplNode opApplNode = (OpApplNode) sNode;
-				int kind = opApplNode.getOperator().getKind();
-				if (kind == BuiltInKind) {
-					switch (getOpCode(opApplNode.getOperator().getName())) {
-					case OPCODE_case: {
-						usedExternalFunctions.add(EXTERNAL_FUNCTIONS.CHOOSE);
-					}
-					case OPCODE_bc: {
-						usedExternalFunctions.add(EXTERNAL_FUNCTIONS.CHOOSE);
-					}
-					}
-
-				}
-			}
+	@Override
+	public void visitBuiltInNode(OpApplNode n) {
+		switch (getOpCode(n.getOperator().getName())) {
+		case OPCODE_case:
+		case OPCODE_uc:
+		case OPCODE_bc: {
+			usedExternalFunctions.add(EXTERNAL_FUNCTIONS.CHOOSE);
+		}
 		}
-	}
-
-	private void visitSemanticNode(SemanticNode s) {
-		if (s == null)
-			return;
-		if (s instanceof OpApplNode) {
-			OpApplNode opApplNode = (OpApplNode) s;
-			int kind = opApplNode.getOperator().getKind();
-			if (kind == BuiltInKind) {
-				switch (getOpCode(opApplNode.getOperator().getName())) {
-				case OPCODE_case:
-				case OPCODE_bc:
-				case OPCODE_uc: {
-					usedExternalFunctions.add(EXTERNAL_FUNCTIONS.CHOOSE);
-					break;
-				}
-				}
-
-			}
-			for (SemanticNode arg : opApplNode.getArgs()) {
-				visitSemanticNode(arg);
-			}
 
+		ExprNode[] in = n.getBdedQuantBounds();
+		for (ExprNode exprNode : in) {
+			visitExprNode(exprNode);
 		}
 
-		SemanticNode[] children = s.getChildren();
-		if (children != null) {
-			for (SemanticNode semanticNode : children) {
-				visitSemanticNode(semanticNode);
+		ExprOrOpArgNode[] arguments = n.getArgs();
+		for (ExprOrOpArgNode exprOrOpArgNode : arguments) {
+			// exprOrOpArgNode == null in case the OTHER construct
+			if (exprOrOpArgNode != null) {
+				visitExprOrOpArgNode(exprOrOpArgNode);
 			}
 		}
 	}
diff --git a/src/main/java/de/tla2b/pprint/BMachinePrinter.java b/src/main/java/de/tla2b/pprint/BMachinePrinter.java
index 952d3923019cee23e29f4287fcff3ddfb47fe8e3..f9499be280814826142d90b47f56b3ac48399c86 100644
--- a/src/main/java/de/tla2b/pprint/BMachinePrinter.java
+++ b/src/main/java/de/tla2b/pprint/BMachinePrinter.java
@@ -77,7 +77,7 @@ public class BMachinePrinter extends AbstractExpressionPrinter implements
 		this.definitionMacro = specAnalyser.getDefinitionMacros();
 		this.bDefinitions = specAnalyser.getBDefinitions();
 		this.letParams = specAnalyser.getLetParams();
-		this.recursiveFunktions = specAnalyser.getRecursiveFunctions();
+		//this.recursiveFunktions = specAnalyser.getRecursiveFunctions();
 	}
 
 	public StringBuilder start() {
@@ -139,69 +139,69 @@ public class BMachinePrinter extends AbstractExpressionPrinter implements
 				continue;
 
 			if (!printed.contains(e)) {
-				e.id = counter;
-				if (!first) {
-					out.append("; ");
-				}
-				out.append("ENUM" + counter + " = {");
-				Iterator<String> it2 = e.modelvalues.iterator();
-				while (it2.hasNext()) {
-					out.append(it2.next());
-					if (it2.hasNext()) {
-						out.append(", ");
-					}
-				}
-				if (e.hasNoVal()) {
-					out.append(", noVal" + counter);
-				}
-				out.append("}");
-				printed.add(e);
-				counter++;
-				first = false;
+				//e.id = counter;
+//				if (!first) {
+//					out.append("; ");
+//				}
+//				out.append("ENUM" + counter + " = {");
+//				Iterator<String> it2 = e.modelvalues.iterator();
+//				while (it2.hasNext()) {
+//					out.append(it2.next());
+//					if (it2.hasNext()) {
+//						out.append(", ");
+//					}
+//				}
+//				if (e.hasNoVal()) {
+//					out.append(", noVal" + counter);
+//				}
+//				out.append("}");
+//				printed.add(e);
+//				counter++;
+//				first = false;
 			}
 		}
 
-		if (operatorModelvalues != null && operatorModelvalues.size() > 0) {
-			for (int i = 0; i < operatorModelvalues.size(); i++) {
-				OpDefNode def = operatorModelvalues.get(i);
-				TLAType type = (TLAType) def.getToolObject(TYPE_ID);
-				EnumType e = null;
-				if (type instanceof SetType) {
-					if (((SetType) type).getSubType() instanceof EnumType) {
-						e = (EnumType) ((SetType) type).getSubType();
-					} else
-						continue;
-
-				} else if ((type instanceof EnumType)) {
-					e = (EnumType) type;
-				} else
-					continue;
-
-				if (!printed.contains(e)) {
-					e.id = counter;
-					if (!first) {
-						out.append("; ");
-					}
-					out.append("ENUM" + counter + " = {");
-					Iterator<String> it2 = e.modelvalues.iterator();
-					while (it2.hasNext()) {
-						out.append(it2.next());
-						if (it2.hasNext()) {
-							out.append(", ");
-						}
-					}
-					if (e.hasNoVal()) {
-						out.append(", noVal" + counter);
-					}
-					out.append("}");
-					printed.add(e);
-					counter++;
-					first = false;
-				}
-
-			}
-
-		}
+//		if (operatorModelvalues != null && operatorModelvalues.size() > 0) {
+//			for (int i = 0; i < operatorModelvalues.size(); i++) {
+//				OpDefNode def = operatorModelvalues.get(i);
+//				TLAType type = (TLAType) def.getToolObject(TYPE_ID);
+//				EnumType e = null;
+//				if (type instanceof SetType) {
+//					if (((SetType) type).getSubType() instanceof EnumType) {
+//						e = (EnumType) ((SetType) type).getSubType();
+//					} else
+//						continue;
+//
+//				} else if ((type instanceof EnumType)) {
+//					e = (EnumType) type;
+//				} else
+//					continue;
+//
+//				if (!printed.contains(e)) {
+//					e.id = counter;
+//					if (!first) {
+//						out.append("; ");
+//					}
+//					out.append("ENUM" + counter + " = {");
+//					Iterator<String> it2 = e.modelvalues.iterator();
+//					while (it2.hasNext()) {
+//						out.append(it2.next());
+//						if (it2.hasNext()) {
+//							out.append(", ");
+//						}
+//					}
+//					if (e.hasNoVal()) {
+//						out.append(", noVal" + counter);
+//					}
+//					out.append("}");
+//					printed.add(e);
+//					counter++;
+//					first = false;
+//				}
+//
+//			}
+//
+//		}
 
 		out.append("\n");
 		return out;
diff --git a/src/main/java/de/tla2b/translation/Tla2BTranslator.java b/src/main/java/de/tla2b/translation/Tla2BTranslator.java
index 8e67de3e736bb02be21cb972aed8c4082682238c..7ec593ee29303a4629a23d696613764c1b222999 100644
--- a/src/main/java/de/tla2b/translation/Tla2BTranslator.java
+++ b/src/main/java/de/tla2b/translation/Tla2BTranslator.java
@@ -122,16 +122,16 @@ public class Tla2BTranslator implements TranslationGlobals {
 		typechecker = new TypeChecker(moduleNode, conEval, specAnalyser);
 		typechecker.start();
 
-		specAnalyser.evalIfThenElse();
+		//specAnalyser.evalIfThenElse();
 
 		SymbolRenamer symRenamer = new SymbolRenamer(moduleNode, specAnalyser);
 		symRenamer.start();
-		BMachinePrinter p = new BMachinePrinter(moduleNode, conEval,
-				specAnalyser);
+//		BMachinePrinter p = new BMachinePrinter(moduleNode, conEval,
+//				specAnalyser);
 		// BAstCreator bAstCreator = new BAstCreator(moduleNode, conEval,
 		// specAnalyser);
 
-		return p.start();
+		return null;
 	}
 
 	public static ModuleNode parseModule(String moduleName)
diff --git a/src/main/java/de/tla2bAst/BAstCreator.java b/src/main/java/de/tla2bAst/BAstCreator.java
index 49df90e5a8c95cbfb7bd1e65f302847d6306f71f..c885712c9baf614e488f8250f518936f26e9d2b2 100644
--- a/src/main/java/de/tla2bAst/BAstCreator.java
+++ b/src/main/java/de/tla2bAst/BAstCreator.java
@@ -2,7 +2,6 @@ package de.tla2bAst;
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Iterator;
@@ -249,6 +248,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 		ArrayList<PSet> sets = new ArrayList<PSet>();
 		for (int i = 0; i < printed.size(); i++) {
 			AEnumeratedSetSet eSet = new AEnumeratedSetSet();
+			printed.get(i).id = i + 1;
 			eSet.setIdentifier(createTIdentifierLiteral("ENUM" + (i + 1)));
 			List<PExpression> list = new ArrayList<PExpression>();
 			for (Iterator<String> iterator = printed.get(i).modelvalues
@@ -503,9 +503,9 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 			constantsList.add(id);
 		}
 
-		for (RecursiveFunktion recFunc : specAnalyser.getRecursiveFunctions()) {
+		for (OpDefNode recFunc : specAnalyser.getRecursiveFunctions()) {
 			AIdentifierExpression id = new AIdentifierExpression(
-					createTIdentifierLiteral(getName(recFunc.getOpDefNode())));
+					createTIdentifierLiteral(getName(recFunc)));
 			constantsList.add(id);
 		}
 
@@ -530,7 +530,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 
 		propertiesList.addAll(evalRecursiveDefinitions());
 
-		//propertiesList.addAll(evalRecursiveFunctions());
+		propertiesList.addAll(evalRecursiveFunctions());
 
 		for (OpDeclNode con : bConstants) {
 			if (conEval != null
@@ -612,32 +612,11 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 
 	private List<PPredicate> evalRecursiveFunctions() {
 		List<PPredicate> propertiesList = new ArrayList<PPredicate>();
-		for (RecursiveFunktion recDef : specAnalyser.getRecursiveFunctions()) {
-			
-			
-			OpDefNode def = recDef.getOpDefNode();
-			FormalParamNode[] params = def.getParams();
-			ArrayList<PExpression> paramList1 = new ArrayList<PExpression>();
-			ArrayList<PPredicate> typeList = new ArrayList<PPredicate>();
-			// ArrayList<PExpression> paramList2 = new ArrayList<PExpression>();
-			for (FormalParamNode p : params) {
-				paramList1.add(createIdentifierNode(p));
-				// paramList2.add(createIdentifierNode(p.getName().toString()));
-				TLAType paramType = (TLAType) p.getToolObject(TYPE_ID);
-				// System.out.println(paramType);
-				AEqualPredicate equal = new AEqualPredicate(
-						createIdentifierNode(p), paramType.getBNode());
-				typeList.add(equal);
-			}
-			ALambdaExpression lambda1 = new ALambdaExpression();
-			lambda1.setIdentifiers(paramList1);
-			lambda1.setPredicate(createConjunction(typeList));
-			lambda1.setExpression(visitExprNodeExpression(def.getBody()));
+		for (OpDefNode def : specAnalyser.getRecursiveFunctions()) {
 			AEqualPredicate equals = new AEqualPredicate(
-					createIdentifierNode(def), lambda1);
+					createIdentifierNode(def),
+					visitExprNodeExpression(def.getBody()));
 			propertiesList.add(equals);
-			
-			
 		}
 
 		return propertiesList;
@@ -810,14 +789,11 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 
 	private PPredicate visitOpApplNodePredicate(OpApplNode n) {
 		switch (n.getOperator().getKind()) {
-		case ConstantDeclKind: {
-			return new AEqualPredicate(createIdentifierNode(n.getOperator()),
-					new ABooleanTrueExpression());
-		}
-		case VariableDeclKind: {
+		case VariableDeclKind:
+		case ConstantDeclKind:
+		case FormalParamKind: {
 			return new AEqualPredicate(createIdentifierNode(n.getOperator()),
 					new ABooleanTrueExpression());
-
 		}
 		case BuiltInKind:
 			return visitBuiltInKindPredicate(n);
@@ -878,6 +854,11 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 		for (int i = 0; i < n.getArgs().length; i++) {
 			params.add(visitExprOrOpArgNodeExpression(n.getArgs()[i]));
 		}
+		if (specAnalyser.getRecursiveFunctions().contains(def)) {
+			return new AEqualPredicate(createIdentifierNode(def),
+					new ABooleanTrueExpression());
+		}
+
 		if (predicateVsExpression.getDefinitionType(def) == DefinitionType.EXPRESSION) {
 			ADefinitionExpression defCall = new ADefinitionExpression();
 			defCall.setDefLiteral(new TIdentifierLiteral(getName(def)));
@@ -907,6 +888,10 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 			return visitBBuitInsExpression(n);
 		}
 
+		if (specAnalyser.getRecursiveFunctions().contains(def)) {
+			return createIdentifierNode(def);
+		}
+
 		if (allTLADefinitions.contains(def)) {
 			List<PExpression> params = new ArrayList<PExpression>();
 			for (int i = 0; i < n.getArgs().length; i++) {
@@ -1341,15 +1326,42 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 
 			List<PExpression> idList = new ArrayList<PExpression>();
 			List<PPredicate> predList = new ArrayList<PPredicate>();
-			for (int i = 0; i < bounds.length; i++) {
-				FormalParamNode p = params[i][0];
-				AMemberPredicate member = new AMemberPredicate();
-				member.setLeft(createIdentifierNode(p));
-				ExprNode in = n.getBdedQuantBounds()[i];
-				member.setRight(visitExprNodeExpression(in));
-				predList.add(member);
-				idList.add(createIdentifierNode(p));
+
+			for (int i = 0; i < params.length; i++) {
+				if (n.isBdedQuantATuple()[i]) {
+					List<PExpression> list = new ArrayList<PExpression>();
+					for (FormalParamNode formalParam : params[i]) {
+						list.add(createIdentifierNode(formalParam));
+						idList.add(createIdentifierNode(formalParam));
+					}
+					ACoupleExpression couple = new ACoupleExpression(list);
+					AMemberPredicate member = new AMemberPredicate();
+					member.setLeft(couple);
+					ExprNode in = n.getBdedQuantBounds()[i];
+					member.setRight(visitExprNodeExpression(in));
+					predList.add(member);
+				} else {
+					for (FormalParamNode formalParam : params[i]) {
+						AMemberPredicate member = new AMemberPredicate();
+						member.setLeft(createIdentifierNode(formalParam));
+						ExprNode in = n.getBdedQuantBounds()[i];
+						member.setRight(visitExprNodeExpression(in));
+						predList.add(member);
+						idList.add(createIdentifierNode(formalParam));
+					}
+				}
+
 			}
+			// for (int i = 0; i < bounds.length; i++) {
+			//
+			// FormalParamNode p = params[i][0];
+			// AMemberPredicate member = new AMemberPredicate();
+			// member.setLeft(createIdentifierNode(p));
+			// ExprNode in = n.getBdedQuantBounds()[i];
+			// member.setRight(visitExprNodeExpression(in));
+			// predList.add(member);
+			// idList.add(createIdentifierNode(p));
+			// }
 			final String nameOfTempVariable = "t_";
 			AEqualPredicate equals = new AEqualPredicate();
 			equals.setLeft(createIdentifierNode(nameOfTempVariable));
@@ -1629,6 +1641,21 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 			return createBoundedChoose(n);
 		}
 
+		case OPCODE_bf: { // \A x \in S : P
+			FormalParamNode[][] params = n.getBdedQuantSymbolLists();
+			ArrayList<PExpression> list = new ArrayList<PExpression>();
+			for (int i = 0; i < params.length; i++) {
+				for (int j = 0; j < params[i].length; j++) {
+					list.add(createIdentifierNode(params[i][j]));
+				}
+			}
+			AImplicationPredicate implication = new AImplicationPredicate();
+			implication.setLeft(visitBounded(n));
+			implication.setRight(visitExprOrOpArgNodePredicate(n.getArgs()[0]));
+			return new AConvertBoolExpression(new AForallPredicate(list,
+					implication));
+		}
+
 		}
 
 		System.out.println(n.getOperator().getName());
diff --git a/src/main/java/de/tla2bAst/Translator.java b/src/main/java/de/tla2bAst/Translator.java
index 4d62bcc7f348fa5728226c7955498e1844c58791..199fb4812b2574845785a178402e3a47254b14dd 100644
--- a/src/main/java/de/tla2bAst/Translator.java
+++ b/src/main/java/de/tla2bAst/Translator.java
@@ -108,7 +108,7 @@ public class Translator implements TranslationGlobals {
 		parse();
 	}
 
-	public ModuleNode parseModule2()
+	public ModuleNode parseModule()
 			throws de.tla2b.exceptions.FrontEndException {
 		String fileName = moduleFile.getName();
 		ToolIO.setUserDir(moduleFile.getParent());
@@ -158,7 +158,7 @@ public class Translator implements TranslationGlobals {
 	}
 
 	private void parse() throws FrontEndException {
-		moduleNode = parseModule2();
+		moduleNode = parseModule();
 
 		modelConfig = null;
 		if (configFile != null) {
@@ -193,25 +193,21 @@ public class Translator implements TranslationGlobals {
 		} else {
 			specAnalyser = new SpecAnalyser(moduleNode);
 		}
-
 		specAnalyser.start();
-
 		TypeChecker typechecker = new TypeChecker(moduleNode, conEval,
 				specAnalyser);
 		typechecker.start();
-
-		specAnalyser.evalIfThenElse();
+		//specAnalyser.evalIfThenElse();
 
 		SymbolRenamer symRenamer = new SymbolRenamer(moduleNode, specAnalyser);
 		symRenamer.start();
-		BMachinePrinter p = new BMachinePrinter(moduleNode, conEval,
-				specAnalyser);
-		bMachineString = p.start().toString();
+//		BMachinePrinter p = new BMachinePrinter(moduleNode, conEval,
+//				specAnalyser);
+//		bMachineString = p.start().toString();
 
 		UsedExternalFunctions usedExternalFunctions = new UsedExternalFunctions(
 				moduleNode, specAnalyser);
 
-		
 		BMacroHandler bMacroHandler = new BMacroHandler(specAnalyser, conEval);
 		BAstCreator bAstCreator = new BAstCreator(moduleNode, conEval,
 				specAnalyser, usedExternalFunctions, predicateVsExpression, bMacroHandler);
@@ -305,5 +301,9 @@ public class Translator implements TranslationGlobals {
 	public String getBMachineString() {
 		return bMachineString;
 	}
+	
+	public ModuleNode getModuleNode(){
+		return moduleNode;
+	}
 
 }
diff --git a/src/test/java/de/tla2b/examples/MCTest.java b/src/test/java/de/tla2b/examples/MCTest.java
index c70a1d5aa0871f453dc6874a8a3b03d5d8bb6242..ee9ee41ce137284827b2e4e2cabb0274a610ca51 100644
--- a/src/test/java/de/tla2b/examples/MCTest.java
+++ b/src/test/java/de/tla2b/examples/MCTest.java
@@ -112,4 +112,16 @@ public class MCTest {
 		String file = "src/test/resources/examples/SumAndProduct/SumAndProductConstraint.tla";
 		runModule(file);
 	}
+	
+	@Test
+	public void testuf50_02() throws Exception {
+		String file = "src/test/resources/examples/uf50_02/uf50_02.tla";
+		runModule(file);
+	}
+	
+	@Test
+	public void testRecursiveFunction() throws Exception {
+		String file = "src/test/resources/examples/RecursiveFunction/RecursiveFunction.tla";
+		runModule(file);
+	}
 }
diff --git a/src/test/java/de/tla2b/prettyprintb/LogicOperatorsTest.java b/src/test/java/de/tla2b/prettyprintb/LogicOperatorsTest.java
index 9d4044acf558c3d2c15dfa7f2697513c3571b481..164a417a422931f8d2ac2a9c4bfdcaddfca5908f 100644
--- a/src/test/java/de/tla2b/prettyprintb/LogicOperatorsTest.java
+++ b/src/test/java/de/tla2b/prettyprintb/LogicOperatorsTest.java
@@ -17,10 +17,8 @@ public class LogicOperatorsTest {
 				+ "ASSUME k = (2 # 1)\n"
 				+ "=================================";
 
-		final String expected = "MACHINE Testing\n"
-				+ "ABSTRACT_CONSTANTS k\n"
-				+ "PROPERTIES k : BOOL & k = bool(2 /= 1)\n"
-				+ "END";
+		final String expected = "MACHINE Testing\n" + "ABSTRACT_CONSTANTS k\n"
+				+ "PROPERTIES k : BOOL & k = bool(2 /= 1)\n" + "END";
 		compare(expected, module);
 	}
 
@@ -139,7 +137,6 @@ public class LogicOperatorsTest {
 		compare(expected, module);
 	}
 
-
 	@Test
 	public void testQuantifier() throws Exception {
 		final String module = "-------------- MODULE Testing ----------------\n"
diff --git a/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java b/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java
index df0cdc6df06653ed79002ec7fa0c9837639d7b74..b2f3c81ab0b9de5389256b8614745f4730e8e0ab 100644
--- a/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java
+++ b/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java
@@ -6,7 +6,7 @@ import org.junit.Ignore;
 import org.junit.Test;
 
 public class RecursiveFunctionTest {
-	
+
 	@Ignore
 	@Test
 	public void testRecursiveDefinition() throws Exception {
@@ -17,10 +17,41 @@ public class RecursiveFunctionTest {
 				+ "=================================";
 
 		final String expected = "MACHINE Testing\n" + "ABSTRACT_CONSTANTS k\n"
-				+ "PROPERTIES " 
-				+ " k : BOOL +-> INTEGER "
+				+ "PROPERTIES " + " k : BOOL +-> INTEGER "
 				+ "& k = k <+ {TRUE |-> 0, FALSE |-> 0}" + "END";
 		compare(expected, module);
-		
+
+	}
+
+	@Test
+	public void testFactorial() throws Exception {
+		final String module = "-------------- MODULE Testing ----------------\n"
+				+ "EXTENDS Naturals \n"
+				+ "fac[x \\in Nat] == IF x = 1 THEN 1 ELSE x * fac[x-1]\n"
+				+ "ASSUME fac[3] = 6 \n" + "=================================";
+
+		final String expected = "MACHINE Testing\n"
+				+ "ABSTRACT_CONSTANTS fac\n"
+				+ "PROPERTIES "
+				+ "fac = %(x).(x : NATURAL | (%(t_).(t_ = 0 & x = 1 | 1) \\/ %(t_).(t_ = 0 & not(x = 1) | x * fac((x - 1))))(0)) & fac(3) = 6 \n"
+				+ "END";
+		compare(expected, module);
+
+	}
+
+	@Test
+	public void testFactorial2() throws Exception {
+		final String module = "-------------- MODULE Testing ----------------\n"
+				+ "EXTENDS Naturals \n"
+				+ "fac[x \\in Nat] == 5 + IF x = 1 THEN 1 ELSE x * fac[x-1]\n"
+				+ "ASSUME fac[3] = 56 \n" + "=================================";
+
+		final String expected = "MACHINE Testing\n"
+				+ "ABSTRACT_CONSTANTS fac\n"
+				+ "PROPERTIES "
+				+ "fac = %(x).(x : NATURAL | 5 + (%(t_).(t_ = 0 & x = 1 | 1) \\/ %(t_).(t_ = 0 & not(x = 1) | x * fac((x - 1))))(0)) & fac(3) = 56 \n"
+				+ "END";
+		compare(expected, module);
+
 	}
 }
diff --git a/src/test/java/de/tla2b/prettyprintb/SetsTest.java b/src/test/java/de/tla2b/prettyprintb/SetsTest.java
index 3aa124e52abb19eb1d797a47ed239a785befa289..e1c16a71a57c0e5c6d1d2a1a6a18fcc67215c966 100644
--- a/src/test/java/de/tla2b/prettyprintb/SetsTest.java
+++ b/src/test/java/de/tla2b/prettyprintb/SetsTest.java
@@ -196,4 +196,17 @@ public class SetsTest {
 				+ "PROPERTIES {x|x : {1, 2, 3} & (x : {1} or x : {2})} = {1, 2} \n" + "END";
 		compare(expected, module);
 	}
+	
+	@Test
+	public void testConstructor4() throws Exception {
+		final String module = "-------------- MODULE Testing ----------------\n"
+				+ "EXTENDS Naturals \n"
+				+ "ASSUME {1} = {x : <<x, y>> \\in {1} \\X {2}} \n"
+				+ "=================================";
+		final String expected = "MACHINE Testing\n"
+				+ "PROPERTIES {1} = {t_ | #(x,y).((x,y) : {1} * {2} & t_ = x)} \n"
+				+ "END";
+		compare(expected, module);
+	}
+
 }
diff --git a/src/test/java/de/tla2b/typechecking/InstanceTest.java b/src/test/java/de/tla2b/typechecking/InstanceTest.java
index 44241dcd1326a44bf7b79bd3c5adcf3bd9b41bfb..329a772f0855ba85b5c7e53c40172c9ce00f25bb 100644
--- a/src/test/java/de/tla2b/typechecking/InstanceTest.java
+++ b/src/test/java/de/tla2b/typechecking/InstanceTest.java
@@ -49,8 +49,7 @@ public class InstanceTest {
 
 	@Test
 	public void TestInstanceValue() throws Exception {
-		TestTypeChecker t = TestUtil.typeCheck(path + "InstanceValue.tla",
-				"InstanceValue.cfg");
+		TestTypeChecker t = TestUtil.typeCheck(path + "InstanceValue.tla");
 		assertEquals("INTEGER", t.getConstantType("c2"));
 		assertEquals("INTEGER", t.getConstantType("val2"));
 	}
diff --git a/src/test/java/de/tla2b/util/TestTypeChecker.java b/src/test/java/de/tla2b/util/TestTypeChecker.java
index c80cb23e45c15c653d2f8024950b8439f3e7be85..cbe0d5e9eddb70bd3d11c66a49be814e166a92d7 100644
--- a/src/test/java/de/tla2b/util/TestTypeChecker.java
+++ b/src/test/java/de/tla2b/util/TestTypeChecker.java
@@ -11,7 +11,7 @@ import de.tla2b.exceptions.TLA2BException;
 import de.tla2b.global.TranslationGlobals;
 import de.tla2b.translation.Tla2BTranslator;
 import de.tla2b.types.TLAType;
-
+import de.tla2bAst.Translator;
 import tla2sany.semantic.FormalParamNode;
 import tla2sany.semantic.ModuleNode;
 import tla2sany.semantic.OpDeclNode;
@@ -33,17 +33,15 @@ public class TestTypeChecker implements TranslationGlobals {
 
 	public void startTest(String moduleString, String configString)
 			throws FrontEndException, TLA2BException {
-		Tla2BTranslator translator = new Tla2BTranslator();
-		translator.startTest(moduleString, configString);
+		Translator translator = new Translator(moduleString, configString);
 		translator.translate();
 		moduleNode = translator.getModuleNode();
 		init();
 	}
 	
-	public void start(String moduleFileName, String configFileName)
+	public void start(String moduleFileName)
 			throws FrontEndException, TLA2BException {
-		Tla2BTranslator translator = new Tla2BTranslator();
-		translator.start(moduleFileName, configFileName);
+		Translator translator = new Translator(moduleFileName);
 		translator.translate();
 		moduleNode = translator.getModuleNode();
 		init();
diff --git a/src/test/java/de/tla2b/util/TestUtil.java b/src/test/java/de/tla2b/util/TestUtil.java
index ed216ee08e6f51deea8f6e34181fb24027049238..f7146256f376753125e04a429e303c8700fd5302 100644
--- a/src/test/java/de/tla2b/util/TestUtil.java
+++ b/src/test/java/de/tla2b/util/TestUtil.java
@@ -115,6 +115,10 @@ public class TestUtil {
 		Translator trans = new Translator(tlaModule, config);
 		Start resultNode = trans.translate();
 		
+		ASTPrettyPrinter aP = new ASTPrettyPrinter();
+		resultNode.apply(aP);
+		System.out.println(aP.getResultString());
+		
 		//BParser.printASTasProlog(System.out, new BParser(), new File("./test.mch"), resultNode, false, true, null);
 		
 		String result = getTreeAsString(resultNode);
@@ -197,20 +201,10 @@ public class TestUtil {
 		ToolIO.reset();
 		moduleFileName = moduleFileName.replace('/', FileUtil.separatorChar);
 		TestTypeChecker testTypeChecker = new TestTypeChecker();
-		testTypeChecker.start(moduleFileName, null);
+		testTypeChecker.start(moduleFileName);
 		return testTypeChecker;
 	}
 	
-	public static TestTypeChecker typeCheck(String moduleFileName, String configFileName) throws FrontEndException, TLA2BException{
-		ToolIO.setMode(ToolIO.TOOL);
-		ToolIO.reset();
-		moduleFileName = moduleFileName.replace('/', FileUtil.separatorChar);
-		configFileName = configFileName.replace('/', FileUtil.separatorChar);
-		TestTypeChecker testTypeChecker = new TestTypeChecker();
-		testTypeChecker.start(moduleFileName, configFileName);
-		return testTypeChecker;
-	}
-
 
 	public static String fileToString(String fileName) throws IOException {
 		StringBuilder res = new StringBuilder();
diff --git a/src/test/resources/examples/Relations.tla b/src/test/resources/examples/Relations.tla
deleted file mode 100644
index a9a1bc1e0f5c3c8fc88150450a8c35d948f19437..0000000000000000000000000000000000000000
--- a/src/test/resources/examples/Relations.tla
+++ /dev/null
@@ -1,66 +0,0 @@
------------------------------ MODULE Relations -----------------------------
-
-EXTENDS TLC, Sequences, Naturals, FiniteSets, Integers
-
-domain(r) == {x[1]: x \in r}
-range(r) == {x[2]: x \in r}
-id(S) == {<<x,x>>: x \in S}
-set_of_relations(x,y) == SUBSET (x \times y) 
-domain_restriction(S, r) == {x \in r: x[1] \in S}
-domain_substraction(S, r) == {x \in r: x[1] \notin S}
-range_restriction(S, r) == {x \in r: x[2] \in S}
-range_substraction(S, r) == {x \in r: x[2] \notin S}
-
-rel_inverse(r) == {<<x[2],x[1]>>: x\in r}
-relational_image(r, S) =={y[2] :y \in {x \in r: x[1] \in S}}
-relational_overriding(r, r2) == {x \in r: x[1] \notin domain(r2)} \cup r2
-
-
-direct_product(r1, r2) == {<<x, u>> \in (domain(r1)\cup domain(r2)) \times (range(r1) \times range(r2)):
-     u[1] \in relational_image(r1, {x}) /\ u[2] \in relational_image(r2,{x})}
-direct_product2(r1, r2) == {u \in (domain(r1)\cup domain(r2)) \times (range(r1) \times range(r2)):
-     <<u[1],u[2][1]>> \in r1 /\ <<u[1],u[2][2]>> \in r2}
-
-relational_composition(r1, r2) == {<<u[1][1],u[2][2]>> : u \in
-    {x \in range_restriction(domain(r2),r1) \times domain_restriction(range(r1),r2): x[1][2] = x[2][1]}
-        }
-
-prj1(E, F) == {u \in E \times F \times E: u[1] = u[3]}
-prj2(E, F) == {u \in E \times F \times F: u[2] = u[3]}
-
-
-RECURSIVE iterate(_,_)
-iterate(r, n) == CASE  n = 0 -> id(domain(r)\cup range(r))
-                [] n = 1 -> r
-                [] OTHER -> iterate(relational_composition(r,r), n-1)
-
-RECURSIVE closure1(_)
-closure1(R) == IF relational_composition(R,R) \R # {}
-                THEN R \cup closure1(relational_composition(R,R)) 
-                ELSE R
-
-closure(R) == closure1( R \cup {<<x[1],x[1]>>: x \in R} \cup {<<x[2],x[2]>>: x \in R})
-
-relational_call(r, x) == (CHOOSE y \in r: y[1] = x)[2]
-
-
-is_partial_func(f) == \A x \in domain(f): Cardinality(relational_image(f, {x})) <= 1
-is_partial_func2(f, S, S2) == /\ \A x \in f: x[1] \in S /\ x[2] \in S2 /\  relational_image(f, {x[1]}) = {x[2]}
-
-partial_func(S, S2) == {x \in (SUBSET (S \times S2)): is_partial_func(x)}
-
-is_func(f) == \A x \in domain(f): Cardinality(relational_image(f, {x})) < 2
-total_func(S, S2) == {x \in (SUBSET (S \times S2)): is_func(x) /\ domain(x)= S}
-
-is_total_func(f, S, S2) == domain(f) = S /\ \A x \in f: x[1] \in S /\ x[2] \in S2 /\  relational_image(f, {x[1]}) = {x[2]}
-
-is_injectiv_func(f) == \A x \in range(f): Cardinality(relational_image(rel_inverse(f), {x})) <= 1 
-total_injection(S, S2) == {x \in (SUBSET (S \times S2)): is_func(x) /\ domain(x)= S /\ is_injectiv_func(x) }
-partial_injection(S, S2) == {x \in (SUBSET (S \times S2)): is_func(x) /\ is_injectiv_func(x) }
-
-total_surjection(S, S2) == {x \in (SUBSET (S \times S2)): is_func(x)/\ domain(x)= S /\ S2 = range(x)}
-partial_surjection(S, S2) == {x \in (SUBSET (S \times S2)): is_func(x)/\ S2 = range(x)}
-
-total_bijection(S, S2) == {x \in (SUBSET (S \times S2)): is_func(x) /\ domain(x) = S /\ is_injectiv_func(x) /\ S2 = range(x)}
-
-=============================================================================
\ No newline at end of file
diff --git a/src/test/resources/examples/SecCtx.cfg b/src/test/resources/examples/SecCtx.cfg
deleted file mode 100644
index d9bdb0b9b1707d86c7a668bc84dfa3d5759b8f0e..0000000000000000000000000000000000000000
--- a/src/test/resources/examples/SecCtx.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-INIT SecCtx_Init
-NEXT SecCtx_Next
-INVARIANT Inv
-CONSTANTS
-usr_lst_cnt = 2
-REG_USR = {0,1}
-NAT = {0,1,2,3}
-INT = {0,1,2,3}
\ No newline at end of file
diff --git a/src/test/resources/examples/SecCtx.tla b/src/test/resources/examples/SecCtx.tla
deleted file mode 100644
index a31684ddcf69f96b1eaa4388fa8e5b4e8ae223cf..0000000000000000000000000000000000000000
--- a/src/test/resources/examples/SecCtx.tla
+++ /dev/null
@@ -1,475 +0,0 @@
-------------------------------- MODULE SecCtx -------------------------------
-EXTENDS Naturals, Integers, Relations
-CONSTANTS usr_lst_cnt, REG_USR, INT, NAT
-ASSUME usr_lst_cnt \in Nat\{0} /\ REG_USR = 0..(usr_lst_cnt-1)
-
-min(S) == CHOOSE x \in S : \A i \in S: x \leq i
-
-VARIABLES
-    flg_comm_active,            (* communicating *)
-    flg_got_cli_nonce,          (* Client Nonce received *)
-    flg_sent_serv_nonce,        (* Server Nonce sent *)
-    flg_sent_cert,              (* Server certificate sent *)
-    flg_got_premaster,          (* premaster secret received from client *)
-    flg_set_cmn_key,            (* session common key set *)
-    flg_done_hs_verify,         (* Data for verifying a Handshake message checked *)
-    flg_sent_hs_verify,         (* Data for verifying a Handshake message sent *)
-    flg_cipher_on,              (* Applied encryption to communication data *)
-    
-    flg_allow_user_auth,        (* the propriety user authenticating user *)
-    flg_done_user_auth,         (* user authenticated flag *)
-    flg_allow_user_data,        (* the propriety sending and receiving user data flag *)
-    
-    flg_tx_msg_encoded,         (* encryption of sending data flag *)
-    flg_tx_add_mac,             (* Given MAC  of sending data flag *)
-    flg_allow_send_data,        (* Permission of sending TCP data flag*)
-    
-    flg_rx_msg_decoded,         (* encryption of receiviing data flag *)
-    flg_rx_chk_mac,             (* Given MAC  of receiviing data flag *)
-    flg_allow_recv_data,        (* Permission of giving application software received data flag*)
-    
-    auth_fail_cnt,              (* consecutive unsuccessful authentication attempts for each user *)
-    recent_auth_tim             (* previous time of authentication attempts for each user for each user *)
-
-Inv == (* Definition of type *)
-    (* -------------------------------------------------------- *)
-    flg_comm_active \in BOOLEAN /\
-    flg_got_cli_nonce \in BOOLEAN /\
-    flg_sent_serv_nonce \in BOOLEAN /\
-    flg_sent_cert \in BOOLEAN /\
-    flg_got_premaster \in BOOLEAN /\
-    flg_set_cmn_key \in BOOLEAN /\
-    flg_done_hs_verify \in BOOLEAN /\
-    flg_sent_hs_verify \in BOOLEAN /\
-    flg_cipher_on \in BOOLEAN /\
-    
-    flg_allow_user_auth \in BOOLEAN /\
-    flg_done_user_auth \in BOOLEAN /\
-    flg_allow_user_data \in BOOLEAN /\
-    
-    flg_tx_msg_encoded \in BOOLEAN /\
-    flg_tx_add_mac \in BOOLEAN /\
-    flg_allow_send_data \in BOOLEAN /\
-    
-    flg_rx_msg_decoded \in BOOLEAN /\
-    flg_rx_chk_mac \in BOOLEAN /\
-    flg_allow_recv_data \in BOOLEAN /\
-    
-    is_total_func(auth_fail_cnt, REG_USR, NAT) /\ (*   auth_fail_cnt : REG_USR +-> NAT & dom(auth_fail_cnt)=REG_USR &*)
-    is_total_func(recent_auth_tim, REG_USR, INT) /\ (*recent_auth_tim : REG_USR +-> INT & dom(recent_auth_tim)=REG_USR &*)
-    
-    (flg_sent_serv_nonce=TRUE => flg_got_cli_nonce=TRUE) /\
-    (flg_sent_cert=TRUE => flg_sent_serv_nonce=TRUE) /\
-    (flg_got_premaster=TRUE => flg_sent_cert=TRUE) /\
-    (flg_sent_hs_verify=TRUE => flg_got_premaster=TRUE) /\
-    (flg_allow_user_auth = TRUE
-        => (flg_sent_cert = TRUE) /\ (flg_got_premaster=TRUE) /\ (flg_sent_hs_verify=TRUE))
-    
-   /\     (flg_allow_user_data = TRUE
-        => (flg_sent_cert = TRUE) /\ (flg_got_premaster=TRUE) /\ (flg_sent_hs_verify=TRUE))
-  
-  /\      
-        (* Encryption of user data:Prevent eavesdropping *)
-    ( flg_cipher_on=TRUE => flg_set_cmn_key=TRUE) /\ 
-    ( flg_allow_user_auth=TRUE => flg_cipher_on=TRUE) /\
-    ( flg_done_user_auth=TRUE => flg_allow_user_auth=TRUE) /\
-    ( flg_allow_send_data=TRUE => (flg_allow_user_data=TRUE)/\(flg_tx_msg_encoded=TRUE) ) /\ 
-    ( flg_allow_recv_data=TRUE => (flg_allow_user_data=TRUE)/\(flg_rx_msg_decoded=TRUE) ) /\    
-        
-        
-        (* Make the unique common key for every session:Prevent replying *)
-    ( flg_allow_user_auth=TRUE => flg_done_hs_verify=TRUE ) /\
-    ( flg_allow_user_auth=TRUE => flg_sent_hs_verify=TRUE ) /\
-    ( flg_cipher_on=TRUE => flg_got_cli_nonce=TRUE ) /\
-    ( flg_cipher_on=TRUE => flg_sent_serv_nonce=TRUE ) /\
-    ( flg_comm_active=FALSE => flg_set_cmn_key=FALSE) /\
-    
-    (* Make hash:Prevent Prevent falsifying(contain adding messages, 
-    deleting messages and replacing an order of a message ) and replying *)
-    ( flg_allow_send_data=TRUE => (flg_allow_user_data=TRUE)/\(flg_tx_add_mac=TRUE) ) /\ 
-    ( flg_allow_recv_data=TRUE => (flg_allow_user_data=TRUE)/\(flg_rx_chk_mac=TRUE) ) /\
-    
-    (* Authenticate User:Prevent masquerading as an user *)
-    ( flg_allow_user_auth = TRUE => flg_cipher_on = TRUE ) /\
-    ( flg_allow_user_data = TRUE => flg_done_user_auth = TRUE )
-       
-        
-SecCtx_Init ==
-    flg_comm_active = FALSE /\
-    flg_got_cli_nonce = FALSE /\
-    flg_sent_serv_nonce = FALSE /\
-    flg_sent_cert = FALSE /\
-    flg_got_premaster = FALSE /\
-    flg_set_cmn_key = FALSE /\
-    flg_done_hs_verify = FALSE /\
-    flg_sent_hs_verify = FALSE /\
-    flg_cipher_on = FALSE /\
-    flg_allow_user_auth = FALSE /\
-    flg_done_user_auth = FALSE /\
-    flg_allow_user_data = FALSE /\
-    
-    flg_tx_msg_encoded = FALSE /\
-    flg_tx_add_mac = FALSE /\
-    flg_allow_send_data = FALSE /\
-    
-    flg_rx_msg_decoded = FALSE /\
-    flg_rx_chk_mac = FALSE /\
-    flg_allow_recv_data = FALSE /\
-    
-    auth_fail_cnt = REG_USR \times {0} /\
-    recent_auth_tim = (REG_USR \times {-1})
-        
-        
-        
-            (* Set flag operations *)
-SetFlgCommActive == 
-        /\ flg_comm_active = FALSE
-        /\ flg_comm_active' = TRUE
-        /\ UNCHANGED << flg_got_cli_nonce,flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key, flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth, flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded, flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim >>
-        
-SetFlgGotCliNonce == 
-        /\ flg_got_cli_nonce' = TRUE        
-        /\ UNCHANGED <<flg_comm_active, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-SetFlgSentServNonce == 
-        /\ flg_got_cli_nonce = TRUE
-        /\ flg_sent_serv_nonce' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-                
-SetFlgSentCert ==
-        /\ flg_sent_serv_nonce = TRUE
-        /\ flg_sent_cert' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-                
-SetFlgGotPremaster  == 
-        /\ flg_sent_cert = TRUE
-        /\ flg_got_premaster' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-        
-SetFlgCmnKey ==
-        /\ (flg_comm_active = TRUE)
-        /\ (flg_got_premaster = TRUE)
-        /\ (flg_got_cli_nonce = TRUE)
-        /\ (flg_sent_serv_nonce = TRUE)
-        /\ flg_set_cmn_key' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-    
-SetFlgCipherOn == 
-        /\ (flg_got_premaster = TRUE)
-        /\ (flg_got_cli_nonce = TRUE)
-        /\ (flg_sent_serv_nonce = TRUE)
-        /\ (flg_set_cmn_key = TRUE)
-        /\ flg_cipher_on' = TRUE 
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-                   
-        
-SetFlgDoneHsVerify  ==
-        /\ flg_done_hs_verify' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-        
-        
-SetFlgSentHsVerify == 
-        /\ flg_got_premaster = TRUE
-        /\ flg_sent_hs_verify' = TRUE 
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-        
-        
-SetFlgAllowUserAuth == 
-        /\ (flg_cipher_on = TRUE)
-        /\ (flg_done_hs_verify = TRUE)
-        /\ (flg_sent_hs_verify = TRUE)
-        /\ flg_allow_user_auth' = TRUE 
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-        
-SetFlgDoneUserAuth  == 
-        /\  flg_allow_user_auth = TRUE
-        /\ flg_done_user_auth' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-
-        
-SetSuccessUserAuth(usr, tim) ==
-        /\ usr \in INT /\ usr \in REG_USR /\ tim \in INT
-        /\    flg_allow_user_auth = TRUE
-            
-        /\  flg_done_user_auth' = TRUE
-        /\  auth_fail_cnt'= relational_overriding(auth_fail_cnt, {<<usr,0>>}) 
-        /\  recent_auth_tim' = relational_overriding(recent_auth_tim, {<<usr, tim>>})    
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data>>    
-        
-SetFailUserAuth(usr, tim) ==
-        /\ usr \in INT /\ usr \in REG_USR /\ tim \in INT  
-        /\    flg_done_user_auth' = FALSE
-        /\    flg_allow_user_data' = FALSE 
-        /\    flg_allow_send_data' = FALSE 
-        /\    flg_allow_recv_data' = FALSE
-        /\    auth_fail_cnt' = relational_overriding(auth_fail_cnt, {<<usr,min({relational_call(auth_fail_cnt,usr)+1, 3})>>})
-        /\    recent_auth_tim' = relational_overriding(recent_auth_tim, {<<usr, tim>>})      
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth, flg_tx_msg_encoded,flg_tx_add_mac,flg_rx_msg_decoded,flg_rx_chk_mac>>    
-        
- SetFlgAllowUserData == 
-        /\  (flg_sent_cert = TRUE) 
-        /\ (flg_got_premaster=TRUE)
-        /\ (flg_sent_hs_verify = TRUE)
-        /\ (flg_cipher_on = TRUE)
-        /\ (flg_done_user_auth = TRUE)
-        /\ flg_allow_user_data' = TRUE 
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-                
-SetFlgTxMsgEncoded ==
-        /\ flg_tx_msg_encoded' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-    
-SetFlgTxAddMac  ==
-        /\ flg_tx_add_mac' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-         
-    
-SetFlgAllowSendData == 
-        /\ (flg_allow_user_data=TRUE)
-        /\ (flg_tx_msg_encoded = TRUE)
-        /\ (flg_tx_add_mac = TRUE)
-        /\ flg_allow_send_data' = TRUE 
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-         
-
-SetFlgRxMsgDecoded  ==
-        /\ flg_rx_msg_decoded' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-
-SetFlgRxChkMac  ==
-        /\ flg_rx_chk_mac' = TRUE
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-
-
-SetFlgAllowRecvData == 
-        /\ flg_cipher_on = TRUE
-        /\ (flg_allow_user_data = TRUE)
-        /\ (flg_rx_msg_decoded = TRUE)
-        /\ (flg_rx_chk_mac = TRUE)
-        /\ flg_allow_recv_data' = TRUE 
-        /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,auth_fail_cnt,recent_auth_tim>>    
-        
-    (* Complete Handshake  *)
-SetFlgsHndshkCompleteSts == 
-        flg_comm_active' = TRUE /\
-        flg_got_cli_nonce' = TRUE /\
-        flg_sent_serv_nonce' = TRUE /\
-        flg_sent_cert' = TRUE /\
-        flg_got_premaster' = TRUE /\
-        flg_set_cmn_key' = TRUE /\
-        flg_done_hs_verify' = TRUE /\
-        flg_sent_hs_verify' = TRUE /\
-        flg_cipher_on' = TRUE /\
-        flg_allow_user_auth' = TRUE
-        /\ UNCHANGED  <<flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-    (* Reset Handshake Status *)
-ResetFlgsHndshkCompleteSts == 
-    /\ flg_allow_user_data = FALSE
-    
-    /\  flg_comm_active' = FALSE /\
-        flg_got_cli_nonce' = FALSE /\
-        flg_sent_serv_nonce' = FALSE /\
-        flg_sent_cert' = FALSE /\
-        flg_got_premaster' = FALSE /\
-        flg_set_cmn_key' = FALSE /\
-        flg_done_hs_verify' = FALSE /\
-        flg_sent_hs_verify' = FALSE /\
-        flg_cipher_on' = FALSE /\
-        flg_allow_user_auth' = FALSE /\
-        flg_done_user_auth' =FALSE
-    /\ UNCHANGED <<flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-    (* Complete user authentication *)
-SetFlgsAuthCompleteSts ==
-    /\ flg_allow_user_auth = TRUE
-    /\
-        flg_done_user_auth' = TRUE  /\
-        flg_allow_user_data' = TRUE
-    /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-    (* Reset user authentication status *)
-ResetFlgsAuthCompleteSts == 
-    /\
-        flg_done_user_auth' = FALSE /\
-        flg_allow_user_data' = FALSE /\
-        
-        flg_allow_send_data' = FALSE /\
-        flg_allow_recv_data' = FALSE
-    /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth, flg_tx_msg_encoded,flg_tx_add_mac,flg_rx_msg_decoded,flg_rx_chk_mac,auth_fail_cnt,recent_auth_tim>>    
-          
-
-    (* Complete https_acp successfully *)
-SetFlgsAcpCompleteSts == 
-    /\
-        flg_comm_active' = TRUE /\
-        flg_got_cli_nonce' = TRUE /\
-        flg_sent_serv_nonce' = TRUE /\
-        flg_sent_cert' = TRUE /\
-        flg_got_premaster' = TRUE /\
-        flg_set_cmn_key' = TRUE /\
-        flg_done_hs_verify' = TRUE /\
-        flg_sent_hs_verify' = TRUE /\
-        flg_cipher_on' = TRUE /\
-        flg_allow_user_auth' = TRUE /\
-        flg_done_user_auth' = TRUE  /\
-        flg_allow_user_data' = TRUE
-    /\ UNCHANGED <<flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-
-    (* Reset https_acp status *)
-ResetFlgsAcpCompleteSts == 
-    /\
-        flg_comm_active' = FALSE /\
-        flg_got_cli_nonce' = FALSE /\
-        flg_sent_serv_nonce' = FALSE /\
-        flg_sent_cert' = FALSE /\
-        flg_got_premaster' = FALSE /\
-        flg_set_cmn_key' = FALSE /\
-        flg_done_hs_verify' = FALSE /\
-        flg_sent_hs_verify' = FALSE /\
-        flg_cipher_on' = FALSE /\
-        flg_allow_user_auth' = FALSE /\
-        flg_done_user_auth' = FALSE /\
-        flg_allow_user_data' = FALSE /\
-        
-        flg_allow_send_data' = FALSE /\
-        flg_allow_recv_data' = FALSE
-    /\ UNCHANGED <<flg_tx_msg_encoded,flg_tx_add_mac,flg_rx_msg_decoded,flg_rx_chk_mac,auth_fail_cnt,recent_auth_tim>>    
-        
-(* Set status of user data receiving  *)
-SetFlgRx == 
-    /\ flg_allow_user_data = TRUE /\
-        flg_allow_recv_data '= TRUE /\
-        flg_rx_msg_decoded' = TRUE /\
-        flg_rx_chk_mac' = TRUE
-    /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,auth_fail_cnt,recent_auth_tim>>    
-        
-    
-    
-ResetFlgRx == 
-    /\
-        flg_allow_recv_data' = FALSE /\
-        flg_rx_msg_decoded' = FALSE /\
-        flg_rx_chk_mac' = FALSE
-    /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,auth_fail_cnt,recent_auth_tim>>    
-        
-    
-    (* Set status of user data transmitting  *)
-SetFlgTx == 
-    /\ flg_allow_user_data = TRUE /\
-        flg_allow_send_data' = TRUE /\
-        flg_tx_msg_encoded' = TRUE /\
-        flg_tx_add_mac' = TRUE
-    /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-        
-ResetFlgTx == 
-    /\
-        flg_allow_send_data' = FALSE /\
-        flg_tx_msg_encoded' = FALSE /\
-        flg_tx_add_mac' = FALSE
-    /\ UNCHANGED  <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-              
-    
-SetAuthInf(usr, tim, cnt) ==
-    /\ usr \in INT /\ usr \in REG_USR /\ tim \in INT /\ cnt \in NAT
-    /\
-        auth_fail_cnt'= relational_overriding(auth_fail_cnt, {<<usr,cnt>>}) /\
-        recent_auth_tim' = relational_overriding(recent_auth_tim, {<<usr, tim>>})  
-    /\ UNCHANGED <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data>>    
-            
-        
-(* set https_acp complete status and reset the count of unsuccessful authentication attemps *)
-SetAuthSuccessSts(usr, cnt, tim) == 
-    /\ usr \in INT /\ usr \in REG_USR /\ cnt \in NAT /\ tim \in INT
-    /\
-        flg_comm_active' = TRUE /\
-        flg_got_cli_nonce' = TRUE /\
-        flg_sent_serv_nonce' = TRUE /\
-        flg_sent_cert' = TRUE /\
-        flg_got_premaster' = TRUE /\
-        flg_set_cmn_key' = TRUE /\
-        flg_done_hs_verify' = TRUE /\
-        flg_sent_hs_verify' = TRUE /\
-        flg_cipher_on' = TRUE /\
-        flg_allow_user_auth' = TRUE /\
-        flg_done_user_auth' = TRUE  /\
-        flg_allow_user_data' = TRUE /\
-        
-        auth_fail_cnt'= relational_overriding(auth_fail_cnt, {<<usr,cnt>>}) /\
-        recent_auth_tim' = relational_overriding(recent_auth_tim, {<<usr, tim>>})   
-    /\ UNCHANGED <<flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data>>    
-                 
-    (* Reset https_acp status and count up unsuccessful authentication attemps *)
-SetAuthFailSts(usr, cnt, tim) == 
-    /\ usr \in INT /\ usr \in REG_USR /\ cnt \in NAT /\ tim \in INT
-    /\
-        flg_comm_active' = FALSE /\
-        flg_got_cli_nonce' = FALSE /\
-        flg_sent_serv_nonce' = FALSE /\
-        flg_sent_cert' = FALSE /\
-        flg_got_premaster' = FALSE /\
-        flg_set_cmn_key' = FALSE /\
-        flg_done_hs_verify' = FALSE /\
-        flg_sent_hs_verify' = FALSE /\
-        flg_cipher_on' = FALSE /\
-        flg_allow_user_auth' = FALSE /\
-        flg_done_user_auth' = FALSE /\
-        flg_allow_user_data' = FALSE /\
-        
-        flg_allow_send_data' = FALSE /\
-        flg_allow_recv_data' = FALSE /\
-        
-        auth_fail_cnt'= relational_overriding(auth_fail_cnt, {<<usr,cnt>>}) /\
-        recent_auth_tim' = relational_overriding(recent_auth_tim, {<<usr, tim>>})       
-    /\ UNCHANGED <<flg_tx_msg_encoded,flg_tx_add_mac,flg_rx_msg_decoded,flg_rx_chk_mac>>    
-                   
-        
-        
-allVars == <<flg_comm_active, flg_got_cli_nonce, flg_sent_serv_nonce, flg_sent_cert,flg_got_premaster,flg_set_cmn_key,flg_done_hs_verify,flg_sent_hs_verify,flg_cipher_on, flg_allow_user_auth,flg_done_user_auth,flg_allow_user_data, flg_tx_msg_encoded,flg_tx_add_mac,flg_allow_send_data,flg_rx_msg_decoded,flg_rx_chk_mac,flg_allow_recv_data,auth_fail_cnt,recent_auth_tim>>    
-             
-             
-              
-SecCtx_Next == 
-        \/ SetFlgCommActive    
-        \/ SetFlgGotCliNonce
-        \/ SetFlgSentServNonce
-        \/ SetFlgSentCert
-        \/ SetFlgGotPremaster
-        \/ SetFlgCmnKey
-        \/ SetFlgCipherOn
-        \/ SetFlgDoneHsVerify
-        \/ SetFlgSentHsVerify
-        \/ SetFlgAllowUserAuth
-        \/ SetFlgDoneUserAuth
-        \/ \E usr \in REG_USR, tim \in INT: SetSuccessUserAuth(usr, tim)
-        \/ \E usr \in REG_USR, tim \in INT: SetFailUserAuth(usr, tim)
-        \/ SetFlgAllowUserData
-        \/ SetFlgTxMsgEncoded
-        \/ SetFlgTxAddMac
-        \/ SetFlgAllowSendData
-        \/ SetFlgRxMsgDecoded
-        \/ SetFlgRxChkMac
-        \/ SetFlgAllowRecvData
-        \/ SetFlgsHndshkCompleteSts
-        \/ ResetFlgsHndshkCompleteSts
-        \/ SetFlgsAuthCompleteSts
-        \/ SetFlgsAcpCompleteSts
-        \/ ResetFlgsAcpCompleteSts
-        \/ SetFlgRx
-        \/ ResetFlgRx
-        \/ SetFlgTx
-        \/ ResetFlgTx
-        \/ \E usr \in REG_USR, tim \in INT, cnt \in NAT: SetAuthInf(usr, tim, cnt)
-        \/ \E usr \in REG_USR, tim \in INT, cnt \in NAT: SetAuthSuccessSts(usr, cnt, tim)
-        \/ \E usr \in REG_USR, tim \in INT, cnt \in NAT: SetAuthFailSts(usr, cnt, tim)
-
-=============================================================================
diff --git a/src/test/resources/examples/uf50_02.tla b/src/test/resources/examples/uf50_02/uf50_02.tla
similarity index 100%
rename from src/test/resources/examples/uf50_02.tla
rename to src/test/resources/examples/uf50_02/uf50_02.tla