From 61022245df24dfaf9add5230dd831ae698db7de5 Mon Sep 17 00:00:00 2001
From: Michael Leuschel <leuschel@uni-duesseldorf.de>
Date: Wed, 14 Feb 2024 14:19:10 +0100
Subject: [PATCH] export comments of axioms and theorems

as descriptions

Signed-off-by: Michael Leuschel <leuschel@uni-duesseldorf.de>
---
 .../eventb/translator/ContextTranslator.java   | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

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 8fa94a5d..9265e4ef 100644
--- a/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
+++ b/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
@@ -15,6 +15,8 @@ import java.util.Map;
 
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.CoreException;
+import org.eventb.core.EventBAttributes;
+import org.eventb.core.IAxiom;
 import org.eventb.core.IContextRoot;
 import org.eventb.core.IEventBRoot;
 import org.eventb.core.IExtendsContext;
@@ -45,6 +47,7 @@ import de.be4.classicalb.core.parser.node.AAbstractConstantsContextClause;
 import de.be4.classicalb.core.parser.node.AAxiomsContextClause;
 import de.be4.classicalb.core.parser.node.AConstantsContextClause;
 import de.be4.classicalb.core.parser.node.ADeferredSetSet;
+import de.be4.classicalb.core.parser.node.ADescriptionPredicate;
 import de.be4.classicalb.core.parser.node.AEventBContextParseUnit;
 import de.be4.classicalb.core.parser.node.AExtendsContextClause;
 import de.be4.classicalb.core.parser.node.AIdentifierExpression;
@@ -56,6 +59,7 @@ import de.be4.classicalb.core.parser.node.PExpression;
 import de.be4.classicalb.core.parser.node.PPredicate;
 import de.be4.classicalb.core.parser.node.PSet;
 import de.be4.classicalb.core.parser.node.TIdentifierLiteral;
+import de.be4.classicalb.core.parser.node.TPragmaFreeText;
 import de.hhu.stups.sablecc.patch.SourcePosition;
 import de.prob.core.translator.TranslationFailedException;
 import de.prob.eventb.translator.internal.EProofStatus;
@@ -373,8 +377,18 @@ public final class ContextTranslator extends AbstractComponentTranslator {
 		for (final ISCAxiom element : predicates) {
 			if (element.isTheorem() == theorems) {
 				final PPredicate predicate = translatePredicate(ff, te, element);
-				list.add(predicate);
-				labelMapping.put(predicate, element);
+				final IAxiom uca = (IAxiom) element.getSource(); // comments only attached in unchecked source
+				if (uca.hasAttribute(EventBAttributes.COMMENT_ATTRIBUTE)) {
+					final String commentString = uca.getAttributeValue(EventBAttributes.COMMENT_ATTRIBUTE);
+					//System.out.println("Axiom/theorem " + element + " has description " + commentString);
+					final TPragmaFreeText desc = new TPragmaFreeText(commentString);
+					final ADescriptionPredicate dpred = new ADescriptionPredicate(desc,predicate);
+				    list.add(dpred);
+				    labelMapping.put(dpred, element);
+				} else {
+					list.add(predicate);
+					labelMapping.put(predicate, element);
+				}
 				// proofspragmas.add(new ClassifiedPragma("discharged",
 				// predicate,
 				// Arrays.asList(new String[0]), Arrays
-- 
GitLab