diff --git a/src/main/java/de/tla2b/output/ASTPrettyPrinter.java b/src/main/java/de/tla2b/output/ASTPrettyPrinter.java
index 9c8902b2470621e3f45becc008e4009cd8bca684..a0359d0c4d6c1cf8610ec40b77e9818c61d52706 100644
--- a/src/main/java/de/tla2b/output/ASTPrettyPrinter.java
+++ b/src/main/java/de/tla2b/output/ASTPrettyPrinter.java
@@ -12,9 +12,9 @@ import de.be4.classicalb.core.parser.node.ABecomesSuchSubstitution;
 import de.be4.classicalb.core.parser.node.ADefinitionExpression;
 import de.be4.classicalb.core.parser.node.ADefinitionPredicate;
 import de.be4.classicalb.core.parser.node.AExpressionDefinitionDefinition;
-import de.be4.classicalb.core.parser.node.AExpressionParseUnit;
 import de.be4.classicalb.core.parser.node.AIdentifierExpression;
 import de.be4.classicalb.core.parser.node.ALambdaExpression;
+import de.be4.classicalb.core.parser.node.AMinusOrSetSubtractExpression;
 import de.be4.classicalb.core.parser.node.AOperation;
 import de.be4.classicalb.core.parser.node.AOperationsMachineClause;
 import de.be4.classicalb.core.parser.node.APredicateDefinitionDefinition;
@@ -150,7 +150,7 @@ public class ASTPrettyPrinter extends ExtendedDFAdapter {
 
 		putInfixOperator("AAddExpression", "+", 180, left);
 		putInfixOperator("AMinusOrSetSubtractExpression", "-", 180, left);
-
+		
 		putInfixOperator("ACartesianProductExpression", "*", 190, left);
 		putInfixOperator("AMultOrCartExpression", "*", 190, left);
 		putInfixOperator("ADivExpression", "/", 190, left);
diff --git a/src/main/java/de/tla2bAst/BAstCreator.java b/src/main/java/de/tla2bAst/BAstCreator.java
index 80b2bda6c3a8055001dd0cac65c65a5386bdfc3e..a6e7987992785c623d59cf8c8af01d3fac11a89c 100644
--- a/src/main/java/de/tla2bAst/BAstCreator.java
+++ b/src/main/java/de/tla2bAst/BAstCreator.java
@@ -9,6 +9,7 @@ import java.util.List;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import sun.audio.AudioPlayer;
 import tla2sany.semantic.ASTConstants;
 import tla2sany.semantic.AssumeNode;
 import tla2sany.semantic.AtNode;
@@ -24,6 +25,7 @@ import tla2sany.semantic.OpDefNode;
 import tla2sany.semantic.StringNode;
 import tla2sany.semantic.SymbolNode;
 import tlc2.tool.BuiltInOPs;
+import tlc2.value.ModelValue;
 import tlc2.value.SetEnumValue;
 import tlc2.value.Value;
 import tlc2.value.ValueConstants;
@@ -79,6 +81,7 @@ import de.be4.classicalb.core.parser.node.ALessPredicate;
 import de.be4.classicalb.core.parser.node.AMachineHeader;
 import de.be4.classicalb.core.parser.node.AMachineMachineVariant;
 import de.be4.classicalb.core.parser.node.AMemberPredicate;
+import de.be4.classicalb.core.parser.node.AMinusExpression;
 import de.be4.classicalb.core.parser.node.AMinusOrSetSubtractExpression;
 import de.be4.classicalb.core.parser.node.AMultOrCartExpression;
 import de.be4.classicalb.core.parser.node.ANaturalSetExpression;
@@ -235,6 +238,8 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 
 	}
 
