From 62a0cd454f41c1711c892f300e36c5542033a927 Mon Sep 17 00:00:00 2001
From: hansen <dominik_hansen@web.de>
Date: Tue, 19 May 2015 14:24:32 +0200
Subject: [PATCH] shortened the translation of the deadlock operator

---
 src/main/java/de/tlc4b/TLC4B.java             |  4 +++
 .../java/de/tlc4b/ltl/LTLFormulaPrinter.java  | 30 ++++-------------
 .../java/de/tlc4b/prettyprint/TLAPrinter.java |  2 +-
 src/main/java/de/tlc4b/tlc/TLCResults.java    | 33 ++++++++++++++-----
 .../java/de/tlc4b/ltl/LtlFormulaTest.java     |  4 +--
 5 files changed, 38 insertions(+), 35 deletions(-)

diff --git a/src/main/java/de/tlc4b/TLC4B.java b/src/main/java/de/tlc4b/TLC4B.java
index 025dccb..d95d1da 100644
--- a/src/main/java/de/tlc4b/TLC4B.java
+++ b/src/main/java/de/tlc4b/TLC4B.java
@@ -110,6 +110,10 @@ public class TLC4B {
 		System.out.println("Transitions fired: "
 				+ results.getNumberOfTransitions());
 		System.out.println("Result: " + results.getResultString());
+		String violatedDefinition = results.getViolatedDefinition();
+		if (violatedDefinition != null) {
+			System.out.print("Violated Definition: " + violatedDefinition);
+		}
 
 		if (results.hasTrace() && createTraceFile) {
 			String trace = results.getTrace();
diff --git a/src/main/java/de/tlc4b/ltl/LTLFormulaPrinter.java b/src/main/java/de/tlc4b/ltl/LTLFormulaPrinter.java
index 564bcfd..25d8404 100644
--- a/src/main/java/de/tlc4b/ltl/LTLFormulaPrinter.java
+++ b/src/main/java/de/tlc4b/ltl/LTLFormulaPrinter.java
@@ -185,8 +185,8 @@ public class LTLFormulaPrinter extends DepthFirstAdapter {
 		List<PActions> copy = new ArrayList<PActions>(node.getArgs());
 		for (int i = 0; i < copy.size(); i++) {
 			AOpActions action1 = (AOpActions) copy.get(i);
-			for (int j = i+1; j < copy.size(); j++) {
-				if(! (i == 0 && j == 1)){
+			for (int j = i + 1; j < copy.size(); j++) {
+				if (!(i == 0 && j == 1)) {
 					tlaPrinter.moduleStringAppend(" /\\ ");
 				}
 				tlaPrinter.moduleStringAppend("\\neg(ENABLED(");
@@ -199,25 +199,9 @@ public class LTLFormulaPrinter extends DepthFirstAdapter {
 		}
 	}
 
-	
-    @Override
-    public void caseADeadlockLtl(ADeadlockLtl node)
-    {
-    	tlaPrinter.moduleStringAppend("\\neg(");
-    	
-    	
-    Iterator<POperation> itr = this.tlaPrinter.getTLAModule().getOperations().iterator();
-		while (itr.hasNext()) {
-			Node operation = itr.next();
-			tlaPrinter.moduleStringAppend("ENABLED(");
-			tlaPrinter.printOperationCall(operation);
-			tlaPrinter.moduleStringAppend(")");
-			if (itr.hasNext()) {
-				tlaPrinter.moduleStringAppend(" \\/ ");
-			}
-		}
-    	
-        tlaPrinter.moduleStringAppend(")");
-    }
-	
+	@Override
+	public void caseADeadlockLtl(ADeadlockLtl node) {
+		tlaPrinter.moduleStringAppend("\\neg(ENABLED(Next))");
+	}
+
 }
diff --git a/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java b/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
index 9903b94..f5a381b 100644
--- a/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
+++ b/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
@@ -523,7 +523,7 @@ public class TLAPrinter extends DepthFirstAdapter {
 		moduleStringAppend("\n");
 	}
 
-	public void printOperationCall(Node operation) {
+	private void printOperationCall(Node operation) {
 		AOperation op = (AOperation) operation;
 		List<PExpression> newList = new ArrayList<PExpression>();
 		newList.addAll(op.getParameters());
diff --git a/src/main/java/de/tlc4b/tlc/TLCResults.java b/src/main/java/de/tlc4b/tlc/TLCResults.java
index 62bb3fa..a2d4ad2 100644
--- a/src/main/java/de/tlc4b/tlc/TLCResults.java
+++ b/src/main/java/de/tlc4b/tlc/TLCResults.java
@@ -14,6 +14,7 @@ import tlc2.tool.TLCStateInfo;
 public class TLCResults {
 
 	private TLCResult tlcResult;
+	private String violatedDefinition;
 	private Date startTime;
 	private Date endTime;
 
@@ -46,12 +47,16 @@ public class TLCResults {
 		return traceString;
 	}
 
+	public String getViolatedDefinition() {
+		return violatedDefinition;
+	}
+
 	public int getNumberOfTransitions() {
 		return numberOfTransitions;
 	}
 
 	public int getModelCheckingTime() {
-		if(endTime == null || startTime == null){
+		if (endTime == null || startTime == null) {
 			return -1;
 		}
 		return (int) (endTime.getTime() - startTime.getTime()) / 1000;
@@ -149,12 +154,14 @@ public class TLCResults {
 	}
 
 	private void evalErrorMessage(Message m) {
-//		System.out.println(------------------);
-//		System.out.print(m.getMessageCode() + " " + m.getParameters().length);
-//		for (int i = 0; i < m.getParameters().length; i++) {
-//			System.out.print(" " + m.getParameters()[i]);
-//		}
-//		System.out.println();
+		// System.out.println(------------------);
+		// System.out.print(m.getMessageCode() + " " +
+		// m.getParameters().length);
+		// for (int i = 0; i < m.getParameters().length; i++) {
+		// System.out.print(" " + m.getParameters()[i]);
+		// }
+		// System.out.println();
+
 		switch (m.getMessageCode()) {
 		case EC.TLC_INVARIANT_VIOLATED_INITIAL:
 		case EC.TLC_INVARIANT_VIOLATED_BEHAVIOR:
@@ -162,15 +169,20 @@ public class TLCResults {
 				tlcResult = AssertionError;
 			} else if (m.getParameters()[0].equals("NotGoal")) {
 				tlcResult = Goal;
+			} else if (m.getParameters()[0].startsWith("ASSERT_LTL")) {
+				tlcResult = TemporalPropertyViolation;
 			} else {
-				tlcResult = TLCResult.InvariantViolation;
+				tlcResult = InvariantViolation;
+			}
+			if (m.getParameters().length > 0) {
+				violatedDefinition = m.getParameters()[0];
 			}
 			break;
 
 		case EC.TLC_INITIAL_STATE: {
 			String arg1 = m.getParameters()[0];
 			if (arg1.contains("Attempted to compute the number of elements in the overridden")) {
-
+				// TODO
 			}
 			tlcResult = EnumerationError;
 			return;
@@ -186,6 +198,9 @@ public class TLCResults {
 
 		case EC.TLC_TEMPORAL_PROPERTY_VIOLATED:
 			tlcResult = TLCResult.TemporalPropertyViolation;
+			if (m.getParameters().length > 0) {
+				violatedDefinition = m.getParameters()[0];
+			}
 			break;
 
 		case EC.TLC_ASSUMPTION_EVALUATION_ERROR:
diff --git a/src/test/java/de/tlc4b/ltl/LtlFormulaTest.java b/src/test/java/de/tlc4b/ltl/LtlFormulaTest.java
index 5647ff5..a8c982b 100644
--- a/src/test/java/de/tlc4b/ltl/LtlFormulaTest.java
+++ b/src/test/java/de/tlc4b/ltl/LtlFormulaTest.java
@@ -191,7 +191,7 @@ public class LtlFormulaTest {
 		String machine = "MACHINE test\n"
 				+ "OPERATIONS foo = skip; bar = skip; bazz = skip\n"
 				+ "END";
-	    String expected = "\\neg(ENABLED(foo) \\/ ENABLED(bar) \\/ ENABLED(bazz))";
+	    String expected = "\\neg(ENABLED(Next))";
 		compareLTLFormula(expected, machine, "deadlock");
 	}
 	
@@ -200,7 +200,7 @@ public class LtlFormulaTest {
 		String machine = "MACHINE test\n"
 				+ "OPERATIONS foo(a) = SELECT a : 1..3 THEN skip END\n"
 				+ "END";
-	    String expected = "\\neg(ENABLED(\\E a \\in (1 .. 3) : foo(a)))";
+	    String expected = "\\neg(ENABLED(Next))";
 		compareLTLFormula(expected, machine, "deadlock");
 	}
 	
-- 
GitLab