From 64cd3e878e3962352e1883ccb7913448eee81b62 Mon Sep 17 00:00:00 2001
From: Jens Bendisposto <jens@bendisposto.de>
Date: Thu, 20 Dec 2012 12:43:56 +0100
Subject: [PATCH] new proof status: reviewed

---
 .../prob/eventb/translator/ContextTranslator.java | 11 ++++++++---
 .../eventb/translator/internal/EProofStatus.java  | 15 +++++++++++++++
 .../translator/internal/EventBTranslator.java     |  2 +-
 .../translator/internal/ModelTranslator.java      | 10 +++++++---
 .../translator/internal/ProofObligation.java      |  6 +++---
 5 files changed, 34 insertions(+), 10 deletions(-)
 create mode 100644 de.prob.core/src/de/prob/eventb/translator/internal/EProofStatus.java

diff --git a/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java b/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
index 425266e8..ad5b33af 100644
--- a/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
+++ b/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
@@ -53,6 +53,7 @@ import de.be4.classicalb.core.parser.node.PSet;
 import de.be4.classicalb.core.parser.node.TIdentifierLiteral;
 import de.hhu.stups.sablecc.patch.SourcePosition;
 import de.prob.core.translator.TranslationFailedException;
+import de.prob.eventb.translator.internal.EProofStatus;
 import de.prob.eventb.translator.internal.ProofObligation;
 import de.prob.eventb.translator.internal.SequentSource;
 
@@ -135,8 +136,12 @@ public final class ContextTranslator extends AbstractComponentTranslator {
 			final int confidence = status.getConfidence();
 			boolean broken = status.isBroken();
 
-			boolean discharged = !broken
-					&& confidence == IConfidence.DISCHARGED_MAX;
+			EProofStatus pstatus = EProofStatus.UNPROVEN;
+
+			if (!broken && confidence == IConfidence.REVIEWED_MAX)
+				pstatus = EProofStatus.REVIEWED;
+			if (!broken && confidence == IConfidence.DISCHARGED_MAX)
+				pstatus = EProofStatus.PROVEN;
 
 			IPOSequent sequent = status.getPOSequent();
 			IPOSource[] sources = sequent.getSources();
@@ -160,7 +165,7 @@ public final class ContextTranslator extends AbstractComponentTranslator {
 						.getLabel()));
 
 			}
-			proofs.add(new ProofObligation(origin, s, name, discharged));
+			proofs.add(new ProofObligation(origin, s, name, pstatus));
 		}
 
 	}
diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/EProofStatus.java b/de.prob.core/src/de/prob/eventb/translator/internal/EProofStatus.java
new file mode 100644
index 00000000..160bf968
--- /dev/null
+++ b/de.prob.core/src/de/prob/eventb/translator/internal/EProofStatus.java
@@ -0,0 +1,15 @@
+package de.prob.eventb.translator.internal;
+
+public enum EProofStatus {
+	UNPROVEN("false"), PROVEN("true"), REVIEWED("reviewed");
+	private final String text;
+
+	private EProofStatus(String text) {
+		this.text = text;
+	}
+
+	@Override
+	public String toString() {
+		return text;
+	}
+}
diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/EventBTranslator.java b/de.prob.core/src/de/prob/eventb/translator/internal/EventBTranslator.java
index 5f015c24..ed82d8a8 100644
--- a/de.prob.core/src/de/prob/eventb/translator/internal/EventBTranslator.java
+++ b/de.prob.core/src/de/prob/eventb/translator/internal/EventBTranslator.java
@@ -104,7 +104,7 @@ public abstract class EventBTranslator implements ITranslator {
 			}
 			pout.closeList();
 
-			pout.printAtom(Boolean.toString(proof.discharged));
+			pout.printAtom(proof.discharged.toString());
 			pout.closeTerm();
 		}
 
diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java b/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java
index 95973e0f..ead67da6 100644
--- a/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java
+++ b/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java
@@ -177,8 +177,12 @@ public class ModelTranslator extends AbstractComponentTranslator {
 			final int confidence = status.getConfidence();
 			boolean broken = status.isBroken();
 
-			boolean discharged = !broken
-					&& confidence == IConfidence.DISCHARGED_MAX;
+			EProofStatus pstatus = EProofStatus.UNPROVEN;
+
+			if (!broken && (confidence > IConfidence.PENDING && confidence <= IConfidence.REVIEWED_MAX))
+				pstatus = EProofStatus.REVIEWED;
+			if (!broken && confidence == IConfidence.DISCHARGED_MAX)
+				pstatus = EProofStatus.PROVEN;
 
 			IPOSequent sequent = status.getPOSequent();
 			IPOSource[] sources = sequent.getSources();
@@ -202,7 +206,7 @@ public class ModelTranslator extends AbstractComponentTranslator {
 				s.add(new SequentSource(type, le.getLabel()));
 
 			}
-			proofs.add(new ProofObligation(origin, s, name, discharged));
+			proofs.add(new ProofObligation(origin, s, name, pstatus));
 		}
 
 		if (!bugs.isEmpty()) {
diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/ProofObligation.java b/de.prob.core/src/de/prob/eventb/translator/internal/ProofObligation.java
index 978df176..39b10069 100644
--- a/de.prob.core/src/de/prob/eventb/translator/internal/ProofObligation.java
+++ b/de.prob.core/src/de/prob/eventb/translator/internal/ProofObligation.java
@@ -9,14 +9,14 @@ public class ProofObligation {
 	public final IEventBRoot origin;
 	public final ArrayList<SequentSource> sources;
 	public final String kind;
-	public final boolean discharged;
+	public final EProofStatus discharged;
 
 	public ProofObligation(IEventBRoot origin, ArrayList<SequentSource> s,
-			String name, boolean discharged) {
+			String name, EProofStatus pstatus) {
 		this.origin = origin;
 		this.sources = s;
 		this.kind = name;
-		this.discharged = discharged;
+		this.discharged = pstatus;
 	}
 
 }
-- 
GitLab