+	
+	
 	private void createSetsClause() {
 		if (conEval == null || conEval.getEnumerationSet() == null
 				|| conEval.getEnumerationSet().size() == 0)
@@ -245,6 +250,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 		OpDeclNode[] cons = moduleNode.getConstantDecls();
 		for (int i = 0; i < cons.length; i++) {
 			TLAType type = (TLAType) cons[i].getToolObject(TYPE_ID);
+
 			EnumType e = null;
 			if (type instanceof SetType) {
 				if (((SetType) type).getSubType() instanceof EnumType) {
@@ -260,7 +266,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();
@@ -693,8 +699,21 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 			return new AIntegerExpression(new TIntegerLiteral(
 					tlcValue.toString()));
 
+		case SETENUMVALUE: {
+			SetEnumValue s = (SetEnumValue) tlcValue;
+			ArrayList<PExpression> list = new ArrayList<PExpression>();
+			for (int i = 0; i < s.elems.size(); i++) {
+				Value v = s.elems.elementAt(i);
+				ModelValue m = (ModelValue) v;
+				AIdentifierExpression id = createIdentifierNode(m.toString());
+				list.add(id);
+			}
+			return new ASetExtensionExpression(list);
 		}
 
+		}
+
+		System.out.println(tlcValue);
 		throw new RuntimeException();
 	}
 
@@ -1174,18 +1193,48 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals,
 			return new ATailExpression(
 					visitExprOrOpArgNodeExpression(n.getArgs()[0]));
 
-		case B_OPCODE_subseq: { // SubSeq(s,m,n)
-			ARestrictFrontExpression restrictFront = new ARestrictFrontExpression();
-			restrictFront
-					.setLeft(visitExprOrOpArgNodeExpression(n.getArgs()[0]));
-			restrictFront
-					.setRight(visitExprOrOpArgNodeExpression(n.getArgs()[2]));
-
-			ARestrictTailExpression restrictTail = new ARestrictTailExpression();
-			restrictTail.setLeft(restrictFront);
-			restrictTail
-					.setRight(visitExprOrOpArgNodeExpression(n.getArgs()[1]));
-			return restrictTail;
+		case B_OPCODE_subseq: { // SubSeq(s,a,b)
+			//%p.(p : 1..(b-a+1)| s(p+a-1))
+			ALambdaExpression lambda = new ALambdaExpression();
+			lambda.setIdentifiers(createIdentifierList("t_"));
+			AMemberPredicate member = new AMemberPredicate();
+			member.setLeft(createIdentifierNode("t_"));
+			AIntervalExpression interval = new AIntervalExpression();
+			interval.setLeftBorder(new AIntegerExpression(new TIntegerLiteral("1")));
+			AMinusOrSetSubtractExpression minus = new AMinusOrSetSubtractExpression();
+			minus.setLeft(visitExprOrOpArgNodeExpression(n.getArgs()[2]));
+			minus.setRight(visitExprOrOpArgNodeExpression(n.getArgs()[1]));
+			AAddExpression add = new AAddExpression();
+			add.setLeft(minus);
+			add.setRight(new AIntegerExpression(new TIntegerLiteral("1")));
+			interval.setRightBorder(add);
+			member.setRight(interval);
+			lambda.setPredicate(member);
+			AAddExpression add2 = new AAddExpression();
+			add2.setLeft(createIdentifierNode("t_"));
+			add2.setRight(visitExprOrOpArgNodeExpression(n.getArgs()[1]));
+			AMinusOrSetSubtractExpression minus2 = new AMinusOrSetSubtractExpression();
+			minus2.setLeft(add2);
+			minus2.setRight(new AIntegerExpression(new TIntegerLiteral("1")));
+			ArrayList<PExpression> params = new ArrayList<PExpression>();
+			params.add(minus2);
+			AFunctionExpression func = new AFunctionExpression();
+			func.setIdentifier(visitExprOrOpArgNodeExpression(n.getArgs()[0]));
+			func.setParameters(params);
+			lambda.setExpression(func);
+			return lambda;
+			
+//			ARestrictFrontExpression restrictFront = new ARestrictFrontExpression();
+//			restrictFront
+//					.setLeft(visitExprOrOpArgNodeExpression(n.getArgs()[0]));
+//			restrictFront
+//					.setRight(visitExprOrOpArgNodeExpression(n.getArgs()[2]));
+//
+//			ARestrictTailExpression restrictTail = new ARestrictTailExpression();
+//			restrictTail.setLeft(restrictFront);
+//			restrictTail
+//					.setRight(visitExprOrOpArgNodeExpression(n.getArgs()[1]));
+//			return restrictTail;
 		}
 
 		}
diff --git a/src/test/java/de/tla2b/prettyprintb/standardmodules/SequencesTest.java b/src/test/java/de/tla2b/prettyprintb/standardmodules/SequencesTest.java
index 70094e42e33fe891c82457e087c183172d597e5f..b179ebce34099b111dda4ccfe5ff44d1335151dc 100644
--- a/src/test/java/de/tla2b/prettyprintb/standardmodules/SequencesTest.java
+++ b/src/test/java/de/tla2b/prettyprintb/standardmodules/SequencesTest.java
@@ -86,7 +86,7 @@ public class SequencesTest {
 				+ "ASSUME SubSeq(<<1,2,3,4,5>>, 2, 3) = <<2,3>> \n"
 				+ "=================================";
 		final String expected = "MACHINE Testing\n"
-				+ "PROPERTIES ([1,2,3,4,5] /|\\ 3) \\|/ 2 = [2,3] \n"
+				+ "PROPERTIES %(t_).(t_ : 1 .. (3 - 2) + 1 | [1,2,3,4,5](((t_ + 2) - 1))) = [2,3] \n"
 				+ "END";
 		compare(expected, module);
 	}