From a2ec771bde9bbeab0827642ef3fbb79b6847d578 Mon Sep 17 00:00:00 2001 From: Miles Vella <673-vella@users.noreply.gitlab.cs.uni-duesseldorf.de> Date: Tue, 31 Oct 2023 15:37:54 +0100 Subject: [PATCH] Update usages of Prolog Library for Abstract Integer Representation --- .gitignore | 1 + .../core/command/ComputeCoverageCommand.java | 13 ++++++++++--- .../prob/core/command/LtlCheckingCommand.java | 5 ++--- .../prob/core/command/ModelCheckingCommand.java | 9 +++------ .../de/prob/core/domainobjects/Operation.java | 17 +++++++---------- .../core/domainobjects/ltl/CounterExample.java | 9 ++++----- .../commands/GenerateLocalTestcasesCommand.java | 8 +++----- .../sap/commands/GenerateTestcaseCommand.java | 6 +++--- .../src/de/prob/ui/ProBGeneralPreferences.java | 10 +++++----- 9 files changed, 38 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index df249aee..bcc069bd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ **/bin/ **/target/ +.idea/ .gradle/ .metadata/ **/pom.xml diff --git a/de.prob.core/src/de/prob/core/command/ComputeCoverageCommand.java b/de.prob.core/src/de/prob/core/command/ComputeCoverageCommand.java index 4561a706..960b30a4 100644 --- a/de.prob.core/src/de/prob/core/command/ComputeCoverageCommand.java +++ b/de.prob.core/src/de/prob/core/command/ComputeCoverageCommand.java @@ -14,7 +14,7 @@ import de.prob.core.Animator; import de.prob.exceptions.ProBException; import de.prob.parser.ISimplifiedROMap; import de.prob.prolog.output.IPrologTermOutput; -import de.prob.prolog.term.IntegerPrologTerm; +import de.prob.prolog.term.AIntegerPrologTerm; import de.prob.prolog.term.ListPrologTerm; import de.prob.prolog.term.PrologTerm; @@ -29,9 +29,16 @@ public final class ComputeCoverageCommand implements IComposableCommand { private final List<String> nodes = new ArrayList<String>(); private final List<String> uncovered = new ArrayList<String>(); + @Deprecated public ComputeCoverageResult(final IntegerPrologTerm totalNumberOfNodes, final IntegerPrologTerm totalNumberOfTransitions, final ListPrologTerm ops, final ListPrologTerm nodes, final ListPrologTerm uncovered) { + this((AIntegerPrologTerm) totalNumberOfNodes, totalNumberOfTransitions, ops, nodes, uncovered); + } + + public ComputeCoverageResult(final AIntegerPrologTerm totalNumberOfNodes, + final AIntegerPrologTerm totalNumberOfTransitions, final ListPrologTerm ops, final ListPrologTerm nodes, + final ListPrologTerm uncovered) { this.totalNumberOfNodes = totalNumberOfNodes.getValue(); this.totalNumberOfTransitions = totalNumberOfTransitions.getValue(); for (PrologTerm op : ops) { @@ -83,8 +90,8 @@ public final class ComputeCoverageCommand implements IComposableCommand { @Override public void processResult(final ISimplifiedROMap<String, PrologTerm> bindings) throws CommandException { - IntegerPrologTerm totalNodeNr = (IntegerPrologTerm) bindings.get("TotalNodeNr"); - IntegerPrologTerm totalTransNr = (IntegerPrologTerm) bindings.get("TotalTransSum"); + AIntegerPrologTerm totalNodeNr = (AIntegerPrologTerm) bindings.get("TotalNodeNr"); + AIntegerPrologTerm totalTransNr = (AIntegerPrologTerm) bindings.get("TotalTransSum"); ListPrologTerm ops = (ListPrologTerm) bindings.get("OpStat"); ListPrologTerm nodes = (ListPrologTerm) bindings.get("NodeStat"); diff --git a/de.prob.core/src/de/prob/core/command/LtlCheckingCommand.java b/de.prob.core/src/de/prob/core/command/LtlCheckingCommand.java index ed5320ea..59793d7e 100644 --- a/de.prob.core/src/de/prob/core/command/LtlCheckingCommand.java +++ b/de.prob.core/src/de/prob/core/command/LtlCheckingCommand.java @@ -11,8 +11,8 @@ import de.prob.core.domainobjects.Operation; import de.prob.exceptions.ProBException; import de.prob.parser.ISimplifiedROMap; import de.prob.prolog.output.IPrologTermOutput; +import de.prob.prolog.term.AIntegerPrologTerm; import de.prob.prolog.term.CompoundPrologTerm; -import de.prob.prolog.term.IntegerPrologTerm; import de.prob.prolog.term.ListPrologTerm; import de.prob.prolog.term.PrologTerm; @@ -206,8 +206,7 @@ public final class LtlCheckingCommand implements IComposableCommand { loopEntry = -1; } else if (loopStatus.hasFunctor("loop", 1)) { pathType = PathType.INFINITE; - loopEntry = ((IntegerPrologTerm) loopStatus.getArgument(1)) - .getValue().intValue(); + loopEntry = ((AIntegerPrologTerm) loopStatus.getArgument(1)).intValueExact(); } else throw new CommandException( "LTL model check returned unexpected loop status: " diff --git a/de.prob.core/src/de/prob/core/command/ModelCheckingCommand.java b/de.prob.core/src/de/prob/core/command/ModelCheckingCommand.java index 5e5858fe..8b160009 100644 --- a/de.prob.core/src/de/prob/core/command/ModelCheckingCommand.java +++ b/de.prob.core/src/de/prob/core/command/ModelCheckingCommand.java @@ -59,12 +59,9 @@ public final class ModelCheckingCommand implements IComposableCommand { CompoundPrologTerm term = (CompoundPrologTerm) bindings.get("Result"); CompoundPrologTerm stats = (CompoundPrologTerm) bindings.get("Stats"); - int processedTotal = ((IntegerPrologTerm) stats.getArgument(3)) - .getValue().intValue(); - int numStates = ((IntegerPrologTerm) stats.getArgument(1)).getValue() - .intValue(); - int numTransitions = ((IntegerPrologTerm) stats.getArgument(2)) - .getValue().intValue(); + int processedTotal = ((AIntegerPrologTerm) stats.getArgument(3)).intValueExact(); + int numStates = ((AIntegerPrologTerm) stats.getArgument(1)).intValueExact(); + int numTransitions = ((AIntegerPrologTerm) stats.getArgument(2)).intValueExact(); result = new ModelCheckingResult<Result>(Result.class, term, processedTotal, numStates, numTransitions); diff --git a/de.prob.core/src/de/prob/core/domainobjects/Operation.java b/de.prob.core/src/de/prob/core/domainobjects/Operation.java index 16c341bb..8c586d7e 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/Operation.java +++ b/de.prob.core/src/de/prob/core/domainobjects/Operation.java @@ -12,8 +12,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import de.prob.prolog.term.AIntegerPrologTerm; import de.prob.prolog.term.CompoundPrologTerm; -import de.prob.prolog.term.IntegerPrologTerm; import de.prob.prolog.term.ListPrologTerm; import de.prob.prolog.term.PrologTerm; import de.prob.unicode.UnicodeTranslator; @@ -121,9 +121,8 @@ public final class Operation { public static Operation fromPrologTerm(final PrologTerm rawOpTerm) { final CompoundPrologTerm opTerm = (CompoundPrologTerm) rawOpTerm; - final IntegerPrologTerm pInt = (IntegerPrologTerm) opTerm - .getArgument(ID); - final long id = pInt.getValue().longValue(); + final AIntegerPrologTerm pInt = (AIntegerPrologTerm) opTerm.getArgument(ID); + final long id = pInt.longValueExact(); final String name = PrologTerm.atomicString(opTerm.getArgument(NAME)); final EventType type = SPECIAL_EVENTS.get(name); final String destId = getIdFromPrologTerm(opTerm.getArgument(DST)); @@ -171,8 +170,8 @@ public final class Operation { .getArgument(ARGS_PRETTY)); this.hashCode = initHashCode(); - final IntegerPrologTerm pInt = (IntegerPrologTerm) term.getArgument(ID); - this.id = pInt.getValue().longValue(); + final AIntegerPrologTerm pInt = (AIntegerPrologTerm) term.getArgument(ID); + this.id = pInt.longValueExact(); this.eventStack = createEventStack((ListPrologTerm) term .getArgument(INFOS)); } @@ -244,10 +243,8 @@ public final class Operation { } private static String getIdFromPrologTerm(final PrologTerm destTerm) { - if (destTerm instanceof IntegerPrologTerm) { - return ((IntegerPrologTerm) destTerm).getValue().toString(); - } - return ((CompoundPrologTerm) destTerm).getFunctor(); + // integer terms have their string representation as functor + return destTerm.atomicToString(); } public long getId() { diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExample.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExample.java index 5d3020a1..39951780 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExample.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExample.java @@ -9,8 +9,8 @@ import de.prob.core.command.LtlCheckingCommand.PathType; import de.prob.core.command.LtlCheckingCommand.Result; import de.prob.core.domainobjects.Operation; import de.prob.logging.Logger; +import de.prob.prolog.term.AIntegerPrologTerm; import de.prob.prolog.term.CompoundPrologTerm; -import de.prob.prolog.term.IntegerPrologTerm; import de.prob.prolog.term.ListPrologTerm; import de.prob.prolog.term.PrologTerm; @@ -98,8 +98,7 @@ public class CounterExample { .getArgument(3); for (int i = 0; i < values.size(); i++) { - int value = ((IntegerPrologTerm) values.get(i)).getValue() - .intValue(); + int value = ((AIntegerPrologTerm) values.get(i)).intValueExact(); // Doesn't have to be a 'predicateValues.get(index)' and not // 'predicateValues.get(i)' (predicateValues is a list of boolean lists) //predicateValues.get(index).add(value == 0 ? false : true); @@ -140,9 +139,9 @@ public class CounterExample { Arrays.asList(values)); } else if (arity == 1) { if (functor.equals("ap") || functor.equals("tp")) { - IntegerPrologTerm atomic = (IntegerPrologTerm) term + AIntegerPrologTerm atomic = (AIntegerPrologTerm) term .getArgument(1); - int atomicId = atomic.getValue().intValue(); + int atomicId = atomic.intValueExact(); final String name = atomicFormulaNames[atomicId]; diff --git a/de.prob.core/src/de/prob/sap/commands/GenerateLocalTestcasesCommand.java b/de.prob.core/src/de/prob/sap/commands/GenerateLocalTestcasesCommand.java index 8d5d9235..e1c43110 100644 --- a/de.prob.core/src/de/prob/sap/commands/GenerateLocalTestcasesCommand.java +++ b/de.prob.core/src/de/prob/sap/commands/GenerateLocalTestcasesCommand.java @@ -12,7 +12,7 @@ import de.prob.core.command.IComposableCommand; import de.prob.exceptions.ProBException; import de.prob.parser.ISimplifiedROMap; import de.prob.prolog.output.IPrologTermOutput; -import de.prob.prolog.term.IntegerPrologTerm; +import de.prob.prolog.term.AIntegerPrologTerm; import de.prob.prolog.term.PrologTerm; public class GenerateLocalTestcasesCommand implements IComposableCommand { @@ -41,10 +41,8 @@ public class GenerateLocalTestcasesCommand implements IComposableCommand { public void processResult( final ISimplifiedROMap<String, PrologTerm> bindings) throws CommandException { - final int sat = ((IntegerPrologTerm) bindings.get("SAT")).getValue() - .intValue(); - final int unsat = ((IntegerPrologTerm) bindings.get("UNSAT")) - .getValue().intValue(); + final int sat = ((AIntegerPrologTerm) bindings.get("SAT")).intValueExact(); + final int unsat = ((AIntegerPrologTerm) bindings.get("UNSAT")).intValueExact(); result = new LocalTestcasesResult(sat, unsat); } diff --git a/de.prob.core/src/de/prob/sap/commands/GenerateTestcaseCommand.java b/de.prob.core/src/de/prob/sap/commands/GenerateTestcaseCommand.java index 3ba18c58..5cfa51ce 100644 --- a/de.prob.core/src/de/prob/sap/commands/GenerateTestcaseCommand.java +++ b/de.prob.core/src/de/prob/sap/commands/GenerateTestcaseCommand.java @@ -25,7 +25,7 @@ import de.prob.core.command.LoadEventBModelCommand; import de.prob.exceptions.ProBException; import de.prob.parser.ISimplifiedROMap; import de.prob.prolog.output.IPrologTermOutput; -import de.prob.prolog.term.IntegerPrologTerm; +import de.prob.prolog.term.AIntegerPrologTerm; import de.prob.prolog.term.ListPrologTerm; import de.prob.prolog.term.PrologTerm; import de.prob.sap.exceptions.ParseProblemException; @@ -133,9 +133,9 @@ public class GenerateTestcaseCommand implements IComposableCommand { public void processResult( final ISimplifiedROMap<String, PrologTerm> bindings) throws CommandException { - final IntegerPrologTerm pNumberTests = (IntegerPrologTerm) bindings + final AIntegerPrologTerm pNumberTests = (AIntegerPrologTerm) bindings .get(NUMBER_TESTCASES); - final int numberOfTests = pNumberTests.getValue().intValue(); + final int numberOfTests = pNumberTests.intValueExact(); final ListPrologTerm pEvents = (ListPrologTerm) bindings .get(UNCOVERED_EVENTS); diff --git a/de.prob.ui/src/de/prob/ui/ProBGeneralPreferences.java b/de.prob.ui/src/de/prob/ui/ProBGeneralPreferences.java index 8ffedede..7562adf1 100644 --- a/de.prob.ui/src/de/prob/ui/ProBGeneralPreferences.java +++ b/de.prob.ui/src/de/prob/ui/ProBGeneralPreferences.java @@ -35,8 +35,8 @@ import de.prob.core.command.GetPreferencesCommand; import de.prob.core.domainobjects.ProBPreference; import de.prob.exceptions.ProBException; import de.prob.logging.Logger; +import de.prob.prolog.term.AIntegerPrologTerm; import de.prob.prolog.term.CompoundPrologTerm; -import de.prob.prolog.term.IntegerPrologTerm; import de.prob.prolog.term.ListPrologTerm; import de.prob.prolog.term.PrologTerm; @@ -154,12 +154,12 @@ public class ProBGeneralPreferences extends FieldEditorPreferencePage implements BooleanFieldEditor.SEPARATE_LABEL, parent); } else if (type.hasFunctor("range", 2)) { final CompoundPrologTerm range = (CompoundPrologTerm) type; - final BigInteger lower = ((IntegerPrologTerm) range.getArgument(1)) + final BigInteger lower = ((AIntegerPrologTerm) range.getArgument(1)) .getValue(); - final BigInteger upper = ((IntegerPrologTerm) range.getArgument(2)) + final BigInteger upper = ((AIntegerPrologTerm) range.getArgument(2)) .getValue(); - field = createIntField(name, desc, parent, lower.intValue(), upper - .intValue()); + field = createIntField(name, desc, parent, lower.intValueExact(), upper + .intValueExact()); } else if (type.isList()) { final ListPrologTerm typelist = (ListPrologTerm) type; final String[][] comboEntries = new String[typelist.size()][2]; -- GitLab