From e83ca5eee211ffca35016e96f41a2375b37d45bc Mon Sep 17 00:00:00 2001 From: Drodt Date: Fri, 13 Mar 2026 18:05:08 +0100 Subject: [PATCH 01/37] Remove SortDependingFunction class --- .../key/testgen/oracle/OracleGenerator.java | 19 +- .../de/uka/ilkd/key/java/TypeConverter.java | 10 +- .../java/de/uka/ilkd/key/ldt/HeapLDT.java | 79 ++++--- .../de/uka/ilkd/key/ldt/JavaDLTheory.java | 61 +++-- .../main/java/de/uka/ilkd/key/ldt/LDT.java | 27 ++- .../main/java/de/uka/ilkd/key/ldt/SeqLDT.java | 19 +- .../java/de/uka/ilkd/key/ldt/SortLDT.java | 18 +- .../key/logic/op/SortDependingFunction.java | 208 ------------------ .../key/nparser/builder/DefaultBuilder.java | 11 - .../nparser/builder/ExpressionBuilder.java | 2 +- .../builder/FunctionPredicateBuilder.java | 116 ++++------ .../java/de/uka/ilkd/key/pp/LogicPrinter.java | 15 +- .../java/de/uka/ilkd/key/pp/NotationInfo.java | 7 - .../de/uka/ilkd/key/proof/TacletIndex.java | 5 - .../key/proof/init/ProblemInitializer.java | 4 +- .../LightweightSyntacticalReplaceVisitor.java | 18 +- .../key/rule/SyntacticalReplaceVisitor.java | 18 +- .../SyntaxElementMatchProgramGenerator.java | 11 - .../JavaDLMatchVMInstructionSet.java | 5 - ...milarSortDependingFunctionInstruction.java | 28 --- .../metaconstruct/ArrayBaseInstanceOf.java | 9 +- .../ilkd/key/smt/AbstractSMTTranslator.java | 7 +- .../de/uka/ilkd/key/smt/SMTObjTranslator.java | 31 +-- .../uka/ilkd/key/smt/newsmt2/CastHandler.java | 16 +- .../smt/newsmt2/CastingFunctionsHandler.java | 25 ++- .../key/smt/newsmt2/InstanceOfHandler.java | 32 +-- .../jml/translation/JMLSpecFactory.java | 2 +- .../ilkd/key/speclang/njml/Translator.java | 2 +- .../ilkd/key/strategy/JavaCardDLStrategy.java | 4 +- .../quantifierHeuristics/Instantiation.java | 6 +- .../assumptions/AssumptionGenerator.java | 22 +- .../assumptions/GenericTranslator.java | 18 +- .../lemma/GenericRemovingLemmaGenerator.java | 13 +- .../key/logic/sort/TestParametricSorts.java | 43 ---- .../TestGenericRemovingLemmaGenerator.java | 7 +- .../translation/DefinedSymbolsHandler.java | 22 +- .../translation/InstanceOperatorHandler.java | 9 +- ...er.java => ParametricFunctionHandler.java} | 25 ++- 38 files changed, 334 insertions(+), 640 deletions(-) delete mode 100644 key.core/src/main/java/de/uka/ilkd/key/logic/op/SortDependingFunction.java delete mode 100644 key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/SimilarSortDependingFunctionInstruction.java rename keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/{SortDependingFunctionHandler.java => ParametricFunctionHandler.java} (69%) diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/oracle/OracleGenerator.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/oracle/OracleGenerator.java index 85c38a0adc3..90840c69f98 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/oracle/OracleGenerator.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/oracle/OracleGenerator.java @@ -363,21 +363,14 @@ private OracleTerm translateFunction(Term term, boolean initialSelect) { return new OracleMethodCall(m, args); } - } else if (name.endsWith("::instance")) { - - if (fun instanceof SortDependingFunction sdf) { - Sort s = sdf.getSortDependingOn(); - - - OracleTerm arg = generateOracle(term.sub(0), initialSelect); - OracleType type = new OracleType(s); - - return new OracleBinTerm("instanceof", arg, type); - - - } + } else if (fun instanceof ParametricFunctionInstance pfi + && pfi.getBase() == services.getJavaDLTheory().getInstanceofSymbol(services)) { + Sort s = pfi.getArgs().head().sort(); + OracleTerm arg = generateOracle(term.sub(0), initialSelect); + OracleType type = new OracleType(s); + return new OracleBinTerm("instanceof", arg, type); } else if (op instanceof ProgramMethod) { return translateQuery(term, initialSelect, op); diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/TypeConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/TypeConverter.java index 3d2f7c8ff3a..7062b9e3452 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/TypeConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/TypeConverter.java @@ -569,11 +569,11 @@ public Expression convertToProgramElement(JTerm term) { private Expression translateJavaCast(JTerm term, ExtList children) { if (term.op() instanceof Function function) { - if (function instanceof SortDependingFunction sdf) { - SortDependingFunction castFunction = - SortDependingFunction.getFirstInstance(JavaDLTheory.CAST_NAME, services); - if (sdf.isSimilar(castFunction)) { - Sort s = sdf.getSortDependingOn(); + if (function instanceof ParametricFunctionInstance pfi) { + ParametricFunctionDecl castFunction = + services.getJavaDLTheory().getCastSymbol(services); + if (pfi.getBase() == (castFunction)) { + Sort s = pfi.getArgs().head().sort(); KeYJavaType kjt = services.getJavaInfo().getKeYJavaType(s); if (kjt != null) { children.add(new TypeRef(kjt)); diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java index 26533872497..aa9480cdce1 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java @@ -11,6 +11,7 @@ import de.uka.ilkd.key.java.reference.ExecutionContext; import de.uka.ilkd.key.java.reference.FieldReference; import de.uka.ilkd.key.java.reference.ReferencePrefix; +import de.uka.ilkd.key.logic.GenericArgument; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.TermServices; import de.uka.ilkd.key.logic.op.*; @@ -56,8 +57,8 @@ public final class HeapLDT extends LDT { private final Sort fieldSort; // select/store - private final SortDependingFunction select; - private final SortDependingFunction finalFunction; + private final ParametricFunctionDecl select; + private final ParametricFunctionDecl finalFunction; private final Function store; private final Function create; private final Function anon; @@ -67,10 +68,10 @@ public final class HeapLDT extends LDT { private final Function arr; private final Function created; private final Function initialized; - private final SortDependingFunction classPrepared; - private final SortDependingFunction classInitialized; - private final SortDependingFunction classInitializationInProgress; - private final SortDependingFunction classErroneous; + private final ParametricFunctionDecl classPrepared; + private final ParametricFunctionDecl classInitialized; + private final ParametricFunctionDecl classInitializationInProgress; + private final ParametricFunctionDecl classErroneous; // length private final Function length; @@ -100,8 +101,8 @@ public HeapLDT(TermServices services) { services.getNamespaces().programVariables(); fieldSort = sorts.lookup(new Name("Field")); - select = addSortDependingFunction(services, SELECT_NAME.toString()); - finalFunction = addSortDependingFunction(services, FINAL_NAME.toString()); + select = addParametricFunction(services, SELECT_NAME.toString()); + finalFunction = addParametricFunction(services, FINAL_NAME.toString()); store = addFunction(services, STORE_NAME.toString()); create = addFunction(services, "create"); anon = addFunction(services, "anon"); @@ -109,11 +110,11 @@ public HeapLDT(TermServices services) { arr = addFunction(services, "arr"); created = addFunction(services, "java.lang.Object::"); initialized = addFunction(services, "java.lang.Object::"); - classPrepared = addSortDependingFunction(services, ""); - classInitialized = addSortDependingFunction(services, ""); + classPrepared = addParametricFunction(services, ""); + classInitialized = addParametricFunction(services, ""); classInitializationInProgress = - addSortDependingFunction(services, ""); - classErroneous = addSortDependingFunction(services, ""); + addParametricFunction(services, ""); + classErroneous = addParametricFunction(services, ""); length = addFunction(services, "length"); nullFunc = addFunction(services, "null"); acc = addFunction(services, "acc"); @@ -233,11 +234,16 @@ public Sort getFieldSort() { } + public ParametricFunctionDecl getSelect() { + return select; + } + /** * Returns the select function for the given sort. */ - public SortDependingFunction getSelect(Sort instanceSort, TermServices services) { - return select.getInstanceFor(instanceSort, services); + public ParametricFunctionInstance getSelect(Sort instanceSort, TermServices services) { + return ParametricFunctionInstance.get(select, + ImmutableList.of(new GenericArgument(instanceSort)), (Services) services); } /** @@ -247,20 +253,21 @@ public SortDependingFunction getSelect(Sort instanceSort, TermServices services) * @param services the services to find/create the sort-depending function * @return the function symbol to access final fields for the given instance sort */ - public @NonNull SortDependingFunction getFinal(@NonNull Sort instanceSort, + public @NonNull ParametricFunctionInstance getFinal(@NonNull Sort instanceSort, @NonNull Services services) { - return finalFunction.getInstanceFor(instanceSort, services); + return ParametricFunctionInstance.get(finalFunction, + ImmutableList.of(new GenericArgument(instanceSort)), (Services) services); } /** * Check if the given operator is an instance of the "final" function to access final fields. * * @param op the operator to check - * @return true if the operator is an instance of the "X::final" srot-depending function + * @return true if the operator is an instance of the {@code final<[X]>} parametric function */ public boolean isFinalOp(Operator op) { - return op instanceof SortDependingFunction - && ((SortDependingFunction) op).isSimilar(finalFunction); + return op instanceof ParametricFunctionInstance pfi + && pfi.getBase() == finalFunction; } @@ -270,15 +277,15 @@ public boolean isFinalOp(Operator op) { */ public Sort getSortOfSelect(Operator op) { if (isSelectOp(op)) { - return ((SortDependingFunction) op).getSortDependingOn(); + return ((ParametricFunctionInstance) op).getArgs().head().sort(); } else { return null; } } public boolean isSelectOp(Operator op) { - return op instanceof SortDependingFunction - && ((SortDependingFunction) op).isSimilar(select); + return op instanceof ParametricFunctionInstance pfi + && pfi.getBase() == (select); } @@ -318,23 +325,27 @@ public Function getInitialized() { public Function getClassPrepared(Sort instanceSort, TermServices services) { - return classPrepared.getInstanceFor(instanceSort, services); + return ParametricFunctionInstance.get(classPrepared, + ImmutableList.of(new GenericArgument(instanceSort)), (Services) services); } public Function getClassInitialized(Sort instanceSort, TermServices services) { - return classInitialized.getInstanceFor(instanceSort, services); + return ParametricFunctionInstance.get(classInitialized, + ImmutableList.of(new GenericArgument(instanceSort)), (Services) services); } public Function getClassInitializationInProgress(Sort instanceSort, TermServices services) { - return classInitializationInProgress.getInstanceFor(instanceSort, services); + return ParametricFunctionInstance.get(classInitializationInProgress, + ImmutableList.of(new GenericArgument(instanceSort)), (Services) services); } public Function getClassErroneous(Sort instanceSort, TermServices services) { - return classErroneous.getInstanceFor(instanceSort, services); + return ParametricFunctionInstance.get(classErroneous, + ImmutableList.of(new GenericArgument(instanceSort)), (Services) services); } @@ -411,11 +422,11 @@ public Function getFieldSymbolForPV(LocationVariable fieldPV, Services services) assert index > 0; final Name kind = new Name(name.toString().substring(index + 2)); - SortDependingFunction firstInstance = - SortDependingFunction.getFirstInstance(kind, services); + var firstInstance = services.getNamespaces().parametricFunctions().lookup(kind); if (firstInstance != null) { Sort sortDependingOn = fieldPV.getContainerType().getSort(); - result = firstInstance.getInstanceFor(sortDependingOn, services); + result = ParametricFunctionInstance.get(firstInstance, + ImmutableList.of(new GenericArgument(sortDependingOn)), services); } else { if (fieldPV.isModel()) { int heapCount = 0; @@ -451,8 +462,8 @@ public boolean containsFunction(Function op) { if (super.containsFunction(op)) { return true; } - if (op instanceof SortDependingFunction) { - return ((SortDependingFunction) op).isSimilar(select); + if (op instanceof ParametricFunctionInstance pfi) { + return pfi.getBase() == (select); } return op.isUnique() && op.sort() == getFieldSort(); } @@ -502,8 +513,8 @@ public boolean hasLiteralFunction(Function f) { @Override public Expression translateTerm(JTerm t, ExtList children, Services services) { - if (t.op() instanceof SortDependingFunction - && ((SortDependingFunction) t.op()).isSimilar(select)) { + if (t.op() instanceof ParametricFunctionInstance pfi + && pfi.getBase() == (select)) { ProgramVariable heap = (ProgramVariable) children.removeFirst(); if (heap != getHeap()) { throw new IllegalArgumentException("Can only translate field access to base heap."); @@ -530,6 +541,4 @@ public Type getType(JTerm t) { assert false; return null; } - - } diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/JavaDLTheory.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/JavaDLTheory.java index 404a945b60e..46b31c0d023 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/JavaDLTheory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/JavaDLTheory.java @@ -9,15 +9,18 @@ import de.uka.ilkd.key.java.expression.Literal; import de.uka.ilkd.key.java.expression.Operator; import de.uka.ilkd.key.java.reference.ExecutionContext; +import de.uka.ilkd.key.logic.GenericArgument; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.TermServices; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionDecl; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.logic.sort.SortImpl; import org.key_project.logic.Name; import org.key_project.logic.op.Function; import org.key_project.logic.sort.Sort; import org.key_project.util.ExtList; +import org.key_project.util.collection.ImmutableList; /** * The JavaDL theory class provides access to function symvols, sorts that are part of the core @@ -27,16 +30,16 @@ public class JavaDLTheory extends LDT { /** - * Name of {@link #getExactInstanceofSymbol(Sort,TermServices)}. + * Name of {@link #getExactInstanceofSymbol(Services)}. */ public static final Name EXACT_INSTANCE_NAME = new Name("exactInstance"); /** - * Name of {@link #getCastSymbol(Sort,TermServices)}. + * Name of {@link #getCastSymbol(Sort,Services)}. */ public static final Name CAST_NAME = new Name("cast"); /** - * Name of {@link #getInstanceofSymbol(Sort,TermServices)}. + * Name of {@link #getInstanceofSymbol(Sort,Services)}. */ public static final Name INSTANCE_NAME = new Name("instance"); @@ -98,6 +101,10 @@ protected JavaDLTheory(TermServices services) { * } */ + public final ParametricFunctionDecl getCastSymbol(Services services) { + return services.getNamespaces().parametricFunctions().lookup(CAST_NAME); + } + /** * retrieves the cast function for the given sort * @@ -105,15 +112,18 @@ protected JavaDLTheory(TermServices services) { * @param services the TermServices for lookup * @return the found cast function */ - public final SortDependingFunction getCastSymbol(Sort sort, TermServices services) { - SortDependingFunction castFunction = - SortDependingFunction.getFirstInstance(CAST_NAME, services); + public final ParametricFunctionInstance getCastSymbol(Sort sort, Services services) { + ParametricFunctionDecl castFunction = + services.getNamespaces().parametricFunctions().lookup(CAST_NAME); if (castFunction == null) { throw new IllegalStateException("No 'cast' function found for any type."); } - SortDependingFunction result = castFunction.getInstanceFor(sort, services); - assert result.getSortDependingOn() == sort && result.sort() == sort; - return result; + return ParametricFunctionInstance.get(castFunction, + ImmutableList.of(new GenericArgument(sort)), services); + } + + public final ParametricFunctionDecl getInstanceofSymbol(Services services) { + return services.getNamespaces().parametricFunctions().lookup(INSTANCE_NAME); } /** @@ -123,14 +133,19 @@ public final SortDependingFunction getCastSymbol(Sort sort, TermServices service * @param services the TermServices for lookup * @return the found instanceof function */ - public final SortDependingFunction getInstanceofSymbol(Sort sort, TermServices services) { - SortDependingFunction result = SortDependingFunction - .getFirstInstance(INSTANCE_NAME, services) - .getInstanceFor(sort, services); - assert result.getSortDependingOn() == sort; - return result; + public final ParametricFunctionInstance getInstanceofSymbol(Sort sort, Services services) { + ParametricFunctionDecl instanceOfFunction = + services.getNamespaces().parametricFunctions().lookup(INSTANCE_NAME); + if (instanceOfFunction == null) { + throw new IllegalStateException("No 'instance' function found for any type."); + } + return ParametricFunctionInstance.get(instanceOfFunction, + ImmutableList.of(new GenericArgument(sort)), services); } + public final ParametricFunctionDecl getExactInstanceofSymbol(Services services) { + return services.getNamespaces().parametricFunctions().lookup(EXACT_INSTANCE_NAME); + } /** * retrieves the exactInstance function for the given sort @@ -139,12 +154,14 @@ public final SortDependingFunction getInstanceofSymbol(Sort sort, TermServices s * @param services the TermServices for lookup * @return the found exactInstance function */ - public final SortDependingFunction getExactInstanceofSymbol(Sort sort, TermServices services) { - SortDependingFunction result = SortDependingFunction - .getFirstInstance(EXACT_INSTANCE_NAME, services) - .getInstanceFor(sort, services); - assert result.getSortDependingOn() == sort; - return result; + public final ParametricFunctionInstance getExactInstanceofSymbol(Sort sort, Services services) { + ParametricFunctionDecl exactInstanceFn = + services.getNamespaces().parametricFunctions().lookup(EXACT_INSTANCE_NAME); + if (exactInstanceFn == null) { + throw new IllegalStateException("No 'exactInstance' function found for any type."); + } + return ParametricFunctionInstance.get(exactInstanceFn, + ImmutableList.of(new GenericArgument(sort)), services); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/LDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/LDT.java index 90b4aa96b88..5a0e0d8281a 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/LDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/LDT.java @@ -13,7 +13,7 @@ import de.uka.ilkd.key.java.reference.ExecutionContext; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.TermServices; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionDecl; import org.key_project.logic.Name; import org.key_project.logic.Named; @@ -40,6 +40,8 @@ public abstract class LDT implements Named { /** the namespace of functions this LDT feels responsible for */ private final Namespace functions = new Namespace<>(); + /// the namespace of parametric functions this LDT feels responsible for + private final Namespace parametricFunctions = new Namespace<>(); // ------------------------------------------------------------------------- // constructors @@ -78,6 +80,16 @@ protected final Function addFunction(Function f) { return f; } + /** + * adds a parametric function to the LDT + * + * @return the added parametric function (for convenience reasons) + */ + protected final ParametricFunctionDecl addParametricFunction(ParametricFunctionDecl f) { + parametricFunctions.addSafely(f); + return f; + } + /** * looks up a function in the namespace and adds it to the LDT * @@ -94,13 +106,12 @@ protected final F addFunction(TermServices services, String return (F) addFunction(f); } - protected final SortDependingFunction addSortDependingFunction(TermServices services, - String kind) { - final SortDependingFunction f = - SortDependingFunction.getFirstInstance(new Name(kind), services); - assert f != null : "LDT: Sort depending function " + kind + " not found"; - addFunction(f); - return f; + protected final ParametricFunctionDecl addParametricFunction(TermServices services, + String name) { + final ParametricFunctionDecl f = + services.getNamespaces().parametricFunctions().lookup(name); + assert f != null : "LDT: Sort depending function " + name + " not found"; + return addParametricFunction(f); } /** diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/SeqLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/SeqLDT.java index 83ea4a88e5f..4db6de7acbb 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/SeqLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/SeqLDT.java @@ -18,14 +18,17 @@ import de.uka.ilkd.key.java.expression.operator.adt.SeqSingleton; import de.uka.ilkd.key.java.expression.operator.adt.SeqSub; import de.uka.ilkd.key.java.reference.ExecutionContext; +import de.uka.ilkd.key.logic.GenericArgument; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.TermServices; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionDecl; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import org.key_project.logic.Name; import org.key_project.logic.op.Function; import org.key_project.logic.sort.Sort; import org.key_project.util.ExtList; +import org.key_project.util.collection.ImmutableList; import org.jspecify.annotations.Nullable; @@ -36,7 +39,7 @@ public final class SeqLDT extends LDT { public static final Name SEQGET_NAME = new Name("seqGet"); // getters - private final SortDependingFunction seqGet; + private final ParametricFunctionDecl seqGet; private final Function seqLen; private final Function seqIndexOf; @@ -52,7 +55,7 @@ public final class SeqLDT extends LDT { public SeqLDT(TermServices services) { super(NAME, services); - seqGet = addSortDependingFunction(services, "seqGet"); + seqGet = addParametricFunction((Services) services, "seqGet"); seqLen = addFunction(services, "seqLen"); seqEmpty = addFunction(services, "seqEmpty"); seqSingleton = addFunction(services, "seqSingleton"); @@ -65,9 +68,13 @@ public SeqLDT(TermServices services) { values = addFunction(services, "values"); } + public ParametricFunctionDecl getSeqGet() { + return seqGet; + } - public SortDependingFunction getSeqGet(Sort instanceSort, TermServices services) { - return seqGet.getInstanceFor(instanceSort, services); + public ParametricFunctionInstance getSeqGet(Sort instanceSort, TermServices services) { + return ParametricFunctionInstance.get(seqGet, + ImmutableList.of(new GenericArgument(instanceSort)), (Services) services); } @@ -163,7 +170,7 @@ public Function getFunctionFor(Operator op, Services serv, } else if (op instanceof SeqIndexOf) { return seqIndexOf; } else if (op instanceof SeqGet) { - return seqGet; + return getSeqGet(op.getKeYJavaType(serv, ec).getSort(), serv); } else if (op instanceof SeqLength) { return seqLen; } diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/SortLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/SortLDT.java index d59139d1d2d..5cfe08e4409 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/SortLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/SortLDT.java @@ -10,32 +10,36 @@ import de.uka.ilkd.key.java.expression.Operator; import de.uka.ilkd.key.java.expression.operator.Subtype; import de.uka.ilkd.key.java.reference.ExecutionContext; +import de.uka.ilkd.key.logic.GenericArgument; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.TermServices; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionDecl; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.proof.io.ProofSaver; import org.key_project.logic.Name; import org.key_project.logic.op.Function; import org.key_project.logic.sort.Sort; import org.key_project.util.ExtList; +import org.key_project.util.collection.ImmutableList; public final class SortLDT extends LDT { public static final Name NAME = new Name("SORT"); - private final SortDependingFunction ssort; + private final ParametricFunctionDecl ssort; private final Function ssubsort; public SortLDT(TermServices services) { super(NAME, services); - ssort = addSortDependingFunction(services, "ssort"); + ssort = addParametricFunction((Services) services, "ssort"); ssubsort = addFunction(services, "ssubsort"); } - public SortDependingFunction getSsort(Sort instanceSort, TermServices services) { - return ssort.getInstanceFor(instanceSort, services); + public ParametricFunctionInstance getSsort(Sort instanceSort, TermServices services) { + return ParametricFunctionInstance.get(ssort, + ImmutableList.of(new GenericArgument(instanceSort)), (Services) services); } public Function getSsubsort() { @@ -78,12 +82,12 @@ public Function getFunctionFor(Operator op, Services services, ExecutionContext @Override public boolean hasLiteralFunction(Function f) { - return f instanceof SortDependingFunction sf && sf.isSimilar(ssort); + return f instanceof ParametricFunctionInstance sf && sf.getBase() == ssort; } @Override public Expression translateTerm(JTerm t, ExtList children, Services services) { - if (t.op() instanceof SortDependingFunction sf && sf.isSimilar(ssort)) { + if (t.op() instanceof ParametricFunctionInstance sf && sf.getBase() == ssort) { // TODO } diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/op/SortDependingFunction.java b/key.core/src/main/java/de/uka/ilkd/key/logic/op/SortDependingFunction.java deleted file mode 100644 index 0fee59de13b..00000000000 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/op/SortDependingFunction.java +++ /dev/null @@ -1,208 +0,0 @@ -/* This file is part of KeY - https://key-project.org - * KeY is licensed under the GNU General Public License Version 2 - * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.logic.op; - -import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.ldt.JavaDLTheory; -import de.uka.ilkd.key.logic.NamespaceSet; -import de.uka.ilkd.key.logic.TermServices; -import de.uka.ilkd.key.logic.sort.GenericSort; -import de.uka.ilkd.key.logic.sort.ParametricSortInstance; -import de.uka.ilkd.key.logic.sort.ProgramSVSort; - -import org.key_project.logic.Name; -import org.key_project.logic.Namespace; -import org.key_project.logic.SyntaxElement; -import org.key_project.logic.op.Function; -import org.key_project.logic.sort.Sort; -import org.key_project.util.collection.ImmutableArray; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -/** - * The objects of this class represent families of function symbols, where each family contains an - * instantiation of a template symbol for a particular sort. The following invariant has to hold: - * Given two sort-depending functions f1 and f2 then from f1.isSimilar(f2) and - * f1.getSortDependingOn() == f2.getSortDependingOn() follows f1 == f2 - */ -public final class SortDependingFunction extends JFunction { - private static final Logger LOGGER = LoggerFactory.getLogger(SortDependingFunction.class); - - private final SortDependingFunctionTemplate template; - private final Sort sortDependingOn; - - // ------------------------------------------------------------------------- - // constructors - // ------------------------------------------------------------------------- - - private SortDependingFunction(SortDependingFunctionTemplate template, Sort sortDependingOn, - Services services) { - super(instantiateName(template.kind, sortDependingOn), - ParametricSortInstance.instantiate(template.sortDependingOn, sortDependingOn, - template.sort, services), - instantiateArgSorts(template, sortDependingOn, services), null, template.unique, false); - this.template = template; - this.sortDependingOn = sortDependingOn; - } - - - // ------------------------------------------------------------------------- - // internal methods - // ------------------------------------------------------------------------- - - private static Name instantiateName(Name kind, Sort sortDependingOn) { - return new Name(sortDependingOn + "::" + kind); - } - - - private static Sort instantiateSort(SortDependingFunctionTemplate template, - Sort sortDependingOn) { - return template.sort == template.sortDependingOn ? sortDependingOn : template.sort; - } - - - private static ImmutableArray instantiateArgSorts(SortDependingFunctionTemplate template, - Sort sortDependingOn, Services services) { - Sort[] result = new Sort[template.argSorts.size()]; - for (int i = 0; i < result.length; i++) { - result[i] = ParametricSortInstance.instantiate(template.sortDependingOn, - sortDependingOn, template.argSorts.get(i), services); - } - return new ImmutableArray<>(result); - } - - - // ------------------------------------------------------------------------- - // public interface - // ------------------------------------------------------------------------- - - @Override - public int hashCode() { - return name().hashCode(); - } - - public static SortDependingFunction createFirstInstance(GenericSort sortDependingOn, Name kind, - Sort sort, Sort[] argSorts, boolean unique, Services services) { - SortDependingFunctionTemplate template = new SortDependingFunctionTemplate(sortDependingOn, - kind, sort, new ImmutableArray<>(argSorts), unique); - return new SortDependingFunction(template, JavaDLTheory.ANY, services); - } - - - public static SortDependingFunction getFirstInstance(Name kind, TermServices services) { - return (SortDependingFunction) services.getNamespaces().functions() - .lookup(instantiateName(kind, JavaDLTheory.ANY)); - } - - /** - * returns the variant for the given sort - * - * @param sort the {@link Sort} for which to retrieve the corresponding variant of this function - * @param services the {@link Services} - * @return the variant for the given sort - */ - public synchronized SortDependingFunction getInstanceFor(Sort sort, TermServices services) { - if (sort == this.sortDependingOn) { - return this; - } - - SortDependingFunction n = (SortDependingFunction) services.getNamespaces() - .lookup(instantiateName(getKind(), sort)); - - if (sort instanceof ProgramSVSort) { - throw new AssertionError(); - } - if (sort == AbstractTermTransformer.METASORT) { - throw new AssertionError(); - } - - final NamespaceSet namespaces = services.getNamespaces(); - Namespace functions = namespaces.functions(); - - SortDependingFunction result; - synchronized (namespaces) { - result = (SortDependingFunction) namespaces.lookup(instantiateName(getKind(), sort)); - // ugly: multiple generic sorts with the same name may exist over time - - if (result != null && sort instanceof GenericSort - && result.getSortDependingOn() != sort) { - result = new SortDependingFunction(template, sort, (Services) services); - synchronized (functions) { - functions.add(result); - if (instantiateName(getKind(), sort).toString().contains("String") - && instantiateName(getKind(), sort).toString().contains("seqGet") - && (n == null || n.getSortDependingOn() != sort)) { - LOGGER.debug("Hash code: {}", result.hashCode()); - } - } - } else if (result == null) { - result = new SortDependingFunction(template, sort, (Services) services); - // The namespaces may be wrapped for local symbols - // Sort depending on functions are to be added to the "root" namespace, however. - // Therefore, let's rewind to the root (MU, 2017-03) - synchronized (functions) { - while (functions.parent() != null) { - functions = functions.parent(); - } - synchronized (functions) { - functions.addSafely(result); - } - } - } - } - - if (result.getSortDependingOn() != sort) { - throw new AssertionError( - String.format("%s depends on %s (hash %d) but should depend on %s (hash %d)", - result, result.getSortDependingOn(), result.hashCode(), sort, sort.hashCode())); - } - if (!isSimilar(result)) { - throw new AssertionError(result + " should be similar to " + this); - } - if (namespaces.lookup(instantiateName(getKind(), sort)) != result) { - throw new AssertionError(); - } - - return result; - } - - - public Sort getSortDependingOn() { - return sortDependingOn; - } - - - public boolean isSimilar(SortDependingFunction p) { - return getKind().equals(p.getKind()); - } - - - public Name getKind() { - return template.kind; - } - - // ------------------------------------------------------------------------- - // inner classes - // ------------------------------------------------------------------------- - - private record SortDependingFunctionTemplate(GenericSort sortDependingOn, Name kind, Sort sort, - ImmutableArray argSorts, boolean unique) { - } - - @Override - public int getChildCount() { - return 1; - } - - @Override - public SyntaxElement getChild(int n) { - if (n == 0) { - return QualifierWrapper.get(sortDependingOn); - } - throw new IndexOutOfBoundsException( - "SortDependingFunction " + name() + " has only one child"); - } -} diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DefaultBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DefaultBuilder.java index 216d8c6528e..54549dad869 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DefaultBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DefaultBuilder.java @@ -174,17 +174,6 @@ protected Operator lookupVarfuncId(ParserRuleContext ctx, String varfuncName, St return op; } } - - SortDependingFunction firstInstance = - SortDependingFunction.getFirstInstance(new Name(varfuncName), getServices()); - if (sort == null) - semanticError(ctx, "Could not find sort: %s", sortName); - if (firstInstance != null) { - SortDependingFunction v = firstInstance.getInstanceFor(sort, getServices()); - if (v != null) { - return v; - } - } } if (genericArgsCtxt != null) { var d = nss.parametricFunctions().lookup(name); diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java index 3eb0281837d..7fe3006f8a1 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java @@ -813,7 +813,7 @@ public Object visitCast_term(KeYParser.Cast_termContext ctx) { + ". Casts between primitive and reference types are not allowed. "); } assert s != null; - SortDependingFunction castSymbol = + ParametricFunctionInstance castSymbol = getServices().getJavaDLTheory().getCastSymbol(s, services); return getTermFactory().createTerm(castSymbol, result); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/FunctionPredicateBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/FunctionPredicateBuilder.java index 344ab2ef9be..9e84343c123 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/FunctionPredicateBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/FunctionPredicateBuilder.java @@ -11,7 +11,6 @@ import de.uka.ilkd.key.logic.GenericParameter; import de.uka.ilkd.key.logic.NamespaceSet; import de.uka.ilkd.key.logic.op.*; -import de.uka.ilkd.key.logic.sort.GenericSort; import de.uka.ilkd.key.logic.sort.ParametricSortInstance; import de.uka.ilkd.key.nparser.KeYParser; @@ -153,47 +152,32 @@ public Object visitPred_decl(KeYParser.Pred_declContext ctx) { semanticError(ctx, "Where-to-bind list must have same length as argument list"); } - Function p = null; + Function p; - int separatorIndex = pred_name.indexOf("::"); - if (separatorIndex > 0) { - String sortName = pred_name.substring(0, separatorIndex); - String baseName = pred_name.substring(separatorIndex + 2); - Sort genSort = lookupSort(sortName); - if (genSort instanceof GenericSort) { - assert argSorts != null; - p = SortDependingFunction.createFirstInstance((GenericSort) genSort, - new Name(baseName), JavaDLTheory.FORMULA, argSorts.toArray(new Sort[0]), false, - services); + assert argSorts != null; + Name name = new Name(pred_name); + Boolean[] whereToBind1 = + whereToBind == null ? null : whereToBind.toArray(new Boolean[0]); + if (params == null) { + if (nss.parametricFunctions().lookup(name) != null) { + semanticError(ctx, + "Cannot declare predicate %s: Parametric predicate already exists", name); } - } - - if (p == null) { - assert argSorts != null; - Name name = new Name(pred_name); - Boolean[] whereToBind1 = - whereToBind == null ? null : whereToBind.toArray(new Boolean[0]); - if (params == null) { - if (nss.parametricFunctions().lookup(name) != null) { - semanticError(ctx, - "Cannot declare predicate %s: Parametric predicate already exists", name); - } - p = new JFunction(name, JavaDLTheory.FORMULA, - argSorts.toArray(new Sort[0]), - whereToBind1, false); - } else { - if (functions().lookup(name) != null) { - semanticError(ctx, - "Cannot declare parametric predicate %s: Predicate already exists", name); - } - var d = new ParametricFunctionDecl(name, ImmutableList.fromList(params), - new ImmutableArray<>(argSorts), - JavaDLTheory.FORMULA, - whereToBind == null ? null : new ImmutableArray<>(whereToBind1), false, true, - false); - nss.parametricFunctions().addSafely(d); - return null; + p = new JFunction(name, JavaDLTheory.FORMULA, + argSorts.toArray(new Sort[0]), + whereToBind1, false); + } else { + if (functions().lookup(name) != null) { + semanticError(ctx, + "Cannot declare parametric predicate %s: Predicate already exists", name); } + var d = new ParametricFunctionDecl(name, ImmutableList.fromList(params), + new ImmutableArray<>(argSorts), + JavaDLTheory.FORMULA, + whereToBind == null ? null : new ImmutableArray<>(whereToBind1), false, true, + false); + nss.parametricFunctions().addSafely(d); + return null; } if (lookup(p.name()) == null) { @@ -220,42 +204,30 @@ public Object visitFunc_decl(KeYParser.Func_declContext ctx) { semanticError(ctx, "Where-to-bind list must have same length as argument list"); } - Function f = null; + Function f; assert funcName != null; - int separatorIndex = funcName.indexOf("::"); - if (separatorIndex > 0) { - String sortName = funcName.substring(0, separatorIndex); - String baseName = funcName.substring(separatorIndex + 2); - Sort genSort = lookupSort(sortName); - if (genSort instanceof GenericSort) { - f = SortDependingFunction.createFirstInstance((GenericSort) genSort, - new Name(baseName), retSort, argSorts.toArray(new Sort[0]), unique, services); - } - } - if (f == null) { - Name name = new Name(funcName); - Boolean[] whereToBind1 = - whereToBind == null ? null : whereToBind.toArray(new Boolean[0]); - if (params == null) { - if (nss.parametricFunctions().lookup(name) != null) { - semanticError(ctx, - "Cannot declare function %s: Parametric function already exists", name); - } - f = new JFunction(name, retSort, argSorts.toArray(new Sort[0]), - whereToBind1, unique); - } else { - if (functions().lookup(name) != null) { - semanticError(ctx, - "Cannot declare parametric function %s: Function already exists", name); - } - var d = new ParametricFunctionDecl(name, ImmutableList.fromList(params), - new ImmutableArray<>(argSorts), - retSort, whereToBind == null ? null : new ImmutableArray<>(whereToBind1), - unique, true, false); - nss.parametricFunctions().add(d); - return null; + Name name = new Name(funcName); + Boolean[] whereToBind1 = + whereToBind == null ? null : whereToBind.toArray(new Boolean[0]); + if (params == null) { + if (nss.parametricFunctions().lookup(name) != null) { + semanticError(ctx, + "Cannot declare function %s: Parametric function already exists", name); + } + f = new JFunction(name, retSort, argSorts.toArray(new Sort[0]), + whereToBind1, unique); + } else { + if (functions().lookup(name) != null) { + semanticError(ctx, + "Cannot declare parametric function %s: Function already exists", name); } + var d = new ParametricFunctionDecl(name, ImmutableList.fromList(params), + new ImmutableArray<>(argSorts), + retSort, whereToBind == null ? null : new ImmutableArray<>(whereToBind1), + unique, true, false); + nss.parametricFunctions().add(d); + return null; } if (lookup(f.name()) == null) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java index b87804bc05b..8ccb3b06a9c 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java @@ -941,11 +941,12 @@ && getNotationInfo().isHidePackagePrefix()) { String name = t.op().name().toString(); layouter.startTerm(t.arity()); boolean alreadyPrinted = false; - if (t.op() instanceof SortDependingFunction op) { - if (op.getKind().compareTo(JavaDLTheory.EXACT_INSTANCE_NAME) == 0) { - layouter.print(op.getSortDependingOn().declarationString()); - layouter.print("::"); - layouter.keyWord(op.getKind().toString()); + if (t.op() instanceof ParametricFunctionInstance op) { + if (op.getBase() == services.getJavaDLTheory().getExactInstanceofSymbol(services)) { + layouter.keyWord(op.getBase().name().toString()); + layouter.print("<["); + layouter.print(op.getArgs().head().sort().declarationString()); + layouter.print("]>"); alreadyPrinted = true; } } @@ -980,11 +981,11 @@ && getNotationInfo().isHidePackagePrefix()) { } public void printCast(String pre, String post, JTerm t, int ass) { - final SortDependingFunction cast = (SortDependingFunction) t.op(); + final var cast = (ParametricFunctionInstance) t.op(); layouter.startTerm(t.arity()); layouter.print(pre); - layouter.print(cast.getSortDependingOn().toString()); + layouter.print(cast.getArgs().head().sort().toString()); layouter.print(post); maybeParens(t.sub(0), ass); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java b/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java index d8282834177..28a5eb3d25e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java @@ -489,13 +489,6 @@ Notation getNotation(Operator op) { } } - if (op instanceof SortDependingFunction) { - result = notationTable.get(((SortDependingFunction) op).getKind()); - if (result != null) { - return result; - } - } - if (op instanceof ParametricFunctionInstance pfi) { result = notationTable.get(pfi.getBase()); if (result != null) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/TacletIndex.java b/key.core/src/main/java/de/uka/ilkd/key/proof/TacletIndex.java index 29b92981fe7..867e2a2f655 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/TacletIndex.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/TacletIndex.java @@ -95,9 +95,6 @@ private static Object getIndexObj(FindTaclet tac) { if (indexTerm.javaBlock().isEmpty()) { indexObj = indexTerm.op(); switch (indexObj) { - case SortDependingFunction sortDependingFunction -> - // indexed independently of sort - indexObj = sortDependingFunction.getKind(); case ParametricFunctionInstance pfi -> indexObj = pfi.getBase(); case ElementaryUpdate ignored -> indexObj = ElementaryUpdate.class; @@ -340,8 +337,6 @@ private ImmutableList getListHelp( } final ImmutableList inMap = switch (op) { - case SortDependingFunction sortDependingFunction -> - map.get(sortDependingFunction.getKind()); case ParametricFunctionInstance pfi -> map.get(pfi.getBase()); case ElementaryUpdate ignored -> map.get(ElementaryUpdate.class); case JModality ignored -> map.get(JModality.class); diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/init/ProblemInitializer.java b/key.core/src/main/java/de/uka/ilkd/key/proof/init/ProblemInitializer.java index 1b7b6fa1ed0..af18ba42b21 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/init/ProblemInitializer.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/init/ProblemInitializer.java @@ -305,8 +305,8 @@ private void cleanupNamespaces(InitConfig initConfig) { } } for (Function n : initConfig.funcNS().allElements()) { - if (!(n instanceof SortDependingFunction - && ((SortDependingFunction) n).getSortDependingOn() instanceof GenericSort)) { + if (!(n instanceof ParametricFunctionInstance pfi + && pfi.getArgs().stream().anyMatch(a -> a.sort() instanceof GenericSort))) { newFuncNS.addSafely(n); } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/LightweightSyntacticalReplaceVisitor.java b/key.core/src/main/java/de/uka/ilkd/key/rule/LightweightSyntacticalReplaceVisitor.java index a8b1d8f2cca..2750bcdec35 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/LightweightSyntacticalReplaceVisitor.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/LightweightSyntacticalReplaceVisitor.java @@ -19,7 +19,6 @@ import org.key_project.logic.op.QuantifiableVariable; import org.key_project.logic.op.UpdateableOperator; import org.key_project.logic.op.sv.SchemaVariable; -import org.key_project.logic.sort.Sort; import org.key_project.prover.rules.RuleApp; import org.key_project.util.collection.ImmutableArray; @@ -159,10 +158,7 @@ private Operator instantiateModality(JModality op, JavaBlock jb) { private Operator instantiateOperator(Operator p_operatorToBeInstantiated, JavaBlock jb) { Operator instantiatedOp = p_operatorToBeInstantiated; - if (p_operatorToBeInstantiated instanceof SortDependingFunction sortDependingFunction) { - instantiatedOp = - handleSortDependingSymbol(sortDependingFunction); - } else if (p_operatorToBeInstantiated instanceof ElementaryUpdate elementaryUpdate) { + if (p_operatorToBeInstantiated instanceof ElementaryUpdate elementaryUpdate) { instantiatedOp = instantiateElementaryUpdate(elementaryUpdate); } else if (p_operatorToBeInstantiated instanceof JModality mod) { instantiatedOp = instantiateModality(mod, jb); @@ -253,18 +249,6 @@ public void visit(final Term p_visited) { } } - private Operator handleSortDependingSymbol(SortDependingFunction depOp) { - final Sort depSort = depOp.getSortDependingOn(); - - final Sort realDepSort = - svInst.getGenericSortInstantiations().getRealSort(depSort, services); - - final Operator res = depOp.getInstanceFor(realDepSort, services); - assert res != null - : "Did not find instance of symbol " + depOp + " for sort " + realDepSort; - return res; - } - private JTerm resolveSubst(JTerm t) { if (t.op() instanceof SubstOp substOp) { final JTerm resolved = substOp.apply(t, tb); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/SyntacticalReplaceVisitor.java b/key.core/src/main/java/de/uka/ilkd/key/rule/SyntacticalReplaceVisitor.java index b9c605cf928..41494c1feb9 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/SyntacticalReplaceVisitor.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/SyntacticalReplaceVisitor.java @@ -31,7 +31,6 @@ import org.key_project.logic.op.QuantifiableVariable; import org.key_project.logic.op.UpdateableOperator; import org.key_project.logic.op.sv.SchemaVariable; -import org.key_project.logic.sort.Sort; import org.key_project.prover.rules.Rule; import org.key_project.prover.rules.RuleApp; import org.key_project.prover.sequent.PosInOccurrence; @@ -286,9 +285,7 @@ private Operator instantiateModality(JModality op, JavaBlock jb) { private Operator instantiateOperator(Operator p_operatorToBeInstantiated, JavaBlock jb) { Operator instantiatedOp = p_operatorToBeInstantiated; - if (p_operatorToBeInstantiated instanceof SortDependingFunction sortDependingFunction) { - instantiatedOp = handleSortDependingSymbol(sortDependingFunction); - } else if (p_operatorToBeInstantiated instanceof ParametricFunctionInstance pfi) { + if (p_operatorToBeInstantiated instanceof ParametricFunctionInstance pfi) { instantiatedOp = handleParametricFunction(pfi); } else if (p_operatorToBeInstantiated instanceof ElementaryUpdate elementaryUpdate) { instantiatedOp = instantiateElementaryUpdate(elementaryUpdate); @@ -402,19 +399,6 @@ private ImmutableArray instantiateLabels(JTerm tacletTerm, Operator n tb.tf().createTerm(newTermOp, newTermSubs, newTermBoundVars, newTermOriginalLabels)); } - private Operator handleSortDependingSymbol(SortDependingFunction depOp) { - final Sort depSort = depOp.getSortDependingOn(); - - final Sort realDepSort = - svInst.getGenericSortInstantiations().getRealSort(depSort, services); - - - final Operator res = depOp.getInstanceFor(realDepSort, services); - assert res != null - : "Did not find instance of symbol " + depOp + " for sort " + realDepSort; - return res; - } - private Operator handleParametricFunction(ParametricFunctionInstance pfi) { ImmutableList args = ImmutableSLList.nil(); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/SyntaxElementMatchProgramGenerator.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/SyntaxElementMatchProgramGenerator.java index a53c10c720d..b62cff84d0b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/SyntaxElementMatchProgramGenerator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/SyntaxElementMatchProgramGenerator.java @@ -86,17 +86,6 @@ private static void createProgram(JTerm pattern, ArrayList progra program.add(gotoNextInstruction()); } } - case final SortDependingFunction sortDependingFunction -> { - program.add(getCheckNodeKindInstruction(SortDependingFunction.class)); - program.add(getSimilarSortDependingFunctionInstruction(sortDependingFunction)); - program.add(gotoNextInstruction()); - if (sortDependingFunction.getSortDependingOn() instanceof GenericSort gs) { - program.add(getMatchGenericSortInstruction(gs)); - } else { - program.add(getMatchIdentityInstruction(sortDependingFunction.getChild(0))); - } - program.add(gotoNextInstruction()); - } case ElementaryUpdate elUp -> { program.add(getCheckNodeKindInstruction(ElementaryUpdate.class)); program.add(gotoNextInstruction()); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/JavaDLMatchVMInstructionSet.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/JavaDLMatchVMInstructionSet.java index b71c734d4a6..6d79361e40b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/JavaDLMatchVMInstructionSet.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/JavaDLMatchVMInstructionSet.java @@ -89,11 +89,6 @@ public static MatchSchemaVariableInstruction getMatchInstructionForSV( return instruction; } - public static SimilarSortDependingFunctionInstruction getSimilarSortDependingFunctionInstruction( - SortDependingFunction sortDependingFunction) { - return new SimilarSortDependingFunctionInstruction(sortDependingFunction); - } - public static SimilarParametricFunctionInstruction getSimilarParametricFunctionInstruction( ParametricFunctionInstance psi) { return new SimilarParametricFunctionInstruction(psi); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/SimilarSortDependingFunctionInstruction.java b/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/SimilarSortDependingFunctionInstruction.java deleted file mode 100644 index 6c22e4bb3ea..00000000000 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/match/vm/instructions/SimilarSortDependingFunctionInstruction.java +++ /dev/null @@ -1,28 +0,0 @@ -/* This file is part of KeY - https://key-project.org - * KeY is licensed under the GNU General Public License Version 2 - * SPDX-License-Identifier: GPL-2.0-only */ -package de.uka.ilkd.key.rule.match.vm.instructions; - -import de.uka.ilkd.key.logic.op.SortDependingFunction; - -import org.key_project.logic.LogicServices; -import org.key_project.logic.SyntaxElement; -import org.key_project.prover.rules.instantiation.MatchResultInfo; -import org.key_project.prover.rules.matcher.vm.instruction.MatchInstruction; - -public final class SimilarSortDependingFunctionInstruction implements MatchInstruction { - private final SortDependingFunction sortDependingFunction; - - public SimilarSortDependingFunctionInstruction(SortDependingFunction sortDependingFunction) { - this.sortDependingFunction = sortDependingFunction; - } - - @Override - public MatchResultInfo match(SyntaxElement actualElement, MatchResultInfo matchConditions, - LogicServices services) { - if (((SortDependingFunction) actualElement).isSimilar(sortDependingFunction)) { - return matchConditions; - } - return null; - } -} diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayBaseInstanceOf.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayBaseInstanceOf.java index e72449fa471..6a4b7d44059 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayBaseInstanceOf.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayBaseInstanceOf.java @@ -4,10 +4,9 @@ package de.uka.ilkd.key.rule.metaconstruct; import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.ldt.JavaDLTheory; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.op.AbstractTermTransformer; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.logic.sort.ArraySort; import de.uka.ilkd.key.rule.inst.SVInstantiations; import de.uka.ilkd.key.util.Debug; @@ -36,9 +35,9 @@ public JTerm transform(JTerm term, SVInstantiations svInst, Services services) { final JTerm element = term.sub(1); final Sort arraySort; - if (array.op() instanceof SortDependingFunction && ((SortDependingFunction) array.op()) - .getKind().equals(JavaDLTheory.EXACT_INSTANCE_NAME)) { - arraySort = ((SortDependingFunction) array.op()).getSortDependingOn(); + if (array.op() instanceof ParametricFunctionInstance pfi && pfi.getBase() + .equals(services.getJavaDLTheory().getExactInstanceofSymbol(services))) { + arraySort = pfi.getArgs().head().sort(); } else { arraySort = array.sort(); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/smt/AbstractSMTTranslator.java b/key.core/src/main/java/de/uka/ilkd/key/smt/AbstractSMTTranslator.java index 718b06f6413..487bf2d7ef0 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/smt/AbstractSMTTranslator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/smt/AbstractSMTTranslator.java @@ -2510,9 +2510,10 @@ public ArrayList translateTaclets(Services services, SMTSettings for (Operator op : usedFunctionNames.keySet()) { - if (op instanceof SortDependingFunction) { - Sort s = ((SortDependingFunction) op).getSortDependingOn(); - tempSorts.add(s); + if (op instanceof ParametricFunctionInstance pfi) { + for (GenericArgument a : pfi.getArgs()) { + tempSorts.add(a.sort()); + } } if (op instanceof LocationVariable lv) { if (lv.getContainerType() != null) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/smt/SMTObjTranslator.java b/key.core/src/main/java/de/uka/ilkd/key/smt/SMTObjTranslator.java index 33191a4707c..83e2cc8ee97 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/smt/SMTObjTranslator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/smt/SMTObjTranslator.java @@ -11,6 +11,7 @@ import de.uka.ilkd.key.java.declaration.ClassDeclaration; import de.uka.ilkd.key.java.declaration.InterfaceDeclaration; import de.uka.ilkd.key.ldt.JavaDLTheory; +import de.uka.ilkd.key.logic.GenericArgument; import de.uka.ilkd.key.logic.op.*; import de.uka.ilkd.key.smt.hierarchy.SortNode; import de.uka.ilkd.key.smt.hierarchy.TypeHierarchy; @@ -902,8 +903,10 @@ private void addCastAssertions(SMTSort source, SMTSort target, String id) { */ private void findSorts(Set sorts, Term term) { addSingleSort(sorts, term.sort()); - if (term.op() instanceof SortDependingFunction sdf) { - addSingleSort(sorts, sdf.getSortDependingOn()); + if (term.op() instanceof ParametricFunctionInstance pfi) { + for (GenericArgument a : pfi.getArgs()) { + addSingleSort(sorts, a.sort()); + } } for (Term sub : term.subs()) { findSorts(sorts, sub); @@ -1451,20 +1454,22 @@ private SMTTerm translateCall(Function fun, ImmutableArray subs) function = wellformedFunction; } else if (name.equals(ELEMENTOF)) { function = elementOfFunction; - } else if (name.endsWith("::exactInstance")) { - SortDependingFunction sdf = (SortDependingFunction) fun; - Sort depSort = sdf.getSortDependingOn(); + } else if (fun instanceof ParametricFunctionInstance pfi + && pfi.getBase() == services.getJavaDLTheory().getExactInstanceofSymbol(services)) { + Sort depSort = pfi.getArgs().head().sort(); function = getExactInstanceFunction(depSort); - } else if (name.endsWith("::instance")) { - SortDependingFunction sdf = (SortDependingFunction) fun; - Sort depSort = sdf.getSortDependingOn(); + } else if (fun instanceof ParametricFunctionInstance pfi + && pfi.getBase() == services.getJavaDLTheory().getInstanceofSymbol(services)) { + Sort sort = pfi.getArgs().head().sort(); + Sort depSort = sort; addTypePredicate(depSort); - function = getTypePredicate(sdf.getSortDependingOn().name().toString()); - } else if (name.endsWith("::cast")) { - SortDependingFunction sdf = (SortDependingFunction) fun; - SMTSort target = translateSort(sdf.getSortDependingOn()); + function = getTypePredicate(sort.name().toString()); + } else if (fun instanceof ParametricFunctionInstance pfi + && pfi.getBase() == services.getJavaDLTheory().getCastSymbol(services)) { + Sort sort = pfi.getArgs().head().sort(); + SMTSort target = translateSort(sort); if (target.getId().equals(OBJECT_SORT)) { - function = getCastFunction(sdf.getSortDependingOn()); + function = getCastFunction(sort); } else { Sort s = subs.get(0).sort(); SMTSort source = translateSort(s); diff --git a/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastHandler.java b/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastHandler.java index 1e0ef6445f5..d5e9d20c4de 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastHandler.java +++ b/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastHandler.java @@ -7,8 +7,8 @@ import java.util.Properties; import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.ldt.JavaDLTheory; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionDecl; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.smt.SMTTranslationException; import org.key_project.logic.Term; @@ -23,26 +23,26 @@ */ public class CastHandler implements SMTHandler { - private SortDependingFunction anyCast; + private ParametricFunctionDecl anyCast; @Override public void init(MasterHandler masterHandler, Services services, Properties handlerSnippets, String[] handlerOptions) throws IOException { - this.anyCast = services.getJavaDLTheory().getCastSymbol(JavaDLTheory.ANY, services); + this.anyCast = services.getJavaDLTheory().getCastSymbol(services); masterHandler.addDeclarationsAndAxioms(handlerSnippets); } @Override public boolean canHandle(Operator op) { - return op instanceof SortDependingFunction - && ((SortDependingFunction) op).isSimilar(anyCast); + return op instanceof ParametricFunctionInstance pfi + && pfi.getBase() == (anyCast); } @Override public SExpr handle(MasterHandler trans, Term term) throws SMTTranslationException { - SortDependingFunction op = (SortDependingFunction) term.op(); + var op = (ParametricFunctionInstance) term.op(); SExpr inner = trans.translate(term.sub(0)); - Sort depSort = op.getSortDependingOn(); + Sort depSort = op.getArgs().head().sort(); trans.addSort(depSort); trans.introduceSymbol("cast"); return SExprs.castExpr(SExprs.sortExpr(depSort), inner); diff --git a/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastingFunctionsHandler.java b/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastingFunctionsHandler.java index 065890887b6..f19b34c1248 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastingFunctionsHandler.java +++ b/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastingFunctionsHandler.java @@ -7,7 +7,8 @@ import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.ldt.JavaDLTheory; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionDecl; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.smt.SMTTranslationException; import org.key_project.logic.Term; @@ -15,11 +16,11 @@ import org.key_project.logic.sort.Sort; /** - * This SMT translation handler takes care of those sort-depending functions f whose return type is + * This SMT translation handler takes care of those parametric functions f whose return type is * coerced, i.e. * *
- *     T::f(params) = T::cast(any::f(params))
+ *     f<[T]>(params) = cast<[T]>(f<[any]>(params))
  * 
* * Currently these are: seqGet and (heap-) select. @@ -29,22 +30,22 @@ */ public class CastingFunctionsHandler implements SMTHandler { - private SortDependingFunction seqGet; - private SortDependingFunction select; + private ParametricFunctionDecl seqGet; + private ParametricFunctionDecl select; @Override public void init(MasterHandler masterHandler, Services services, Properties handlerSnippets, String[] handlerOptions) { - this.seqGet = services.getTypeConverter().getSeqLDT().getSeqGet(JavaDLTheory.ANY, services); + this.seqGet = services.getTypeConverter().getSeqLDT().getSeqGet(); this.select = - services.getTypeConverter().getHeapLDT().getSelect(JavaDLTheory.ANY, services); + services.getTypeConverter().getHeapLDT().getSelect(); masterHandler.addDeclarationsAndAxioms(handlerSnippets); } @Override public boolean canHandle(Operator op) { - if (op instanceof SortDependingFunction sdf) { - return seqGet.isSimilar(sdf) || select.isSimilar(sdf); + if (op instanceof ParametricFunctionInstance pfi) { + return seqGet == (pfi.getBase()) || select == (pfi.getBase()); } return false; } @@ -52,12 +53,12 @@ public boolean canHandle(Operator op) { @Override public SExpr handle(MasterHandler trans, Term term) throws SMTTranslationException { Operator op = term.op(); - SortDependingFunction sdf = (SortDependingFunction) op; - String name = sdf.getKind().toString(); + var sdf = (ParametricFunctionInstance) op; + String name = sdf.getBase().toString(); String prefixedName = DefinedSymbolsHandler.PREFIX + name; trans.introduceSymbol(name); SExpr result = trans.handleAsFunctionCall(prefixedName, term); - Sort dep = sdf.getSortDependingOn(); + Sort dep = sdf.getArgs().head().sort(); if (dep == JavaDLTheory.ANY) { return result; } else { diff --git a/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/InstanceOfHandler.java b/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/InstanceOfHandler.java index 80709e77fc3..728ef52fca0 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/InstanceOfHandler.java +++ b/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/InstanceOfHandler.java @@ -6,13 +6,14 @@ import java.util.Properties; import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.ldt.JavaDLTheory; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionDecl; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.smt.SMTTranslationException; import de.uka.ilkd.key.smt.newsmt2.SExpr.Type; import org.key_project.logic.Term; import org.key_project.logic.op.Operator; +import org.key_project.logic.sort.Sort; /** * This SMT translation handler takes care of instanceof and exactinstanceof functions. @@ -22,37 +23,38 @@ */ public class InstanceOfHandler implements SMTHandler { - private SortDependingFunction exactInstanceOfOp; - private SortDependingFunction instanceOfOp; + private ParametricFunctionDecl exactInstanceOfOp; + private ParametricFunctionDecl instanceOfOp; @Override public void init(MasterHandler masterHandler, Services services, Properties handlerSnippets, String[] handlerOptions) { this.instanceOfOp = - services.getJavaDLTheory().getInstanceofSymbol(JavaDLTheory.ANY, services); + services.getJavaDLTheory().getInstanceofSymbol(services); this.exactInstanceOfOp = - services.getJavaDLTheory().getExactInstanceofSymbol(JavaDLTheory.ANY, services); + services.getJavaDLTheory().getExactInstanceofSymbol(services); } @Override public boolean canHandle(Operator op) { - if (op instanceof SortDependingFunction sdf) { - return exactInstanceOfOp.isSimilar(sdf) || instanceOfOp.isSimilar(sdf); + if (op instanceof ParametricFunctionInstance pfi) { + return exactInstanceOfOp == (pfi.getBase()) || instanceOfOp == (pfi.getBase()); } return false; } @Override public SExpr handle(MasterHandler trans, Term term) throws SMTTranslationException { - SortDependingFunction op = (SortDependingFunction) term.op(); + var op = (ParametricFunctionInstance) term.op(); SExpr inner = trans.translate(term.sub(0), Type.UNIVERSE); - if (exactInstanceOfOp.isSimilar(op)) { - trans.addSort(op.getSortDependingOn()); + Sort sort = op.getArgs().head().sort(); + if (exactInstanceOfOp == (op.getBase())) { + trans.addSort(sort); return new SExpr("exactinstanceof", Type.BOOL, inner, - SExprs.sortExpr(op.getSortDependingOn())); - } else if (instanceOfOp.isSimilar(op)) { - trans.addSort(op.getSortDependingOn()); - return SExprs.instanceOf(inner, SExprs.sortExpr(op.getSortDependingOn())); + SExprs.sortExpr(sort)); + } else if (instanceOfOp == (op.getBase())) { + trans.addSort(sort); + return SExprs.instanceOf(inner, SExprs.sortExpr(sort)); } else { throw new SMTTranslationException("unexpected case in instanceof-handling: " + term); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java index 0b1de26a5a1..f3d21a0e801 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/jml/translation/JMLSpecFactory.java @@ -1603,7 +1603,7 @@ public void translateSetStatement(final SetStatement statement, final IProgramMe */ private JTerm resolveFinalAssignee(JTerm assignee) { if (services.getTypeConverter().getHeapLDT().isFinalOp(assignee.op())) { - SortDependingFunction finalOp = assignee.op(SortDependingFunction.class); + ParametricFunctionInstance finalOp = assignee.op(ParametricFunctionInstance.class); return tb.select( finalOp.sort(), tb.getBaseHeap(), diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/njml/Translator.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/njml/Translator.java index 4ab46d564cd..bf5635ee7c4 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/njml/Translator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/njml/Translator.java @@ -630,7 +630,7 @@ public SLExpression visitInstance_of(JmlParser.Instance_ofContext ctx) { SLExpression result = accept(ctx.shiftexpr()); KeYJavaType rtype = accept(ctx.typespec()); assert rtype != null; - final SortDependingFunction f = + final ParametricFunctionInstance f = services.getJavaDLTheory().getInstanceofSymbol(rtype.getSort(), services); // instanceof-expression assert result != null; diff --git a/key.core/src/main/java/de/uka/ilkd/key/strategy/JavaCardDLStrategy.java b/key.core/src/main/java/de/uka/ilkd/key/strategy/JavaCardDLStrategy.java index 5b18237454f..b0a25d5ab9c 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/strategy/JavaCardDLStrategy.java +++ b/key.core/src/main/java/de/uka/ilkd/key/strategy/JavaCardDLStrategy.java @@ -15,8 +15,8 @@ import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.op.Equality; import de.uka.ilkd.key.logic.op.Junctor; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.logic.op.Quantifier; -import de.uka.ilkd.key.logic.op.SortDependingFunction; import de.uka.ilkd.key.proof.Goal; import de.uka.ilkd.key.proof.Proof; import de.uka.ilkd.key.rule.UseDependencyContractRule; @@ -632,7 +632,7 @@ private void setUpStringNormalisation(RuleSetDispatchFeature d) { bindRuleSet(d, "stringsSimplify", longConst(-5000)); final TermFeature charOrIntLiteral = or(tf.charLiteral, tf.literal, - or(add(OperatorClassTF.create(SortDependingFunction.class), // XXX: + or(add(OperatorClassTF.create(ParametricFunctionInstance.class), // XXX: // was CastFunctionSymbol.class sub(tf.literal)), inftyTermConst())); diff --git a/key.core/src/main/java/de/uka/ilkd/key/strategy/quantifierHeuristics/Instantiation.java b/key.core/src/main/java/de/uka/ilkd/key/strategy/quantifierHeuristics/Instantiation.java index 1009f9f8787..9aab846d447 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/strategy/quantifierHeuristics/Instantiation.java +++ b/key.core/src/main/java/de/uka/ilkd/key/strategy/quantifierHeuristics/Instantiation.java @@ -10,8 +10,8 @@ import de.uka.ilkd.key.ldt.JavaDLTheory; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.TermServices; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.logic.op.Quantifier; -import de.uka.ilkd.key.logic.op.SortDependingFunction; import org.key_project.logic.Term; import org.key_project.logic.op.QuantifiableVariable; @@ -178,8 +178,8 @@ static RuleAppCost computeCost(Term inst, Term form, Sequent seq, Services servi private RuleAppCost computeCostHelp(Term inst) { Long cost = instancesWithCosts.get(inst); - if (cost == null && (inst.op() instanceof SortDependingFunction - && ((SortDependingFunction) inst.op()).getKind().equals(JavaDLTheory.CAST_NAME))) { + if (cost == null && (inst.op() instanceof ParametricFunctionInstance pfi + && pfi.getBase().name().equals(JavaDLTheory.CAST_NAME))) { cost = instancesWithCosts.get(inst.sub(0)); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/AssumptionGenerator.java b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/AssumptionGenerator.java index 0a19f20f80f..e6518bb2346 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/AssumptionGenerator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/AssumptionGenerator.java @@ -11,6 +11,7 @@ import de.uka.ilkd.key.logic.op.*; import de.uka.ilkd.key.logic.sort.GenericSort; import de.uka.ilkd.key.logic.sort.NullSort; +import de.uka.ilkd.key.logic.sort.ParametricSortInstance; import de.uka.ilkd.key.rule.Taclet; import de.uka.ilkd.key.rule.conditions.TypeComparisonCondition.Mode; import de.uka.ilkd.key.taclettranslation.IllegalTacletException; @@ -151,10 +152,13 @@ public static Set collectGenerics(JTerm term) { } private static void collectGenerics(JTerm term, HashSet genericSorts) { - - if (term.op() instanceof SortDependingFunction func) { - if (func.getSortDependingOn() instanceof GenericSort) { - genericSorts.add((GenericSort) func.getSortDependingOn()); + if (term.op() instanceof ParametricFunctionInstance func) { + for (GenericArgument a : func.getArgs()) { + if (a.sort() instanceof GenericSort s) { + genericSorts.add(s); + } else if (a.sort() instanceof ParametricSortInstance psi) { + collectGenerics(psi, genericSorts); + } } } @@ -167,6 +171,16 @@ private static void collectGenerics(JTerm term, HashSet genericSort } + private static void collectGenerics(ParametricSortInstance psi, Set genericSorts) { + for (GenericArgument a : psi.getArgs()) { + if (a.sort() instanceof GenericSort gs) { + genericSorts.add(gs); + } else if (a.sort() instanceof ParametricSortInstance p) { + collectGenerics(p, genericSorts); + } + } + } + /** * Creates an array containing objectCount^bucketCount rows. Each of this rows has bucketCount * columns. The method enumerates all possible variations of putting objectCount diff --git a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/GenericTranslator.java b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/GenericTranslator.java index 0fdd0a056f5..92f4e36ff3d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/GenericTranslator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/GenericTranslator.java @@ -10,6 +10,7 @@ import de.uka.ilkd.key.java.Services; import de.uka.ilkd.key.ldt.JavaDLTheory; +import de.uka.ilkd.key.logic.GenericArgument; import de.uka.ilkd.key.logic.JTerm; import de.uka.ilkd.key.logic.TermBuilder; import de.uka.ilkd.key.logic.op.*; @@ -81,7 +82,7 @@ private boolean sameHierachyBranch(Sort sort1, Sort sort2) { * @param instantiation the instantiation sort. * @return returns the new term with instantiated variables. If term can not be * instantiated the method returns null, e.g. this can occur, when - * term is of type {@link SortDependingFunction} and + * term is of type {@link ParametricFunctionInstance} and * instantiation is of type {PrimitiveSort}. */ @@ -116,24 +117,26 @@ private JTerm instantiateGeneric(JTerm term, GenericSort generic, Sort instantia } - if (term.op() instanceof SortDependingFunction func) { - + if (term.op() instanceof ParametricFunctionInstance func) { try { // Try block is necessary because there are some // taclets // that should have isReference-Condition, but // they don't // have the condition. - if (func.getSortDependingOn().equals(generic)) { + // TODO(DD): Extend to more complex parametric functions; ask RB what is expected + // here + if (func.getArgs().size() == 1 && func.getArgs().head().sort().equals(generic)) { if (instantiation.extendsTrans(services.getJavaInfo().nullSort())) { return null; } - func = func.getInstanceFor(instantiation, services); + func = ParametricFunctionInstance.get(func.getBase(), + ImmutableList.of(new GenericArgument(instantiation)), services); - if (func.getKind().equals(JavaDLTheory.CAST_NAME)) { + if (func.getBase() == services.getJavaDLTheory().getCastSymbol(services)) { for (int i = 0; i < term.arity(); i++) { - if (!sameHierachyBranch(func.getSortDependingOn(), + if (!sameHierachyBranch(func.getArgs().head().sort(), subTerms[i].sort())) { // don't // instantiate @@ -146,7 +149,6 @@ private JTerm instantiateGeneric(JTerm term, GenericSort generic, Sort instantia } term = services.getTermFactory().createTerm(func, subTerms); - } } catch (IllegalArgumentException e) { for (TranslationListener l : listener) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/GenericRemovingLemmaGenerator.java b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/GenericRemovingLemmaGenerator.java index 778914c8cdc..2e02bf311fc 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/GenericRemovingLemmaGenerator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/lemma/GenericRemovingLemmaGenerator.java @@ -6,14 +6,17 @@ import java.util.HashMap; import java.util.Map; +import de.uka.ilkd.key.java.Services; +import de.uka.ilkd.key.logic.GenericArgument; import de.uka.ilkd.key.logic.TermServices; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.logic.sort.GenericSort; import de.uka.ilkd.key.logic.sort.ProxySort; import org.key_project.logic.op.Operator; import org.key_project.logic.sort.Sort; import org.key_project.util.collection.DefaultImmutableSet; +import org.key_project.util.collection.ImmutableList; import org.key_project.util.collection.ImmutableSet; /** @@ -42,12 +45,12 @@ public class GenericRemovingLemmaGenerator extends DefaultLemmaGenerator { */ @Override protected Operator replaceOp(Operator op, TermServices services) { - - if (op instanceof SortDependingFunction sdf) { - Sort sort = sdf.getSortDependingOn(); + if (op instanceof ParametricFunctionInstance pfi && pfi.getArgs().size() == 1) { + Sort sort = pfi.getArgs().head().sort(); Sort repSort = replaceSort(sort, services); if (sort != repSort) { - op = sdf.getInstanceFor(repSort, services); + op = ParametricFunctionInstance.get(pfi.getBase(), + ImmutableList.of(new GenericArgument(repSort)), (Services) services); } } diff --git a/key.core/src/test/java/de/uka/ilkd/key/logic/sort/TestParametricSorts.java b/key.core/src/test/java/de/uka/ilkd/key/logic/sort/TestParametricSorts.java index da218ebe9f2..ec6643b336f 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/logic/sort/TestParametricSorts.java +++ b/key.core/src/test/java/de/uka/ilkd/key/logic/sort/TestParametricSorts.java @@ -11,7 +11,6 @@ import de.uka.ilkd.key.logic.op.JFunction; import de.uka.ilkd.key.logic.op.ParametricFunctionDecl; import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; -import de.uka.ilkd.key.logic.op.SortDependingFunction; import de.uka.ilkd.key.nparser.KeyIO; import de.uka.ilkd.key.nparser.NamespaceBuilder; import de.uka.ilkd.key.proof.init.AbstractProfile; @@ -66,48 +65,6 @@ private ParametricSortDecl addParametricSort(String name, return psd; } - - @Test - public void testParametricSortIdentical() { - ParametricSortDecl psd = addParametricSort("List", GenericParameter.Variance.COVARIANT); - var sdf = SortDependingFunction.createFirstInstance(g1, new Name("someConst"), g1, - new Sort[0], false, services); - nss.functions().add(sdf); - - var term = io.parseExpression("List<[int]>::someConst = List<[int]>::someConst"); - assertEquals(term.sub(0), term.sub(1)); - assertSame(term.sub(0).sort(), term.sub(1).sort()); - } - - @Test - public void testParametricSortDependentFunctionInstantiation() { - ParametricSortDecl psd = addParametricSort("List", GenericParameter.Variance.COVARIANT); - Sort intSort = nss.sorts().lookup("int"); - - var someConst = SortDependingFunction.createFirstInstance(g1, new Name("someConst"), g1, - new Sort[0], false, services); - nss.functions().add(someConst); - - var listOfInt = - ParametricSortInstance.get(psd, ImmutableList.of(new GenericArgument(intSort)), - services); - var listOfG1 = - ParametricSortInstance.get(psd, ImmutableList.of(new GenericArgument(g1)), services); - var sdf = SortDependingFunction.createFirstInstance(g1, new Name("head"), g1, - new Sort[] { listOfG1 }, false, services); - nss.functions().add(sdf); - - SortDependingFunction sdfInst = sdf.getInstanceFor(intSort, services); - assertEquals(intSort, sdfInst.sort()); - assertEquals(listOfInt, sdfInst.argSort(0)); - - var term = io.parseExpression("int::head(List<[int]>::someConst) = int::someConst"); - assertEquals("List<[int]>", term.sub(0).sub(0).sort().toString()); - assertEquals("List<[int]>", ((JFunction) term.sub(0).op()).argSorts().get(0).toString()); - assertEquals("int", term.sub(0).op().sort(new Sort[0]).toString()); - assertSame(term.sub(0).sort(), term.sub(1).sort()); - } - @Test public void testParametricFunctionInstantiation() { ParametricSortDecl psd = addParametricSort("List", GenericParameter.Variance.COVARIANT); diff --git a/key.core/src/test/java/de/uka/ilkd/key/taclettranslation/lemma/TestGenericRemovingLemmaGenerator.java b/key.core/src/test/java/de/uka/ilkd/key/taclettranslation/lemma/TestGenericRemovingLemmaGenerator.java index cac0ec76095..94328f5e3c0 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/taclettranslation/lemma/TestGenericRemovingLemmaGenerator.java +++ b/key.core/src/test/java/de/uka/ilkd/key/taclettranslation/lemma/TestGenericRemovingLemmaGenerator.java @@ -6,8 +6,9 @@ import java.util.HashSet; import java.util.Set; +import de.uka.ilkd.key.logic.GenericArgument; import de.uka.ilkd.key.logic.JTerm; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import de.uka.ilkd.key.logic.sort.GenericSort; import de.uka.ilkd.key.logic.sort.ProxySort; import de.uka.ilkd.key.rule.NoPosTacletApp; @@ -53,8 +54,8 @@ private void collectSorts(JTerm term, Set sorts) { sorts.add(term.sort()); - if (term.op() instanceof SortDependingFunction sdf) { - sorts.add(sdf.getSortDependingOn()); + if (term.op() instanceof ParametricFunctionInstance pfi) { + sorts.addAll(pfi.getArgs().stream().map(GenericArgument::sort).toList()); } for (QuantifiableVariable v : term.boundVars()) { diff --git a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/DefinedSymbolsHandler.java b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/DefinedSymbolsHandler.java index 0a4b2ba31e6..5578ad35318 100644 --- a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/DefinedSymbolsHandler.java +++ b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/DefinedSymbolsHandler.java @@ -14,7 +14,7 @@ import de.uka.ilkd.key.ldt.JavaDLTheory; import de.uka.ilkd.key.ldt.LocSetLDT; import de.uka.ilkd.key.ldt.SeqLDT; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import org.key_project.logic.Name; import org.key_project.logic.Namespace; @@ -67,10 +67,10 @@ public void init(IsabelleMasterHandler masterHandler, Services services, Namespace<@NonNull Function> functionNamespace = services.getNamespaces().functions(); Map definedFunctions = getDefinedFunctions(); - Map definedSortDependingFunctions = new HashMap<>(); - definedSortDependingFunctions.put("select", "select"); - definedSortDependingFunctions.put("cast", "cast"); - definedSortDependingFunctions.put("seqGet", "seqGet"); + Map definedParametricFunctions = new HashMap<>(); + definedParametricFunctions.put("select", "select"); + definedParametricFunctions.put("cast", "cast"); + definedParametricFunctions.put("seqGet", "seqGet"); for (String name : definedFunctions.keySet()) { Function function = functionNamespace.lookup(name); @@ -79,12 +79,12 @@ public void init(IsabelleMasterHandler masterHandler, Services services, } for (Function function : functionNamespace.elements()) { - if (!(function instanceof SortDependingFunction)) + if (!(function instanceof ParametricFunctionInstance)) continue; String funName = function.name().toString().split("::")[1]; - for (String name : definedSortDependingFunctions.keySet()) { + for (String name : definedParametricFunctions.keySet()) { if (funName.equals(name)) { - supportedOperators.put(function, definedSortDependingFunctions.get(name)); + supportedOperators.put(function, definedParametricFunctions.get(name)); } } } @@ -143,9 +143,9 @@ public boolean canHandle(Operator op) { @Override public StringBuilder handle(IsabelleMasterHandler trans, Term term) { - if (term.op() instanceof SortDependingFunction) { - return SortDependingFunctionHandler.getSortDependingFunctionRef(trans, term, - (SortDependingFunction) term.op(), + if (term.op() instanceof ParametricFunctionInstance pfi) { + return ParametricFunctionHandler.getParametricFunctionRef(trans, term, + pfi, supportedOperators.get(term.op())); } return UninterpretedSymbolsHandler.getFunctionRef(trans, term, (SortedOperator) term.op(), diff --git a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/InstanceOperatorHandler.java b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/InstanceOperatorHandler.java index a17cba1b152..b6e401f2579 100644 --- a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/InstanceOperatorHandler.java +++ b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/InstanceOperatorHandler.java @@ -9,7 +9,7 @@ import java.util.Properties; import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import org.key_project.logic.Namespace; import org.key_project.logic.Term; @@ -39,7 +39,7 @@ public void init(IsabelleMasterHandler masterHandler, Services services, definedSortDependingFunctions.put("exactInstance", "exactInstance"); for (Function function : functionNamespace.elements()) { - if (!(function instanceof SortDependingFunction)) + if (!(function instanceof ParametricFunctionInstance)) continue; String funName = function.name().toString().split("::")[1]; for (String name : definedSortDependingFunctions.keySet()) { @@ -57,9 +57,10 @@ public boolean canHandle(Operator op) { @Override public StringBuilder handle(IsabelleMasterHandler trans, Term term) { - SortDependingFunction op = (SortDependingFunction) term.op(); + var op = (ParametricFunctionInstance) term.op(); String functionName = supportedOperators.get(op); - String dependingSortTypeName = trans.translateSortName(op.getSortDependingOn()) + "_type"; + String dependingSortTypeName = + trans.translateSortName(op.getArgs().head().sort()) + "_type"; StringBuilder result = new StringBuilder("("); result.append("(").append(functionName).append(") "); diff --git a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/SortDependingFunctionHandler.java b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/ParametricFunctionHandler.java similarity index 69% rename from keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/SortDependingFunctionHandler.java rename to keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/ParametricFunctionHandler.java index a02f7a17d10..5ce0cdbb8e1 100644 --- a/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/SortDependingFunctionHandler.java +++ b/keyext.isabelletranslation/src/main/java/org/key_project/isabelletranslation/translation/ParametricFunctionHandler.java @@ -8,16 +8,16 @@ import java.util.stream.Collectors; import de.uka.ilkd.key.java.Services; -import de.uka.ilkd.key.logic.op.SortDependingFunction; +import de.uka.ilkd.key.logic.op.ParametricFunctionInstance; import org.key_project.logic.Term; import org.key_project.logic.op.Operator; import org.key_project.logic.sort.Sort; /** - * Handles translation of sort depending functions + * Handles translation of parametric functions */ -public class SortDependingFunctionHandler implements IsabelleHandler { +public class ParametricFunctionHandler implements IsabelleHandler { @Override public void init(IsabelleMasterHandler masterHandler, Services services, @@ -27,14 +27,15 @@ public void init(IsabelleMasterHandler masterHandler, Services services, @Override public boolean canHandle(Operator op) { - return (op instanceof SortDependingFunction); + return (op instanceof ParametricFunctionInstance); } @Override public StringBuilder handle(IsabelleMasterHandler trans, Term term) { - assert term.op() instanceof SortDependingFunction; - SortDependingFunction op = (SortDependingFunction) term.op(); - Sort dependentSort = op.getSortDependingOn(); + assert term.op() instanceof ParametricFunctionInstance; + var op = (ParametricFunctionInstance) term.op(); + // TODO(DD): Handle more complex parametric functions + Sort dependentSort = op.getArgs().head().sort(); if (trans.isNewSort(dependentSort)) { trans.addGenericSort(dependentSort); @@ -48,20 +49,20 @@ public StringBuilder handle(IsabelleMasterHandler trans, Term term) { name = trans.getKnownSymbol(term); } - return getSortDependingFunctionRef(trans, term, op, name.toString()); + return getParametricFunctionRef(trans, term, op, name.toString()); } /** - * Creates a reference to a sort depending function + * Creates a reference to a parametric function * * @param trans master handler used for translation * @param term term the function occurs in * @param op the function * @param name the name of the function in translation - * @return reference to a sort depending function for use in translation + * @return reference to a parametric function for use in translation */ - static StringBuilder getSortDependingFunctionRef(IsabelleMasterHandler trans, Term term, - SortDependingFunction op, String name) { + static StringBuilder getParametricFunctionRef(IsabelleMasterHandler trans, Term term, + ParametricFunctionInstance op, String name) { StringBuilder ref = new StringBuilder("(").append(name).append("::"); String parameterTypesDecl = op.argSorts().stream().map(trans::translateSortName).collect(Collectors.joining("=>")); From d5b5d48d4ae02bad293d1b92dda373deb59719c7 Mon Sep 17 00:00:00 2001 From: Drodt Date: Fri, 13 Mar 2026 18:09:51 +0100 Subject: [PATCH 02/37] Simplify parser --- key.core/src/main/antlr4/KeYParser.g4 | 2 +- .../key/nparser/builder/DefaultBuilder.java | 20 ++----------------- .../nparser/builder/ExpressionBuilder.java | 9 ++++----- 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/key.core/src/main/antlr4/KeYParser.g4 b/key.core/src/main/antlr4/KeYParser.g4 index 6e992d132f3..947da311d48 100644 --- a/key.core/src/main/antlr4/KeYParser.g4 +++ b/key.core/src/main/antlr4/KeYParser.g4 @@ -362,7 +362,7 @@ id_declaration funcpred_name : - (sortId DOUBLECOLON)? (name=simple_ident_dots|num=INT_LITERAL) + (name=simple_ident_dots|num=INT_LITERAL) ; diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DefaultBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DefaultBuilder.java index 54549dad869..b35e31dfe90 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DefaultBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/DefaultBuilder.java @@ -142,8 +142,8 @@ public Sort visitArg_sorts_or_formula_helper(KeYParser.Arg_sorts_or_formula_help * * @param varfuncName the String with the symbols name */ - protected Operator lookupVarfuncId(ParserRuleContext ctx, String varfuncName, String sortName, - Sort sort, KeYParser.Formal_sort_argsContext genericArgsCtxt) { + protected Operator lookupVarfuncId(ParserRuleContext ctx, String varfuncName, + KeYParser.Formal_sort_argsContext genericArgsCtxt) { Name name = new Name(varfuncName); Operator[] operators = { schemaVariables().lookup(name), variables().lookup(name), @@ -159,22 +159,6 @@ protected Operator lookupVarfuncId(ParserRuleContext ctx, String varfuncName, St } } - if (sort != null || sortName != null) { - Name fqName = - new Name((sort != null ? sort.toString() : sortName) + "::" + varfuncName); - operators = - new Operator[] { schemaVariables().lookup(fqName), - variables().lookup(fqName), - programVariables().lookup(new ProgramElementName(fqName.toString())), - functions().lookup(fqName), - AbstractTermTransformer.name2metaop(fqName.toString()) }; - - for (Operator op : operators) { - if (op != null) { - return op; - } - } - } if (genericArgsCtxt != null) { var d = nss.parametricFunctions().lookup(name); if (d == null) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java index 7fe3006f8a1..21489e5b04d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java @@ -1194,7 +1194,6 @@ public boolean isClass(String p) { */ @Override public Object visitFuncpred_name(KeYParser.Funcpred_nameContext ctx) { - Sort sortId = accept(ctx.sortId()); List parts = mapOf(ctx.name.simple_ident()); String varfuncid = ctx.name.getText(); @@ -1219,7 +1218,7 @@ public Object visitFuncpred_name(KeYParser.Funcpred_nameContext ctx) { if (varfuncid.endsWith(LIMIT_SUFFIX)) { varfuncid = varfuncid.substring(0, varfuncid.length() - 5); op = lookupVarfuncId(ctx, varfuncid, - ctx.sortId() != null ? ctx.sortId().getText() : null, sortId, null); + null); if (ObserverFunction.class.isAssignableFrom(op.getClass())) { op = getServices().getSpecificationRepository() .limitObs((ObserverFunction) op).first; @@ -1231,7 +1230,7 @@ public Object visitFuncpred_name(KeYParser.Funcpred_nameContext ctx) { ctx.name == null ? ctx.INT_LITERAL().getText() : ctx.name.simple_ident(0).getText(); op = lookupVarfuncId(ctx, firstName, - ctx.sortId() != null ? ctx.sortId().getText() : null, sortId, null); + null); if (op instanceof ProgramVariable v && ctx.name.simple_ident().size() > 1) { List otherParts = ctx.name.simple_ident().subList(1, ctx.name.simple_ident().size()); @@ -1494,7 +1493,7 @@ public JTerm visitAccessterm(KeYParser.AccesstermContext ctx) { } else if (firstName.endsWith(LIMIT_SUFFIX)) { firstName = firstName.substring(0, firstName.length() - 5); op = lookupVarfuncId(ctx, firstName, - ctx.sortId() != null ? ctx.sortId().getText() : null, sortId, null); + null); if (ObserverFunction.class.isAssignableFrom(op.getClass())) { op = getServices().getSpecificationRepository() .limitObs((ObserverFunction) op).first; @@ -1503,7 +1502,7 @@ public JTerm visitAccessterm(KeYParser.AccesstermContext ctx) { } } else { op = lookupVarfuncId(ctx, firstName, - ctx.sortId() != null ? ctx.sortId().getText() : null, sortId, genericArgsCtxt); + genericArgsCtxt); } JTerm current; From 6d63c6e6bb5f21b6cb1b34dde44c68934b9cc20c Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 16 Mar 2026 13:58:58 +0100 Subject: [PATCH 03/37] Remove some sort depending fns --- .../uka/ilkd/key/proof/rules/assertions.key | 4 +- .../ilkd/key/proof/rules/charListRules.key | 8 +- .../proof/rules/formulaNormalisationRules.key | 28 +- .../uka/ilkd/key/proof/rules/genericRules.key | 64 ++--- .../de/uka/ilkd/key/proof/rules/heap.key | 6 +- .../de/uka/ilkd/key/proof/rules/heapRules.key | 254 +++++++++--------- .../de/uka/ilkd/key/proof/rules/infFlow.key | 42 +-- .../key/proof/rules/instanceAllocation.key | 36 +-- .../uka/ilkd/key/proof/rules/javaHeader.key | 6 +- .../de/uka/ilkd/key/proof/rules/javaRules.key | 178 ++++++------ .../uka/ilkd/key/proof/rules/locSetsRules.key | 52 ++-- .../de/uka/ilkd/key/proof/rules/map.key | 20 +- .../de/uka/ilkd/key/proof/rules/mapSize.key | 2 +- .../ilkd/key/proof/rules/permissionRules.key | 6 +- .../de/uka/ilkd/key/proof/rules/precRules.key | 4 +- .../uka/ilkd/key/proof/rules/reachRules.key | 16 +- .../de/uka/ilkd/key/proof/rules/seq.key | 2 +- .../uka/ilkd/key/proof/rules/seqCoreRules.key | 4 +- .../de/uka/ilkd/key/proof/rules/seqEq.key | 14 +- .../de/uka/ilkd/key/proof/rules/seqPerm.key | 92 +++---- .../de/uka/ilkd/key/proof/rules/seqPerm2.key | 20 +- .../de/uka/ilkd/key/proof/rules/seqRules.key | 106 ++++---- .../de/uka/ilkd/key/proof/rules/types.key | 6 +- 23 files changed, 485 insertions(+), 485 deletions(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/assertions.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/assertions.key index 4e86281def9..95e1b68e2e6 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/assertions.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/assertions.key @@ -126,7 +126,7 @@ \replacewith( ==> \[{ method-frame(#ex){ #typeof(#e1) #condition = #e1 ; } - }\] (\forall f; \forall o; ((o != null & boolean::select(oldHeap, o, java.lang.Object::) = FALSE) | any::select(oldHeap, o, f) = any::select(heap, o, f)))) + }\] (\forall f; \forall o; ((o != null & select<[boolean]>(oldHeap, o, java.lang.Object::) = FALSE) | select<[any]>(oldHeap, o, f) = select<[any]>(heap, o, f)))) \add(oldHeap = heap ==>) \heuristics(simplify_prog) \displayname "assert" @@ -154,7 +154,7 @@ #typeof(#e1) #condition = #e1; #typeof(#e2) #message = #e2; } - }\] (\forall f; \forall o; ((o != null & boolean::select(oldHeap, o, java.lang.Object::) = FALSE) | any::select(oldHeap, o, f) = any::select(heap, o, f)))) + }\] (\forall f; \forall o; ((o != null & select<[boolean]>(oldHeap, o, java.lang.Object::) = FALSE) | select<[any]>(oldHeap, o, f) = select<[any]>(heap, o, f)))) \add(oldHeap = heap ==>) \heuristics(simplify_prog) \displayname "assert" diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/charListRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/charListRules.key index 9d5ed85b0d6..0d1e38f4b0a 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/charListRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/charListRules.key @@ -100,7 +100,7 @@ removeZeros { \schemaVar \term Seq l; \find(clRemoveZeros(l)) - \replacewith(\if(l = seqEmpty | int::seqGet(l, 0) = '0') \then(l) \else(clRemoveZeros(seqSub(l, 1, seqLen(l))))) + \replacewith(\if(l = seqEmpty | seqGet<[int]>(l, 0) = '0') \then(l) \else(clRemoveZeros(seqSub(l, 1, seqLen(l))))) \heuristics(integerToString) }; @@ -171,7 +171,7 @@ \replacewith(\ifEx iv; (i >= 0 & iv >= i & iv < seqLen(l) - & int::seqGet(l, iv) = c) + & seqGet<[int]>(l, iv) = c) \then(iv) \else(-1)) \heuristics(stringsExpandDefNormalOp) @@ -228,7 +228,7 @@ \newDependingOn(newSym, replChar), \newDependingOn(newSym, str)) \add(clReplace(str, searchChar, replChar) = newSym & - seqDef{pos;}(0, seqLen(str), \if(int::seqGet(str, pos) = searchChar) \then(replChar) \else(int::seqGet(str, pos))) = newSym + seqDef{pos;}(0, seqLen(str), \if(seqGet<[int]>(str, pos) = searchChar) \then(replChar) \else(seqGet<[int]>(str, pos))) = newSym ==>) \heuristics(defOpsReplace, stringsIntroduceNewSym) @@ -297,7 +297,7 @@ \replacewith(\ifEx iv; (iv > 0 & i >= iv & i - iv < seqLen(sourceStr) - & int::seqGet(sourceStr, i - iv) = c) + & seqGet<[int]>(sourceStr, i - iv) = c) \then(i - iv) \else(-1)) \heuristics(stringsExpandDefNormalOp) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/formulaNormalisationRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/formulaNormalisationRules.key index 8624ad85b3f..7065806912c 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/formulaNormalisationRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/formulaNormalisationRules.key @@ -355,14 +355,14 @@ elim_forall2 { \find(\forall Gvar; (Gvar != Hterm)) \varcond(\notFreeIn(Gvar, Hterm)) - \replacewith(G::instance(Hterm) = FALSE) + \replacewith(instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; elim_forall3 { \find(\forall Gvar; (Hterm != Gvar)) \varcond(\notFreeIn(Gvar, Hterm)) - \replacewith(G::instance(Hterm) = FALSE) + \replacewith(instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -384,7 +384,7 @@ \find(\forall Gvar; (phi | Gvar != Hterm)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}phi) - | G::instance(Hterm) = FALSE) + | instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -392,7 +392,7 @@ \find(\forall Gvar; (phi | Hterm != Gvar)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}phi) - | G::instance(Hterm) = FALSE) + | instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -416,7 +416,7 @@ \find(\forall Gvar; (Gvar = Hterm -> phi)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}phi) - | G::instance(Hterm) = FALSE) + | instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -424,7 +424,7 @@ \find(\forall Gvar; (Hterm = Gvar -> phi)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}phi) - | G::instance(Hterm) = FALSE) + | instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -446,7 +446,7 @@ \find(\forall Gvar; ((psi & Gvar = Hterm) -> phi)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}(psi -> phi)) - | G::instance(Hterm) = FALSE) + | instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -454,7 +454,7 @@ \find(\forall Gvar; ((psi & Hterm = Gvar) -> phi)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}(psi -> phi)) - | G::instance(Hterm) = FALSE) + | instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -476,7 +476,7 @@ \find(\forall Gvar; ((Gvar = Hterm & psi) -> phi)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}(psi -> phi)) - | G::instance(Hterm) = FALSE) + | instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -484,7 +484,7 @@ \find(\forall Gvar; ((Hterm = Gvar & psi) -> phi)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}(psi -> phi)) - | G::instance(Hterm) = FALSE) + | instance<[G]>(Hterm) = FALSE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -505,14 +505,14 @@ elim_exists2 { \find(\exists Gvar; (Gvar = Hterm)) \varcond(\notFreeIn(Gvar, Hterm)) - \replacewith(G::instance(Hterm) = TRUE) + \replacewith(instance<[G]>(Hterm) = TRUE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; elim_exists3 { \find(\exists Gvar; (Hterm = Gvar)) \varcond(\notFreeIn(Gvar, Hterm)) - \replacewith(G::instance(Hterm) = TRUE) + \replacewith(instance<[G]>(Hterm) = TRUE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -534,7 +534,7 @@ \find(\exists Gvar; (phi & Gvar = Hterm)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}phi) - & G::instance(Hterm) = TRUE) + & instance<[G]>(Hterm) = TRUE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; @@ -542,7 +542,7 @@ \find(\exists Gvar; (phi & Hterm = Gvar)) \varcond(\notFreeIn(Gvar, Hterm)) \replacewith(({\subst Gvar; (G)Hterm}phi) - & G::instance(Hterm) = TRUE) + & instance<[G]>(Hterm) = TRUE) \heuristics(elimQuantifier, elimQuantifierWithCast) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/genericRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/genericRules.key index 5c721112e8c..c550670c498 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/genericRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/genericRules.key @@ -60,7 +60,7 @@ instanceof_static_type { \schemaVar \term any a; - \find(G::instance(a)) + \find(instance<[G]>(a)) \varcond(\sub(\typeof(a), G)) \replacewith(TRUE) \displayname "instanceof static supertype" @@ -70,7 +70,7 @@ instanceof_static_type_2 { \schemaVar \term any a, a2; \assumes(a2 = a ==>) - \find(G::instance(a)) + \find(instance<[G]>(a)) \sameUpdateLevel \varcond(\sub(\typeof(a2), G)) \replacewith(TRUE) @@ -80,7 +80,7 @@ instanceof_not_compatible { \schemaVar \term any a; - \find(G::instance(a) = TRUE) + \find(instance<[G]>(a) = TRUE) \varcond(\sub(Null, G), \disjointModuloNull(G, \typeof(a))) \replacewith(a = null) \displayname "instanceof disjoint type" @@ -89,7 +89,7 @@ instanceof_not_compatible_2 { \schemaVar \term any a; - \find(G::instance(a) = FALSE) + \find(instance<[G]>(a) = FALSE) \varcond(\sub(Null, G), \disjointModuloNull(G, \typeof(a))) \replacewith(!(a = null)) \displayname "instanceof disjoint type" @@ -98,7 +98,7 @@ instanceof_not_compatible_3 { \schemaVar \term any a; - \find(G::instance(a) = TRUE) + \find(instance<[G]>(a) = TRUE) \varcond(\not \sub(Null, G), \disjointModuloNull(G, \typeof(a))) \replacewith(false) \displayname "instanceof disjoint type" @@ -107,7 +107,7 @@ instanceof_not_compatible_4 { \schemaVar \term any a; - \find(G::instance(a) = FALSE) + \find(instance<[G]>(a) = FALSE) \varcond(\not \sub(Null, G), \disjointModuloNull(G, \typeof(a))) \replacewith(true) \displayname "instanceof disjoint type" @@ -119,8 +119,8 @@ // See issue #1501. Rule added by MU 31/10/2014 instanceof_not_compatible_5 { \schemaVar \term any a; - \assumes(H::instance(a) = TRUE ==>) - \find(G::instance(a) = TRUE) + \assumes(instance<[H]>(a) = TRUE ==>) + \find(instance<[G]>(a) = TRUE) \varcond(\sub(Null, G), \disjointModuloNull(G, H)) \replacewith(a = null) \displayname "instanceof disjoint type" @@ -129,8 +129,8 @@ instanceof_known_dynamic_type { \schemaVar \term any a; - \assumes(G::exactInstance(a) = TRUE ==>) - \find(H::instance(a)) + \assumes(exactInstance<[G]>(a) = TRUE ==>) + \find(instance<[H]>(a)) \sameUpdateLevel \varcond(\sub(G, H)) \replacewith(TRUE) @@ -139,8 +139,8 @@ instanceof_known_dynamic_type_2 { \schemaVar \term any a; - \assumes(G::exactInstance(a) = TRUE ==>) - \find(H::instance(a)) + \assumes(exactInstance<[G]>(a) = TRUE ==>) + \find(instance<[H]>(a)) \sameUpdateLevel \varcond(\not \sub(G, H)) \replacewith(FALSE) @@ -149,8 +149,8 @@ exact_instance_known_dynamic_type { \schemaVar \term any a; - \assumes(G::exactInstance(a) = TRUE ==>) - \find(H::exactInstance(a)) + \assumes(exactInstance<[G]>(a) = TRUE ==>) + \find(exactInstance<[H]>(a)) \sameUpdateLevel \varcond(\not \same(G, H)) \replacewith(FALSE) @@ -161,13 +161,13 @@ typeEq { \find(s = t1 ==>) - \add(H::instance(s) = TRUE, G::instance(t1) = TRUE ==>) + \add(instance<[H]>(s) = TRUE, instance<[G]>(t1) = TRUE ==>) \displayname "typeEq" }; typeEqDerived { \assumes(s = t1 ==>) - \find(H::instance(s)) + \find(instance<[H]>(s)) \sameUpdateLevel \replacewith(TRUE) \heuristics(simplify, concrete) @@ -176,7 +176,7 @@ typeEqDerived2 { \assumes(s = t1 ==>) - \find(G::instance(t1)) + \find(instance<[G]>(t1)) \sameUpdateLevel \replacewith(TRUE) \heuristics(simplify, concrete) @@ -187,13 +187,13 @@ // is sameUpdateLevel neccessary? Don't think so as static type cannot be changed \find(s) \sameUpdateLevel - \add(G::instance(s) = TRUE ==>) + \add(instance<[G]>(s) = TRUE ==>) }; castAdd { \schemaVar \term [strict] C strictCTerm2; - \assumes(CSub::instance(strictCTerm2) = TRUE ==>) + \assumes(instance<[CSub]>(strictCTerm2) = TRUE ==>) \find(strictCTerm2) \sameUpdateLevel \replacewith((CSub)strictCTerm2) @@ -234,38 +234,38 @@ }; castType { - \assumes(H::instance((C)s) = TRUE ==>) - \find(CSub::instance(s) = TRUE ==>) - \replacewith(H::instance(s) = TRUE ==>) + \assumes(instance<[H]>((C)s) = TRUE ==>) + \find(instance<[CSub]>(s) = TRUE ==>) + \replacewith(instance<[H]>(s) = TRUE ==>) \heuristics(simplify) \displayname "castType" }; castType2 { - \assumes( ==> H::instance((C)s) = TRUE) - \find(CSub::instance(s) = TRUE ==>) - \replacewith( ==> H::instance(s) = TRUE) + \assumes( ==> instance<[H]>((C)s) = TRUE) + \find(instance<[CSub]>(s) = TRUE ==>) + \replacewith( ==> instance<[H]>(s) = TRUE) \heuristics(simplify) \displayname "castType" }; closeType { - \assumes( ==> G::instance(t1) = TRUE) - \find(GSub::instance(t1) = TRUE ==>) \closegoal + \assumes( ==> instance<[G]>(t1) = TRUE) + \find(instance<[GSub]>(t1) = TRUE ==>) \closegoal \displayname "closeType" \heuristics(closure) }; closeTypeSwitched { - \assumes(GSub::instance(t1) = TRUE ==>) - \find( ==> G::instance(t1) = TRUE) \closegoal + \assumes(instance<[GSub]>(t1) = TRUE ==>) + \find( ==> instance<[G]>(t1) = TRUE) \closegoal \displayname "closeType" \heuristics(closure) }; ineffectiveCast { - \assumes(H::instance(t) = TRUE ==>) + \assumes(instance<[H]>(t) = TRUE ==>) \find((H)t) \sameUpdateLevel \add((H)t = t ==>) @@ -281,7 +281,7 @@ // castDel3{ // \schemaVar \term any st; // - // \assumes( H::instance(st) = TRUE ==> ) + // \assumes( instance<[H]>(st) = TRUE ==> ) // \find ((H)st) \sameUpdateLevel // \replacewith (st) // \heuristics (simplify) @@ -290,7 +290,7 @@ // there was a completeness hole w/o this rule ineffectiveCast3 { - \assumes(H::exactInstance(t) = TRUE ==>) + \assumes(exactInstance<[H]>(t) = TRUE ==>) \find((H)t) \sameUpdateLevel \add((H)t = t ==>) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key index 87896efa8da..6907e596eec 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key @@ -13,17 +13,17 @@ \functions { // select/store - alpha alpha::select(Heap, Object, Field); + alpha select<[alpha]>(Heap, Object, Field); Heap store(Heap, Object, Field, any); Heap create(Heap, Object); Heap anon(Heap, LocSet, Heap); Heap memset(Heap, LocSet, any); // default value for a field - alpha alpha::defaultValue; + alpha defaultValue<[alpha]>; // reading from final attributes (corresponds to select for non-final fields) - alpha alpha::final(Object, Field); + alpha final<[alpha]>(Object, Field); // fields \unique Field arr(int); diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key index 6936e4daea1..eedbe9e95be 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key @@ -25,8 +25,8 @@ (\forall o; ( elementOf(o, f, locs) | !o = null - & !boolean::select(heapOld, o, java.lang.Object::) = TRUE - | any::select(heapNew, o, f) = any::select(heapOld, o, f)))) + & !select<[boolean]>(heapOld, o, java.lang.Object::) = TRUE + | select<[any]>(heapNew, o, f) = select<[any]>(heapOld, o, f)))) \heuristics(delayedExpansion) }; @@ -40,11 +40,11 @@ \schemaVar \term Field f, f2; \schemaVar \term alpha x; - \find(beta::select(store(h, o, f, x), o2, f2)) + \find(select<[beta]>(store(h, o, f, x), o2, f2)) \replacewith(\if(o = o2 & f = f2 & f != java.lang.Object::) \then((beta)x) - \else(beta::select(h, o2, f2))) + \else(select<[beta]>(h, o2, f2))) \heuristics(semantics_blasting) }; @@ -53,20 +53,20 @@ \schemaVar \term Object o, o2; \schemaVar \term Field f; - \find(beta::select(create(h, o), o2, f)) + \find(select<[beta]>(create(h, o), o2, f)) (permissions:off) { \replacewith(\if(o = o2 & o != null & f = java.lang.Object::) \then((beta)TRUE) - \else(beta::select(h, o2, f))) + \else(select<[beta]>(h, o2, f))) }; (permissions:on) { // Permissions are not initialised by Java code when objects are constructed // so it is necessary to know the default value for permissions on freshly created objects // (applies to all selectOfCreate rules) \replacewith(\if(o = o2 & o != null) - \then(\if(f = java.lang.Object::) \then((beta)TRUE) \else(beta::defaultValue)) - \else(beta::select(h, o2, f))) + \then(\if(f = java.lang.Object::) \then((beta)TRUE) \else(defaultValue<[beta]>)) + \else(select<[beta]>(h, o2, f))) } \heuristics(semantics_blasting) }; @@ -77,12 +77,12 @@ \schemaVar \term Object o; \schemaVar \term Field f; - \find(beta::select(anon(h, s, h2), o, f)) + \find(select<[beta]>(anon(h, s, h2), o, f)) \replacewith(\if(elementOf(o, f, s) & f != java.lang.Object:: | elementOf(o, f, freshLocs(h))) - \then(beta::select(h2, o, f)) - \else(beta::select(h, o, f))) + \then(select<[beta]>(h2, o, f)) + \else(select<[beta]>(h, o, f))) \heuristics(semantics_blasting) }; @@ -93,11 +93,11 @@ \schemaVar \term Object o; \schemaVar \term Field f; - \find(beta::select(memset(h, s, x), o, f)) + \find(select<[beta]>(memset(h, s, x), o, f)) \replacewith(\if(elementOf(o, f, s) & f != java.lang.Object::) \then((beta)x) - \else(beta::select(h, o, f))) + \else(select<[beta]>(h, o, f))) \heuristics(semantics_blasting) }; @@ -106,14 +106,14 @@ // rule. The rule is proven correct within KeY using the rules // selectCreatedOfAnon and selectOfAnon on the cut-formula // \forall Heap h2; - // ( boolean::select(anon(v_h_0, empty, h2), null, java.lang.Object::) = - // boolean::select(anon(v_h_0, empty, h2), null, java.lang.Object::) ) . + // ( select<[boolean]>(anon(v_h_0, empty, h2), null, java.lang.Object::) = + // select<[boolean]>(anon(v_h_0, empty, h2), null, java.lang.Object::) ) . // See comment on selectCreatedOfAnon. nullCreated { \schemaVar \variables Heap h; - \add((\forall h; boolean::select(h, null, java.lang.Object::) = TRUE) | - (\forall h; boolean::select(h, null, java.lang.Object::) = FALSE) ==>) + \add((\forall h; select<[boolean]>(h, null, java.lang.Object::) = TRUE) | + (\forall h; select<[boolean]>(h, null, java.lang.Object::) = FALSE) ==>) }; // -------------------------------------------------------------------------- @@ -129,12 +129,12 @@ \schemaVar \term Heap EQ; \assumes(store(h, o, f, x) = EQ ==>) - \find(beta::select(EQ, o2, f2)) + \find(select<[beta]>(EQ, o2, f2)) \sameUpdateLevel \replacewith(\if(o = o2 & f = f2 & f != java.lang.Object::) \then((beta)x) - \else(beta::select(h, o2, f2))) + \else(select<[beta]>(h, o2, f2))) \heuristics(simplify_heap_high_costs) }; @@ -146,18 +146,18 @@ \schemaVar \term Heap EQ; \assumes(create(h, o) = EQ ==>) - \find(beta::select(EQ, o2, f)) + \find(select<[beta]>(EQ, o2, f)) \sameUpdateLevel (permissions:off) { \replacewith(\if(o = o2 & o != null & f = java.lang.Object::) \then((beta)TRUE) - \else(beta::select(h, o2, f))) + \else(select<[beta]>(h, o2, f))) }; (permissions:on) { \replacewith(\if(o = o2 & o != null) - \then(\if(f = java.lang.Object::) \then((beta)TRUE) \else(beta::defaultValue)) - \else(beta::select(h, o2, f))) + \then(\if(f = java.lang.Object::) \then((beta)TRUE) \else(defaultValue<[beta]>)) + \else(select<[beta]>(h, o2, f))) } \heuristics(simplify_heap_high_costs) }; @@ -171,13 +171,13 @@ \schemaVar \term Heap EQ; \assumes(anon(h, s, h2) = EQ ==>) - \find(beta::select(EQ, o, f)) + \find(select<[beta]>(EQ, o, f)) \sameUpdateLevel \replacewith(\if(elementOf(o, f, s) & f != java.lang.Object:: | elementOf(o, f, freshLocs(h))) - \then(beta::select(h2, o, f)) - \else(beta::select(h, o, f))) + \then(select<[beta]>(h2, o, f)) + \else(select<[beta]>(h, o, f))) \heuristics(simplify_heap_high_costs) }; @@ -191,12 +191,12 @@ \schemaVar \term Heap EQ; \assumes(memset(h, s, x) = EQ ==>) - \find(beta::select(EQ, o, f)) + \find(select<[beta]>(EQ, o, f)) \sameUpdateLevel \replacewith(\if(elementOf(o, f, s) & f != java.lang.Object::) \then((beta)x) - \else(beta::select(h, o, f))) + \else(select<[beta]>(h, o, f))) \heuristics(simplify_heap_high_costs) }; @@ -337,11 +337,11 @@ \schemaVar \term Field f; \schemaVar \skolemTerm beta selectSK; - \find(beta::select(h, o, f)) + \find(select<[beta]>(h, o, f)) \sameUpdateLevel \replacewith(selectSK<>) - \add(beta::select(h, o, f) = selectSK<> ==>) + \add(select<[beta]>(h, o, f) = selectSK<> ==>) \heuristics(pull_out_select) }; @@ -352,18 +352,18 @@ \schemaVar \term alpha x; \schemaVar \term beta sk; - \find(beta::select(store(h, o, f, x), o2, f2) = sk ==>) + \find(select<[beta]>(store(h, o, f, x), o2, f2) = sk ==>) \inSequentState \replacewith( \if(o = o2 & f = f2 & f != java.lang.Object::) \then((beta)x) - \else(beta::select(h, o2, f2)) + \else(select<[beta]>(h, o2, f2)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(store(h, o, f, x), o2, f2)) + \find(select<[beta]>(store(h, o, f, x), o2, f2)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -380,18 +380,18 @@ \schemaVar \term beta sk; \assumes(store(h, o, f, x) = EQ ==>) - \find(beta::select(EQ, o2, f2) = sk ==>) + \find(select<[beta]>(EQ, o2, f2) = sk ==>) \inSequentState \replacewith( \if(o = o2 & f = f2 & f != java.lang.Object::) \then((beta)x) - \else(beta::select(h, o2, f2)) + \else(select<[beta]>(h, o2, f2)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(EQ, o2, f2)) + \find(select<[beta]>(EQ, o2, f2)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -406,18 +406,18 @@ \schemaVar \term Field f; \schemaVar \term beta sk; - \find(beta::select(create(h, o), o2, f) = sk ==>) + \find(select<[beta]>(create(h, o), o2, f) = sk ==>) \inSequentState (permissions:off) { \replacewith( \if(o = o2 & o != null & f = java.lang.Object::) \then((beta)TRUE) - \else(beta::select(h, o2, f)) + \else(select<[beta]>(h, o2, f)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(create(h, o), o2, f)) + \find(select<[beta]>(create(h, o), o2, f)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -426,12 +426,12 @@ (permissions:on) { \replacewith( \if(o = o2 & o != null) - \then(\if(f = java.lang.Object::) \then((beta)TRUE) \else(beta::defaultValue)) - \else(beta::select(h, o2, f)) + \then(\if(f = java.lang.Object::) \then((beta)TRUE) \else(defaultValue<[beta]>)) + \else(select<[beta]>(h, o2, f)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(create(h, o), o2, f)) + \find(select<[beta]>(create(h, o), o2, f)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -448,18 +448,18 @@ \schemaVar \term beta sk; \assumes(create(h, o) = EQ ==>) - \find(beta::select(EQ, o2, f) = sk ==>) + \find(select<[beta]>(EQ, o2, f) = sk ==>) \inSequentState (permissions:off) { \replacewith( \if(o = o2 & o != null & f = java.lang.Object::) \then((beta)TRUE) - \else(beta::select(h, o2, f)) + \else(select<[beta]>(h, o2, f)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(EQ, o2, f)) + \find(select<[beta]>(EQ, o2, f)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -469,12 +469,12 @@ (permissions:on) { \replacewith( \if(o = o2 & o != null) - \then(\if(f = java.lang.Object::) \then((beta)TRUE) \else(beta::defaultValue)) - \else(beta::select(h, o2, f)) + \then(\if(f = java.lang.Object::) \then((beta)TRUE) \else(defaultValue<[beta]>)) + \else(select<[beta]>(h, o2, f)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(EQ, o2, f)) + \find(select<[beta]>(EQ, o2, f)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -490,19 +490,19 @@ \schemaVar \term Field f; \schemaVar \term beta sk; - \find(beta::select(anon(h, s, h2), o, f) = sk ==>) + \find(select<[beta]>(anon(h, s, h2), o, f) = sk ==>) \inSequentState \replacewith( \if(elementOf(o, f, s) & f != java.lang.Object:: | elementOf(o, f, freshLocs(h))) - \then(beta::select(h2, o, f)) - \else(beta::select(h, o, f)) + \then(select<[beta]>(h2, o, f)) + \else(select<[beta]>(h, o, f)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(anon(h, s, h2), o, f)) + \find(select<[beta]>(anon(h, s, h2), o, f)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -519,19 +519,19 @@ \schemaVar \term beta sk; \assumes(anon(h, s, h2) = EQ ==>) - \find(beta::select(EQ, o, f) = sk ==>) + \find(select<[beta]>(EQ, o, f) = sk ==>) \inSequentState \replacewith( \if(elementOf(o, f, s) & f != java.lang.Object:: | elementOf(o, f, freshLocs(h))) - \then(beta::select(h2, o, f)) - \else(beta::select(h, o, f)) + \then(select<[beta]>(h2, o, f)) + \else(select<[beta]>(h, o, f)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(EQ, o, f)) + \find(select<[beta]>(EQ, o, f)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -548,18 +548,18 @@ \schemaVar \term Field f; \schemaVar \term beta sk; - \find(beta::select(memset(h, s, x), o, f) = sk ==>) + \find(select<[beta]>(memset(h, s, x), o, f) = sk ==>) \inSequentState \replacewith( \if(elementOf(o, f, s) & f != java.lang.Object::) \then(x) - \else(beta::select(h, o, f)) + \else(select<[beta]>(h, o, f)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(memset(h, s, x), o, f)) + \find(select<[beta]>(memset(h, s, x), o, f)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -577,18 +577,18 @@ \schemaVar \term beta sk; \assumes(memset(h, s, x) = EQ ==>) - \find(beta::select(EQ, o, f) = sk ==>) + \find(select<[beta]>(EQ, o, f) = sk ==>) \inSequentState \replacewith( \if(elementOf(o, f, s) & f != java.lang.Object::) \then(x) - \else(beta::select(h, o, f)) + \else(select<[beta]>(h, o, f)) = sk ==>) \addrules( replaceKnownSelect { - \find(beta::select(EQ, o, f)) + \find(select<[beta]>(EQ, o, f)) \inSequentState \replacewith(sk) \heuristics(concrete) @@ -660,11 +660,11 @@ \schemaVar \term Field f1, f2; \schemaVar \term any x; - \find(alpha::select(store(h, o, f1, x), u, f2)) + \find(select<[alpha]>(store(h, o, f1, x), u, f2)) \varcond(\differentFields(f1, f2)) - \replacewith(alpha::select(h, u, f2)) + \replacewith(select<[alpha]>(h, u, f2)) \heuristics(simplify) }; @@ -676,11 +676,11 @@ \schemaVar \term any x; \assumes(store(h, o, f1, x) = EQ ==>) - \find(alpha::select(EQ, u, f2)) + \find(select<[alpha]>(EQ, u, f2)) \sameUpdateLevel \varcond(\differentFields(f1, f2)) - \replacewith(alpha::select(h, u, f2)) + \replacewith(select<[alpha]>(h, u, f2)) \heuristics(simplify) }; @@ -712,19 +712,19 @@ // CS: This taclet is not a lemma. It does not follow from the axiom // selectOfAnon. The term - // boolean::select(anon(h, s, h2), null, java.lang.Object::) - // equals beta::select(h, null, java.lang.Object::) by the + // select<[boolean]>(anon(h, s, h2), null, java.lang.Object::) + // equals select<[beta]>(h, null, java.lang.Object::) by the // definition selectOfAnon and freshLocs. This taclet replaces - // boolean::select(anon(h, s, h2), null, java.lang.Object::) - // by beta::select(h, null, java.lang.Object::) | - // beta::select(h2, null, java.lang.Object::) . + // select<[boolean]>(anon(h, s, h2), null, java.lang.Object::) + // by select<[beta]>(h, null, java.lang.Object::) | + // select<[beta]>(h2, null, java.lang.Object::) . // As a consequence we have forall heaps h, h2 - // beta::select(h, null, java.lang.Object::) <-> - // ( beta::select(h, null, java.lang.Object::) | - // beta::select(h2, null, java.lang.Object::) ) + // select<[beta]>(h, null, java.lang.Object::) <-> + // ( select<[beta]>(h, null, java.lang.Object::) | + // select<[beta]>(h2, null, java.lang.Object::) ) // which is equivalent to - // beta::select(h2, null, java.lang.Object::) -> - // beta::select(h, null, java.lang.Object::) forall h, h2. + // select<[beta]>(h2, null, java.lang.Object::) -> + // select<[beta]>(h, null, java.lang.Object::) forall h, h2. // Hence we only consider interpretations where (the underspecified) // location (null, java.lang.Object::) equals TRUE on all heaps // or where it equals FALSE on all heaps. Since we "only" overspecify the @@ -737,11 +737,11 @@ \schemaVar \term LocSet s; \schemaVar \term Object o; - \find(boolean::select(anon(h, s, h2), o, java.lang.Object::)) + \find(select<[boolean]>(anon(h, s, h2), o, java.lang.Object::)) - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(select<[boolean]>(h, o, java.lang.Object::) = TRUE) \then(TRUE) - \else(boolean::select(h2, o, java.lang.Object::))) + \else(select<[boolean]>(h2, o, java.lang.Object::))) \heuristics(simplify_heap_high_costs) }; @@ -752,10 +752,10 @@ \schemaVar \term LocSet s; \schemaVar \term Object o; - \find(boolean::select(anon(h, s, h2), o, java.lang.Object::) = TRUE) + \find(select<[boolean]>(anon(h, s, h2), o, java.lang.Object::) = TRUE) - \replacewith(boolean::select(h, o, java.lang.Object::) = TRUE | - boolean::select(h2, o, java.lang.Object::) = TRUE) + \replacewith(select<[boolean]>(h, o, java.lang.Object::) = TRUE | + select<[boolean]>(h2, o, java.lang.Object::) = TRUE) \heuristics(simplify_ENLARGING) }; @@ -768,12 +768,12 @@ \schemaVar \term Heap EQ; \assumes(anon(h, s, h2) = EQ ==>) - \find(boolean::select(EQ, o, java.lang.Object::)) + \find(select<[boolean]>(EQ, o, java.lang.Object::)) \sameUpdateLevel - \replacewith(\if(boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(\if(select<[boolean]>(h, o, java.lang.Object::) = TRUE) \then(TRUE) - \else(boolean::select(h2, o, java.lang.Object::))) + \else(select<[boolean]>(h2, o, java.lang.Object::))) \heuristics(simplify_heap_high_costs) }; @@ -786,11 +786,11 @@ \schemaVar \term Heap EQ; \assumes(anon(h, s, h2) = EQ ==>) - \find(boolean::select(EQ, o, java.lang.Object::) = TRUE) + \find(select<[boolean]>(EQ, o, java.lang.Object::) = TRUE) \sameUpdateLevel - \replacewith(boolean::select(h, o, java.lang.Object::) = TRUE | - boolean::select(h2, o, java.lang.Object::) = TRUE) + \replacewith(select<[boolean]>(h, o, java.lang.Object::) = TRUE | + select<[boolean]>(h2, o, java.lang.Object::) = TRUE) \heuristics(simplify_ENLARGING) }; @@ -803,7 +803,7 @@ \find(h = h2) \varcond(\notFreeIn(ov, h, h2), \notFreeIn(fv, h, h2)) - \replacewith(\forall ov; \forall fv; (any::select(h, ov, fv) = any::select(h2, ov, fv))) + \replacewith(\forall ov; \forall fv; (select<[any]>(h, ov, fv) = select<[any]>(h2, ov, fv))) \heuristics(semantics_blasting) @@ -819,12 +819,12 @@ \schemaVar \term Field f; \assumes(wellFormed(h) ==>) - \find(deltaObject::select(h, o, f)) + \find(deltaselect<[Object]>(h, o, f)) \sameUpdateLevel - \add(deltaObject::select(h, o, f) = null - | boolean::select(h, - deltaObject::select(h, o, f), + \add(deltaselect<[Object]>(h, o, f) = null + | select<[boolean]>(h, + deltaselect<[Object]>(h, o, f), java.lang.Object::) = TRUE ==>) \heuristics(inReachableStateImplication) @@ -837,13 +837,13 @@ // Without that created-check, it is not consistent. \assumes(wellFormed(h), - boolean::select(h, o, java.lang.Object::) = TRUE ==>) - \find(deltaObject::final(o, f)) + select<[boolean]>(h, o, java.lang.Object::) = TRUE ==>) + \find(final<[deltaObject]>(o, f)) \sameUpdateLevel - \add(deltaObject::final(o, f) = null - | boolean::select(h, - deltaObject::final(o, f), + \add(final<[deltaObject]>(o, f) = null + | select<[boolean]>(h, + final<[deltaObject]>(o, f), java.lang.Object::) = TRUE ==>) \heuristics(inReachableStateImplication) @@ -855,10 +855,10 @@ \schemaVar \term Field f, f2; \assumes(wellFormed(h) ==>) - \find(elementOf(o2, f2, LocSet::select(h, o, f)) ==>) + \find(elementOf(o2, f2, select<[LocSet]>(h, o, f)) ==>) \add(o2 = null - | boolean::select(h, + | select<[boolean]>(h, o2, java.lang.Object::) = TRUE ==>) @@ -871,10 +871,10 @@ \schemaVar \term Field f, f2; \assumes(wellFormed(h) ==>) - \find(elementOf(o2, f2, LocSet::final(o, f)) ==>) + \find(elementOf(o2, f2, final<[LocSet]>(o, f)) ==>) \add(o2 = null - | boolean::select(h, + | select<[boolean]>(h, o2, java.lang.Object::) = TRUE ==>) @@ -888,11 +888,11 @@ \schemaVar \term Field f, f2; \schemaVar \term LocSet EQ; - \assumes(wellFormed(h), LocSet::select(h, o, f) = EQ ==>) + \assumes(wellFormed(h), select<[LocSet]>(h, o, f) = EQ ==>) \find(elementOf(o2, f2, EQ) ==>) \add(o2 = null - | boolean::select(h, + | select<[boolean]>(h, o2, java.lang.Object::) = TRUE ==>) @@ -905,11 +905,11 @@ \schemaVar \term Field f, f2; \schemaVar \term LocSet EQ; - \assumes(wellFormed(h), LocSet::final(o, f) = EQ ==>) + \assumes(wellFormed(h), final<[LocSet]>(o, f) = EQ ==>) \find(elementOf(o2, f2, EQ) ==>) \add(o2 = null - | boolean::select(h, + | select<[boolean]>(h, o2, java.lang.Object::) = TRUE ==>) @@ -957,7 +957,7 @@ \varcond(\fieldType(f, alpha)) - \replacewith(wellFormed(h) & (x = null | boolean::select(h, x, java.lang.Object::) = TRUE & alpha::instance(x) = TRUE)) + \replacewith(wellFormed(h) & (x = null | select<[boolean]>(h, x, java.lang.Object::) = TRUE & instance<[alpha]>(x) = TRUE)) \heuristics(simplify_enlarging) }; @@ -973,7 +973,7 @@ \varcond(\hasElementarySort(o, alpha)) - \replacewith(wellFormed(h) & (x = null | boolean::select(h, x, java.lang.Object::) = TRUE & arrayStoreValid(o, x))) + \replacewith(wellFormed(h) & (x = null | select<[boolean]>(h, x, java.lang.Object::) = TRUE & arrayStoreValid(o, x))) \heuristics(simplify_enlarging) }; @@ -1069,7 +1069,7 @@ \varcond(\hasElementarySort(ar, alpha)) \replacewith(wellFormed(h) & - (x = null | boolean::select(h, x, java.lang.Object::) = TRUE & arrayStoreValid(ar, x))) + (x = null | select<[boolean]>(h, x, java.lang.Object::) = TRUE & arrayStoreValid(ar, x))) \heuristics(simplify_enlarging) }; @@ -1103,7 +1103,7 @@ In pseudo-notation, the condition is something like this: - forall (o, f) in s: fieldtype(f)::instance(x) = TRUE + forall (o, f) in s: instance<[fieldtype(f)]> = TRUE Since this can not be encoded currently, we uncommented these rules as well as their corresponding EQ versions below (see wellFormedMemsetObjectEQ). @@ -1120,7 +1120,7 @@ \find(wellFormed(memset(h, s, x))) \succedentPolarity - \replacewith(wellFormed(h) & (x = null | boolean::select(h, x, java.lang.Object::) = TRUE)) + \replacewith(wellFormed(h) & (x = null | select<[boolean]>(h, x, java.lang.Object::) = TRUE)) \heuristics(simplify_enlarging) }; @@ -1172,7 +1172,7 @@ \varcond(\fieldType(f, alpha)) - \replacewith(wellFormed(h) & (x = null | boolean::select(h, x, java.lang.Object::) = TRUE & alpha::instance(x) = TRUE)) + \replacewith(wellFormed(h) & (x = null | select<[boolean]>(h, x, java.lang.Object::) = TRUE & instance<[alpha]>(x) = TRUE)) \heuristics(simplify_enlarging) }; @@ -1243,7 +1243,7 @@ \sameUpdateLevel \succedentPolarity - \replacewith(wellFormed(h) & (x = null | boolean::select(h, x, java.lang.Object::) = TRUE)) + \replacewith(wellFormed(h) & (x = null | select<[boolean]>(h, x, java.lang.Object::) = TRUE)) \heuristics(simplify_enlarging) }; @@ -1298,7 +1298,7 @@ \varcond(\isObserver(obs, h)) \add(obs = null - | boolean::select(h, obs, java.lang.Object::) = TRUE ==>) + | select<[boolean]>(h, obs, java.lang.Object::) = TRUE ==>) \heuristics(inReachableStateImplication) }; @@ -1313,7 +1313,7 @@ \varcond(\isObserver(obs, h)) \add(o = null - | boolean::select(h, o, java.lang.Object::) = TRUE ==>) + | select<[boolean]>(h, o, java.lang.Object::) = TRUE ==>) \heuristics(inReachableStateImplication) }; @@ -1329,7 +1329,7 @@ \varcond(\isObserver(obs, h)) \add(o = null - | boolean::select(h, o, java.lang.Object::) = TRUE ==>) + | select<[boolean]>(h, o, java.lang.Object::) = TRUE ==>) \heuristics(inReachableStateImplication) }; @@ -1345,12 +1345,12 @@ \assumes(wellFormed(h) ==>) - \find(beta::select(h, o, f)) + \find(select<[beta]>(h, o, f)) \varcond(\fieldType(f, alpha), \strict \sub(alpha, beta)) - \replacewith(alpha::select(h, o, f)) + \replacewith(select<[alpha]>(h, o, f)) \heuristics(simplify) }; @@ -1359,12 +1359,12 @@ \schemaVar \term Object o; \schemaVar \term Field f; - \find(beta::final(o,f)) + \find(final<[beta]>(o,f)) \varcond(\fieldType(f, alpha), \strict\sub(alpha, beta)) - \replacewith(alpha::final(o,f)) + \replacewith(final<[alpha]>(o,f)) \heuristics(simplify) }; @@ -1377,13 +1377,13 @@ \assumes(wellFormed(h) ==> o = null) - \find(beta::select(h, o, arr(idx))) + \find(select<[beta]>(h, o, arr(idx))) \sameUpdateLevel \varcond(\hasElementarySort(o, alpha), \strict \sub(alpha, beta)) - \replacewith(alpha::select(h, o, arr(idx))) + \replacewith(select<[alpha]>(h, o, arr(idx))) \heuristics(simplify) }; @@ -1393,12 +1393,12 @@ \assumes( ==> o = null ) - \find(beta::final(o,arr(idx))) \sameUpdateLevel + \find(final<[beta]>(o,arr(idx))) \sameUpdateLevel \varcond(\hasElementarySort(o, alpha), \strict\sub(alpha, beta)) - \replacewith(alpha::final(o,arr(idx))) + \replacewith(final<[alpha]>(o,arr(idx))) \heuristics(simplify) }; @@ -1413,8 +1413,8 @@ \schemaVar \term Object o; \schemaVar \term Field f; - \assumes(boolean::select(h, o, f) = TRUE ==>) - \find( ==> any::select(h, o, f) = TRUE) + \assumes(select<[boolean]>(h, o, f) = TRUE ==>) + \find( ==> select<[any]>(h, o, f) = TRUE) \replacewith( ==> true) @@ -1513,7 +1513,7 @@ \replacewith(( o != null & (depth > 0 -> \forall i; (0 <= i & i < length(o) -> - nonNull(heapSV, Object::select(heapSV, o, arr(i)), depth - 1)) + nonNull(heapSV, select<[Object]>(heapSV, o, arr(i)), depth - 1)) )) ) \heuristics(simplify_enlarging) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/infFlow.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/infFlow.key index 46034cc072e..c5181ca15e1 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/infFlow.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/infFlow.key @@ -50,10 +50,10 @@ \replacewith( ==> \forall i; ((0 <= i & i < seqLen(s)) - -> ((java.lang.Object::instance(any::seqGet(s, i)) = TRUE - -> boolean::select(h, java.lang.Object::seqGet(s, i), java.lang.Object::) = FALSE) - & (Seq::instance(any::seqGet(s, i)) = TRUE - -> newOnHeap(h, Seq::seqGet(s, i)))))) + -> ((instance<[java.lang.Object]>(seqGet<[any]>(s, i)) = TRUE + -> select<[boolean]>(h, seqGet<[java.lang.Object]>(s, i), java.lang.Object::) = FALSE) + & (Seqinstance<[Seq]>(seqGet<[any]>(s, i)) = TRUE + -> newOnHeap(h, seqGet<[Seq]>(s, i)))))) \heuristics(comprehensions) }; @@ -69,9 +69,9 @@ seqLen(s1) = seqLen(s2) & \forall i; ((0 <= i & i < seqLen(s1)) - -> ((sameType(any::seqGet(s1, i), any::seqGet(s2, i))) - & (Seq::instance(any::seqGet(s1, i)) = TRUE - -> sameTypes(Seq::seqGet(s1, i), Seq::seqGet(s2, i)))))) + -> ((sameType(seqGet<[any]>(s1, i), seqGet<[any]>(s2, i))) + & (Seqinstance<[Seq]>(seqGet<[any]>(s1, i)) = TRUE + -> sameTypes(seqGet<[Seq]>(s1, i), seqGet<[Seq]>(s2, i)))))) \heuristics(comprehensions) }; @@ -90,16 +90,16 @@ \replacewith( ==> \forall i; ((0 <= i & i < seqLen(t1)) - -> ((java.lang.Object::instance(any::seqGet(t1, i)) = TRUE + -> ((instance<[java.lang.Object]>(seqGet<[any]>(t1, i)) = TRUE -> objectIsomorphic(s1, - java.lang.Object::seqGet(t1, i), + seqGet<[java.lang.Object]>(t1, i), s2, - java.lang.Object::seqGet(t2, i))) - & (Seq::instance(any::seqGet(t1, i)) = TRUE + seqGet<[java.lang.Object]>(t2, i))) + & (Seqinstance<[Seq]>(seqGet<[any]>(t1, i)) = TRUE -> objectsIsomorphic(s1, - Seq::seqGet(t1, i), + seqGet<[Seq]>(t1, i), s2, - Seq::seqGet(t2, i)))))) + seqGet<[Seq]>(t2, i)))))) \heuristics(comprehensions) }; @@ -119,13 +119,13 @@ \replacewith( ==> \forall i; ((0 <= i & i < seqLen(s1)) - -> ((java.lang.Object::instance(any::seqGet(s1, i)) = TRUE - -> (java.lang.Object::seqGet(s1, i) = o1 - <-> java.lang.Object::seqGet(s2, i) = o2)) - & (Seq::instance(any::seqGet(s1, i)) = TRUE - -> objectIsomorphic(Seq::seqGet(s1, i), + -> ((instance<[java.lang.Object]>(seqGet<[any]>(s1, i)) = TRUE + -> (seqGet<[java.lang.Object]>(s1, i) = o1 + <-> seqGet<[java.lang.Object]>(s2, i) = o2)) + & (Seqinstance<[Seq]>(seqGet<[any]>(s1, i)) = TRUE + -> objectIsomorphic(seqGet<[Seq]>(s1, i), o1, - Seq::seqGet(s2, i), + seqGet<[Seq]>(s2, i), o2))))) \heuristics(comprehensions) @@ -134,7 +134,7 @@ sameTypeTrue { \schemaVar \term any x1, x2; - \assumes(G::exactInstance(x1) = TRUE, G::exactInstance(x2) = TRUE ==>) + \assumes(exactInstance<[G]>(x1) = TRUE, exactInstance<[G]>(x2) = TRUE ==>) \find(sameType(x1, x2)) \replacewith(true) @@ -145,7 +145,7 @@ sameTypeFalse { \schemaVar \term any x1, x2; - \assumes(G::exactInstance(x1) = TRUE, H::exactInstance(x2) = TRUE ==>) + \assumes(exactInstance<[G]>(x1) = TRUE, exactInstance<[H]>(x2) = TRUE ==>) \find(sameType(x1, x2)) \varcond(\not \same(G, H)) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/instanceAllocation.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/instanceAllocation.key index 6c4ec56fdd5..43e2892d30a 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/instanceAllocation.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/instanceAllocation.key @@ -105,9 +105,9 @@ } \modality{#allmodal}{.. ...}\endmodality (post)) \add(#lhs != null - & (wellFormed(heap) -> boolean::select(heap, #lhs, java.lang.Object::) = FALSE) - & (wellFormed(permissions) -> boolean::select(permissions, #lhs, java.lang.Object::) = FALSE) - & alphaObj::exactInstance(#lhs) = TRUE ==>) + & (wellFormed(heap) -> select<[boolean]>(heap, #lhs, java.lang.Object::) = FALSE) + & (wellFormed(permissions) -> select<[boolean]>(permissions, #lhs, java.lang.Object::) = FALSE) + & exactInstance<[alphaObj]>(#lhs) = TRUE ==>) \heuristics(method_expand) }; @@ -124,10 +124,10 @@ || permissions := create(permissions, #lhs)} \modality{#allmodal}{.. ...}\endmodality (post)) \add(#lhs != null - & (wellFormed(heap) -> (boolean::select(heap, #lhs, java.lang.Object::) = FALSE + & (wellFormed(heap) -> (select<[boolean]>(heap, #lhs, java.lang.Object::) = FALSE & length(#lhs) = #len)) - & (wellFormed(permissions) -> boolean::select(permissions, #lhs, java.lang.Object::) = FALSE) - & alphaObj::exactInstance(#lhs) = TRUE ==>) + & (wellFormed(permissions) -> select<[boolean]>(permissions, #lhs, java.lang.Object::) = FALSE) + & exactInstance<[alphaObj]>(#lhs) = TRUE ==>) \heuristics(method_expand) }; @@ -141,8 +141,8 @@ \replacewith( ==> {heap := create(heap, #lhs)} \modality{#allmodal}{.. ...}\endmodality (post)) \add(#lhs != null - & (wellFormed(heap) -> boolean::select(heap, #lhs, java.lang.Object::) = FALSE) - & alphaObj::exactInstance(#lhs) = TRUE ==>) + & (wellFormed(heap) -> select<[boolean]>(heap, #lhs, java.lang.Object::) = FALSE) + & exactInstance<[alphaObj]>(#lhs) = TRUE ==>) \heuristics(method_expand) }; @@ -158,9 +158,9 @@ #lhs, java.lang.Object::, FALSE)} \modality{#allmodal}{.. ...}\endmodality (post)) \add(#lhs != null - & (wellFormed(heap) -> (boolean::select(heap, #lhs, java.lang.Object::) = FALSE + & (wellFormed(heap) -> (select<[boolean]>(heap, #lhs, java.lang.Object::) = FALSE & length(#lhs) = #len)) - & alphaObj::exactInstance(#lhs) = TRUE ==>) + & exactInstance<[alphaObj]>(#lhs) = TRUE ==>) \heuristics(method_expand) }; @@ -205,34 +205,34 @@ // ---------------------------------------------------------------------------- /* exact_instance_implies_instance_reference { - \find (alphaObj::exactInstance(obj) = TRUE ==>) - \add (alphaObj::instance(obj) = TRUE ==>) + \find (exactInstance<[alphaObj]>(obj) = TRUE ==>) + \add (instance<[alphaObj]>(obj) = TRUE ==>) \heuristics (type_hierarchy_def) }; */ exact_instance_definition_int { - \find(int::exactInstance(idx0) = TRUE) + \find(exactInstance<[int]>(idx0) = TRUE) \varcond(\notFreeIn(iv, idx0)) \replacewith(\exists iv; (idx0 = iv)) \heuristics(simplify) }; exact_instance_definition_boolean { - \find(boolean::exactInstance(bool) = TRUE) + \find(exactInstance<[boolean]>(bool) = TRUE) \varcond(\notFreeIn(bv, bool)) \replacewith(\exists bv; (bool = bv)) \heuristics(simplify) }; exact_instance_definition_null { - \find(Null::exactInstance(obj) = TRUE) + \find(exactInstance<[Null]>(obj) = TRUE) \varcond(\notFreeIn(bv, bool)) \replacewith(obj = null) \heuristics(simplify) }; exact_instance_for_interfaces_or_abstract_classes { - \find(G::exactInstance(obj)) + \find(exactInstance<[G]>(obj)) \varcond(\isAbstractOrInterface(G)) \replacewith(FALSE) \heuristics(simplify) @@ -241,8 +241,8 @@ instance_for_final_types { \schemaVar \term any a; - \assumes(==> J::exactInstance(a) = TRUE) - \find(J::instance(a) = TRUE ==>) + \assumes(==> exactInstance<[J]>(a) = TRUE) + \find(instance<[J]>(a) = TRUE ==>) \varcond(\isFinal(J)) \replacewith(a = null ==>) \heuristics(simplify) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaHeader.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaHeader.key index 810c4692342..fc62abff04b 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaHeader.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaHeader.key @@ -25,7 +25,7 @@ \functions { - alpha alpha::cast(any); - boolean alpha::exactInstance(any); - boolean alpha::instance(any); + alpha cast<[alpha]>(any); + boolean exactInstance<[alpha]>(any); + boolean instance<[alpha]>(any); } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key index 8786c5308b5..15248d59188 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key @@ -103,7 +103,7 @@ ...}\endmodality post) "Normal Execution" [main]: \replacewith( ==> - {#lhs := int::select(heap, #se, java.lang.Object::)} + {#lhs := select<[int]>(heap, #se, java.lang.Object::)} \modality{#allmodal}{.. ...}\endmodality post); "#se is not null": \replacewith( ==> #se != null) @@ -311,7 +311,7 @@ assignment_write_array_this_access_normalassign { \find(\modality{#allmodal}{.#pm@#t(#v).. this[#se]=#se0; ...}\endmodality (post)) \replacewith((lt(#se, length(#v)) & lt(-1, #se) & - writePermission(Permission::select(permissions, #v, arr(#se)))) -> + writePermission(select<[Permission]>(permissions, #v, arr(#se)))) -> {heap := store(heap, #v, arr(#se), #se0)}\modality{#allmodal}{.. ...}\endmodality (post)) \heuristics(simplify_prog, simplify_prog_subset) \displayname "assignment" @@ -334,7 +334,7 @@ array_self_reference { \schemaVar \term Heap heapSV; \assumes(wellFormed(heapSV) ==> array = null) - \find(arrayStoreValid(array, G::select(heapSV, array, arr(idx)))) + \find(arrayStoreValid(array, select<[G]>(heapSV, array, arr(idx)))) \sameUpdateLevel \replacewith(true) \heuristics(simplify) @@ -344,7 +344,7 @@ array_self_reference_eq { \schemaVar \term Heap heapSV; \schemaVar \term G EQ; - \assumes(wellFormed(heapSV), G::select(heapSV, array, arr(idx)) = EQ ==> array = null) + \assumes(wellFormed(heapSV), select<[G]>(heapSV, array, arr(idx)) = EQ ==> array = null) \find(arrayStoreValid(array, EQ)) \sameUpdateLevel \replacewith(true) @@ -370,12 +370,12 @@ */ array_store_known_dynamic_array_type { - \assumes(J::exactInstance(array) = TRUE ==>) + \assumes(exactInstance<[J]>(array) = TRUE ==>) \find(arrayStoreValid(array, obj)) \sameUpdateLevel \varcond(\isReference [non_null](J)) \replacewith(obj = null | - #arrayBaseInstanceOf(J::exactInstance(array), obj) = TRUE) + #arrayBaseInstanceOf(exactInstance<[J]>(array), obj) = TRUE) \heuristics(simplify) \displayname "known dynamic array type" }; @@ -386,7 +386,7 @@ // will be uncommented soon // MU: ... uncommented more than 18 years later dynamic_type_for_null { - \find (G::exactInstance(null)) + \find (exactInstance<[G]>(null)) \varcond(\not\same(G,Null)) \replacewith(FALSE) \heuristics(concrete) @@ -944,7 +944,7 @@ \varcond(\hasSort(#npit, G), \sub(\typeof(#se), G)) "Normal Execution (#se instanceof #npit)" [main]: \replacewith({#lhs := #addCast(#se, #lhs)}\modality{#allmodal}{.. ...}\endmodality (post)) - \add(#se = null | G::instance(#se) = TRUE ==>) + \add(#se = null | instance<[G]>(#se) = TRUE ==>) \heuristics(simplify_prog) }; @@ -958,11 +958,11 @@ \varcond(\hasSort(#npit, G), \not \sub(\typeof(#se), G)) "Normal Execution (#se instanceof #npit)" [main]: \replacewith({#lhs := #addCast(#se, #lhs)}\modality{#allmodal}{.. ...}\endmodality (post)) - \add(#se = null | G::instance(#se) = TRUE ==>); + \add(#se = null | instance<[G]>(#se) = TRUE ==>); "ClassCastException (!(#se instanceof #npit))": \replacewith(\modality{#allmodal}{.. throw new java.lang.ClassCastException(); ...}\endmodality (post)) - \add( ==> #se = null | G::instance(#se) = TRUE) + \add( ==> #se = null | instance<[G]>(#se) = TRUE) \heuristics(simplify_prog) }; } @@ -973,11 +973,11 @@ \varcond(\hasSort(#npit, G), \not \sub(\typeof(#se), G)) "Normal Execution (#se instanceof #npit)" [main]: \replacewith( ==> {#lhs := #addCast(#se, #lhs)}\modality{#allmodal}{.. ...}\endmodality (post)) - // \add(#se = null | G::instance(#se) = TRUE ==>) + // \add(#se = null | instance<[G]>(#se) = TRUE ==>) ; "ClassCastException (!(#se instanceof #npit))": \replacewith( ==> false) - \add( ==> #se = null | G::instance(#se) = TRUE) + \add( ==> #se = null | instance<[G]>(#se) = TRUE) \heuristics(simplify_prog) }; } @@ -2907,7 +2907,7 @@ (permissions:on) { "Write Permission to #v[#se]": \replacewith(\modality{#normal}{.. assert false : "Access permission check-point (write)."; ...}\endmodality (post)) - \add( ==> writePermission(Permission::select(permissions, #v, arr(#se)))) + \add( ==> writePermission(select<[Permission]>(permissions, #v, arr(#se)))) }; "Null Reference (#v = null)": \replacewith(\modality{#normal}{.. throw new java.lang.NullPointerException(); ...}\endmodality (post)) @@ -2932,9 +2932,9 @@ "Normal Execution (#v != null)" [main]: \replacewith( {heap := store(heap, #v, arr(#se), #se0)} - {savedHeap := \if(int::select(heap, #v, java.lang.Object::) = 0) + {savedHeap := \if(select<[int]>(heap, #v, java.lang.Object::) = 0) \then(store(savedHeap, #v, java.lang.Object::, TRUE)) - \else(\if(boolean::select(savedHeap, #v, + \else(\if(select<[boolean]>(savedHeap, #v, java.lang.Object::) = FALSE) \then(store(savedHeap, #v, arr(#se), #se0)) \else(savedHeap))} @@ -2965,7 +2965,7 @@ ; (permissions:on) { "Write Permission to #v[#se]": - \replacewith( ==> writePermission(Permission::select(permissions, #v, arr(#se)))) + \replacewith( ==> writePermission(select<[Permission]>(permissions, #v, arr(#se)))) }; "Null Reference (#v = null)": \replacewith( ==> false) @@ -2998,9 +2998,9 @@ "Normal Execution (#v != null)" [main]: \replacewith( ==> {heap := store(heap, #v, arr(#se), #se0)} - {savedHeap := \if(int::select(heap, #v, java.lang.Object::) = 0) + {savedHeap := \if(select<[int]>(heap, #v, java.lang.Object::) = 0) \then(store(savedHeap, #v, java.lang.Object::, TRUE)) - \else(\if(boolean::select(savedHeap, #v, + \else(\if(select<[boolean]>(savedHeap, #v, java.lang.Object::) = FALSE) \then(store(savedHeap, #v, arr(#se), #se0)) \else(savedHeap))} @@ -3028,9 +3028,9 @@ \varcond(\isReferenceArray(#v)) \replacewith( {heap := store(heap, #v, arr(#se), #se0)} - {savedHeap := \if(int::select(heap, #v, java.lang.Object::) = 0) + {savedHeap := \if(select<[int]>(heap, #v, java.lang.Object::) = 0) \then(store(savedHeap, #v, java.lang.Object::, TRUE)) - \else(\if(boolean::select(savedHeap, #v, + \else(\if(select<[boolean]>(savedHeap, #v, java.lang.Object::) = FALSE) \then(store(savedHeap, #v, arr(#se), #se0)) \else(savedHeap))} @@ -3052,7 +3052,7 @@ (permissions:on) { "Write Permission to #v[#se]": \replacewith(\modality{#normal}{.. assert false : "Access permission check-point (write)."; ...}\endmodality (post)) - \add( ==> writePermission(Permission::select(permissions, #v, arr(#se)))) + \add( ==> writePermission(select<[Permission]>(permissions, #v, arr(#se)))) }; "Null Reference (#v = null)": \replacewith(\modality{#normal}{.. @@ -3075,9 +3075,9 @@ "Normal Execution (#v != null)" [main]: \replacewith( {heap := store(heap, #v, arr(#se), #se0)} - {savedHeap := \if(int::select(heap, #v, java.lang.Object::) = 0) + {savedHeap := \if(select<[int]>(heap, #v, java.lang.Object::) = 0) \then(store(savedHeap, #v, java.lang.Object::, TRUE)) - \else(\if(boolean::select(savedHeap, #v, + \else(\if(select<[boolean]>(savedHeap, #v, java.lang.Object::) = FALSE) \then(store(savedHeap, #v, arr(#se), #se0)) \else(savedHeap))} @@ -3107,7 +3107,7 @@ ; (permissions:on) { "Write Permission to #v[#se]": - \replacewith( ==> writePermission(Permission::select(permissions, #v, arr(#se)))) + \replacewith( ==> writePermission(select<[Permission]>(permissions, #v, arr(#se)))) }; "Null Reference (#v = null)": \replacewith( ==> false) @@ -3137,9 +3137,9 @@ "Normal Execution (#v != null)" [main]: \replacewith( ==> {heap := store(heap, #v, arr(#se), #se0)} - {savedHeap := \if(int::select(heap, #v, java.lang.Object::) = 0) + {savedHeap := \if(select<[int]>(heap, #v, java.lang.Object::) = 0) \then(store(savedHeap, #v, java.lang.Object::, TRUE)) - \else(\if(boolean::select(savedHeap, #v, + \else(\if(select<[boolean]>(savedHeap, #v, java.lang.Object::) = FALSE) \then(store(savedHeap, #v, arr(#se), #se0)) \else(savedHeap))} @@ -3165,9 +3165,9 @@ \varcond(\not \isReferenceArray(#v)) \replacewith( {heap := store(heap, #v, arr(#se), #se0)} - {savedHeap := \if(int::select(heap, #v, java.lang.Object::) = 0) + {savedHeap := \if(select<[int]>(heap, #v, java.lang.Object::) = 0) \then(store(savedHeap, #v, java.lang.Object::, TRUE)) - \else(\if(boolean::select(savedHeap, #v, + \else(\if(select<[boolean]>(savedHeap, #v, java.lang.Object::) = FALSE) \then(store(savedHeap, #v, arr(#se), #se0)) \else(savedHeap))} @@ -3184,12 +3184,12 @@ \sameUpdateLevel \varcond(\hasElementarySort(#v0, G)) "Normal Execution (#v0 != null)" [main]: - \replacewith({#v := G::select(heap, #v0, arr(#se))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v := select<[G]>(heap, #v0, arr(#se))}\modality{#allmodal}{.. ...}\endmodality (post)) \add( ==> (#v0 = null) | leq(length(#v0), #se) | lt(#se, 0)); (permissions:on) { "Read Permission to #v0[#se]": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, #v0, arr(#se)))) + \add( ==> readPermission(select<[Permission]>(permissions, #v0, arr(#se)))) }; "Null Reference (#v0 = null)": \replacewith(\modality{#allmodal}{.. @@ -3210,12 +3210,12 @@ \find( ==> \modality{#allmodal}{.. #v = #v0[#se]; ...}\endmodality (post)) \varcond(\hasElementarySort(#v0, G)) "Normal Execution (#v0 != null)" [main]: - \replacewith( ==> {#v := G::select(heap, #v0, arr(#se))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith( ==> {#v := select<[G]>(heap, #v0, arr(#se))}\modality{#allmodal}{.. ...}\endmodality (post)) // \add (==>(#v0=null) | leq(length(#v0), #se) | lt(#se,0)) ; (permissions:on) { "Read Permission to #v0[#se]": - \replacewith( ==> readPermission(Permission::select(permissions, #v0, arr(#se)))) + \replacewith( ==> readPermission(select<[Permission]>(permissions, #v0, arr(#se)))) }; "Null Reference (#v0 = null)": \replacewith( ==> false) @@ -3231,7 +3231,7 @@ assignment_array2 { \find(\modality{#allmodal}{.. #v = #v0[#se]; ...}\endmodality (post)) \varcond(\hasElementarySort(#v0, G)) - \replacewith({#v := G::select(heap, #v0, arr(#se))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v := select<[G]>(heap, #v0, arr(#se))}\modality{#allmodal}{.. ...}\endmodality (post)) \heuristics(simplify_prog, simplify_prog_subset) }; } @@ -3246,12 +3246,12 @@ \hasSort(#a, G), \not \isThisReference(#v)) "Normal Execution (#v != null)" [main]: - \replacewith({#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) \add( ==> (#v = null)); (permissions:on) { "Read Permission to #v.#a": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \add( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) }; "Null Reference (#v = null)": \replacewith(\modality{#allmodal}{..throw new java.lang.NullPointerException();...}\endmodality (post)) @@ -3268,12 +3268,12 @@ \hasSort(#a, G), \isThisReference(#v)) "Normal Execution" [main]: - \replacewith({#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #v.#a": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \add( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) } \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3290,12 +3290,12 @@ \not \isThisReference(#v), \not \final(#a)) "Normal Execution (#v != null)" [main]: - \replacewith({#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) \add( ==> (#v = null)); (permissions:on) { "Read Permission to #v.#a": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \add( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) }; "Null Reference (#v = null)": \replacewith(\modality{#allmodal}{..throw new java.lang.NullPointerException();...}\endmodality (post)) @@ -3313,12 +3313,12 @@ \not \isThisReference(#v), \final(#a)) "Normal Execution (#v != null)" [main]: - \replacewith({#v0 := G::final(#v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := final<[G]>(#v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) \add( ==> (#v = null)); (permissions:on) { "Read Permission to #v.#a": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \add( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) }; "Null Reference (#v = null)": \replacewith(\modality{#allmodal}{..throw new java.lang.NullPointerException();...}\endmodality (post)) @@ -3337,12 +3337,12 @@ \isThisReference(#v), \not \final(#a)) "Normal Execution" [main]: - \replacewith({#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #v.#a": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \add( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) } \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3357,12 +3357,12 @@ \isThisReference(#v), \final(#a)) "Normal Execution" [main]: - \replacewith({#v0 := G::final(#v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := final<[G]>(#v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #v.#a": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \add( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) } \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3404,12 +3404,12 @@ \hasSort(#a, G), \not \isThisReference(#v)) "Normal Execution (#v != null)" [main]: - \replacewith( ==> {#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith( ==> {#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) // \add (==>(#v=null)) ; (permissions:on) { "Read Permission to #v.#a": - \replacewith( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \replacewith( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) }; "Null Reference (#v = null)": \replacewith( ==> false) @@ -3425,11 +3425,11 @@ \hasSort(#a, G), \isThisReference(#v)) "Normal Execution" [main]: - \replacewith( ==> {#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith( ==> {#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #v.#a": - \replacewith( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \replacewith( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) } \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3446,12 +3446,12 @@ \not \isThisReference(#v), \not \final(#a)) "Normal Execution (#v != null)" [main]: - \replacewith( ==> {#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith( ==> {#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) // \add (==>(#v=null)) ; (permissions:on) { "Read Permission to #v.#a": - \replacewith( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \replacewith( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) }; "Null Reference (#v = null)": \replacewith( ==> false) @@ -3468,12 +3468,12 @@ \not \isThisReference(#v), \final(#a)) "Normal Execution (#v != null)" [main]: - \replacewith( ==> {#v0 := G::final(#v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith( ==> {#v0 := final<[G]>(#v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) // \add (==>(#v=null)) ; (permissions:on) { "Read Permission to #v.#a": - \replacewith( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \replacewith( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) }; "Null Reference (#v = null)": \replacewith( ==> false) @@ -3491,11 +3491,11 @@ \isThisReference(#v), \not \final(#a)) "Normal Execution" [main]: - \replacewith( ==> {#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith( ==> {#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #v.#a": - \replacewith( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \replacewith( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) } \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3509,11 +3509,11 @@ \isThisReference(#v), \final(#a)) "Normal Execution" [main]: - \replacewith( ==> {#v0 := G::final(#v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith( ==> {#v0 := final<[G]>(#v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #v.#a": - \replacewith( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \replacewith( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) } \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3544,7 +3544,7 @@ \not \isModelField(#a), \hasSort(#a, G), \not \isThisReference(#v)) - \replacewith({#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3556,7 +3556,7 @@ \not \isModelField(#a), \hasSort(#a, G), \isThisReference(#v)) - \replacewith({#v0 := G::select(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := select<[G]>(heap, #v, #memberPVToField(#a))}\modality{#allmodal}{.. ...}\endmodality (post)) \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3580,7 +3580,7 @@ (permissions:on) { "Write Permission to #v.#a": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (write)."; ...}\endmodality (post)) - \add( ==> writePermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \add( ==> writePermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) }; "Null Reference (#v = null)": \replacewith(\modality{#allmodal}{..throw new java.lang.NullPointerException();...}\endmodality (post)) @@ -3599,7 +3599,7 @@ (permissions:on) { "Write Permission to #v.#a": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (write)."; ...}\endmodality (post)) - \add( ==> writePermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \add( ==> writePermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) } \heuristics(simplify_prog, simplify_prog_subset) \displayname "assignmentThis" @@ -3618,7 +3618,7 @@ ; (permissions:on) { "Write Permission to #v.#a": - \replacewith( ==> writePermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \replacewith( ==> writePermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) }; "Null Reference (#v = null)": \replacewith( ==> false) @@ -3635,7 +3635,7 @@ ; (permissions:on) { "Write Permission to #v.#a": - \replacewith( ==> writePermission(Permission::select(permissions, #v, #memberPVToField(#a)))) + \replacewith( ==> writePermission(select<[Permission]>(permissions, #v, #memberPVToField(#a)))) } \heuristics(simplify_prog, simplify_prog_subset) \displayname "assignmentThis" @@ -3787,7 +3787,7 @@ (permissions:on) { "Write Permission to #sv": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (static write)."; ...}\endmodality (post)) - \add( ==> writePermission(Permission::select(permissions, null, #memberPVToField(#sv)))) + \add( ==> writePermission(select<[Permission]>(permissions, null, #memberPVToField(#sv)))) } \heuristics(simplify_prog, simplify_prog_subset) \displayname "assignment" @@ -3801,7 +3801,7 @@ (permissions:on) { "Write Permission to #v.#sv": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (static write)."; ...}\endmodality (post)) - \add( ==> writePermission(Permission::select(permissions, #v, #memberPVToField(#sv)))) + \add( ==> writePermission(select<[Permission]>(permissions, #v, #memberPVToField(#sv)))) } \heuristics(simplify_prog, simplify_prog_subset) \displayname "active_attribute_access" @@ -3813,12 +3813,12 @@ \find(\modality{#allmodal}{.. #v0 = @(#sv); ...}\endmodality (post)) \sameUpdateLevel \varcond(\hasSort(#sv, G)) - \replacewith({#v0 := G::select(heap, null, #memberPVToField(#sv))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := select<[G]>(heap, null, #memberPVToField(#sv))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #sv": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (static read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, null, #memberPVToField(#sv)))) + \add( ==> readPermission(select<[Permission]>(permissions, null, #memberPVToField(#sv)))) } \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3829,12 +3829,12 @@ \find(\modality{#allmodal}{.. #v0 = @(#sv); ...}\endmodality (post)) \sameUpdateLevel \varcond(\hasSort(#sv, G), \not\final(#sv)) - \replacewith({#v0 := G::select(heap, null, #memberPVToField(#sv))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := select<[G]>(heap, null, #memberPVToField(#sv))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #sv": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (static read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, null, #memberPVToField(#sv)))) + \add( ==> readPermission(select<[Permission]>(permissions, null, #memberPVToField(#sv)))) } \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3843,12 +3843,12 @@ \find(\modality{#allmodal}{.. #v0 = @(#sv); ...}\endmodality (post)) \sameUpdateLevel \varcond(\hasSort(#sv, G), \final(#sv)) - \replacewith({#v0 := G::final(null, #memberPVToField(#sv))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#v0 := final<[G]>(null, #memberPVToField(#sv))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #sv": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (static read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, null, #memberPVToField(#sv)))) + \add( ==> readPermission(select<[Permission]>(permissions, null, #memberPVToField(#sv)))) } \heuristics(simplify_prog, simplify_prog_subset) }; @@ -3859,12 +3859,12 @@ assignment_read_static_attribute_with_variable_prefix { \find(\modality{#allmodal}{.. #loc = @(#v.#sv); ...}\endmodality (post)) \varcond(\hasSort(#sv, G)) - \replacewith({#loc := G::select(heap, #v, #memberPVToField(#sv))}\modality{#allmodal}{.. ...}\endmodality (post)) + \replacewith({#loc := select<[G]>(heap, #v, #memberPVToField(#sv))}\modality{#allmodal}{.. ...}\endmodality (post)) ; (permissions:on) { "Read Permission to #v.#sv": \replacewith(\modality{#allmodal}{.. assert false : "Access permission check-point (static read)."; ...}\endmodality (post)) - \add( ==> readPermission(Permission::select(permissions, #v, #memberPVToField(#sv)))) + \add( ==> readPermission(select<[Permission]>(permissions, #v, #memberPVToField(#sv)))) } \heuristics(simplify_prog) \displayname "assignment" @@ -4053,8 +4053,8 @@ \rules(programRules:Java, initialisation:enableStaticInitialisation) { class_being_initialized_is_prepared { - \assumes(boolean::select(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(boolean::select(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, alphaObj::)) \sameUpdateLevel \replacewith(TRUE) \heuristics(confluence_restricted, simplify) @@ -4062,8 +4062,8 @@ }; initialized_class_is_prepared { - \assumes(boolean::select(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(boolean::select(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, alphaObj::)) \sameUpdateLevel \replacewith(TRUE) \heuristics(confluence_restricted, simplify) @@ -4071,8 +4071,8 @@ }; initialized_class_is_not_erroneous { - \assumes(boolean::select(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(boolean::select(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, alphaObj::)) \sameUpdateLevel \replacewith(FALSE) \heuristics(confluence_restricted, simplify) @@ -4080,8 +4080,8 @@ }; class_initialized_excludes_class_init_in_progress { - \assumes(boolean::select(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(boolean::select(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, alphaObj::)) \sameUpdateLevel \replacewith(FALSE) \heuristics(confluence_restricted, simplify) @@ -4089,8 +4089,8 @@ }; class_erroneous_excludes_class_in_init { - \assumes(boolean::select(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(boolean::select(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, alphaObj::)) \sameUpdateLevel \replacewith(FALSE) \heuristics(confluence_restricted, simplify) @@ -4098,8 +4098,8 @@ }; erroneous_class_has_no_initialized_sub_class { - \assumes(boolean::select(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(boolean::select(heap, null, betaObj::)) + \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, betaObj::)) \sameUpdateLevel \varcond(\sub(betaObj, alphaObj)) \replacewith(FALSE) @@ -4108,8 +4108,8 @@ }; superclasses_of_initialized_classes_are_initialized { - \assumes(boolean::select(heap, null, betaObj::) = TRUE, wellFormed(heap) ==>) - \find(boolean::select(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, betaObj::) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, alphaObj::)) \sameUpdateLevel \varcond(\isReference [non_null](betaObj), \strict \sub(betaObj, alphaObj)) \replacewith(TRUE) @@ -4117,8 +4117,8 @@ }; superclasses_of_initialized_classes_are_prepared { - \assumes(boolean::select(heap, null, betaObj::) = TRUE, wellFormed(heap) ==>) - \find(boolean::select(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, betaObj::) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, alphaObj::)) \sameUpdateLevel \varcond(\sub(betaObj, alphaObj)) \replacewith(TRUE) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key index a1f63101ffb..b1a0ec2e9e2 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key @@ -172,7 +172,7 @@ \find(elementOf(o, f, freshLocs(h))) - \replacewith(o != null & !boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(o != null & !select<[boolean]>(h, o, java.lang.Object::) = TRUE) \heuristics(concrete) }; @@ -795,7 +795,7 @@ \schemaVar \term Heap h; \find(intersect(allFields(o), freshLocs(h)) = empty) - \replacewith(o = null | boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::) = TRUE) \heuristics(simplify) }; @@ -850,7 +850,7 @@ \replacewith(\forall ov; \forall fv; (elementOf(ov, fv, s) -> ov = null - | boolean::select(h, ov, java.lang.Object::) = TRUE)) + | select<[boolean]>(h, ov, java.lang.Object::) = TRUE)) \heuristics(classAxiom) }; @@ -1131,7 +1131,7 @@ \find(createdInHeap(singleton(o, f), h)) - \replacewith(o = null | boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::) = TRUE) \heuristics(simplify_enlarging) }; @@ -1165,7 +1165,7 @@ \find(createdInHeap(allFields(o), h)) - \replacewith(o = null | boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::) = TRUE) \heuristics(simplify_enlarging) }; @@ -1177,7 +1177,7 @@ \find(createdInHeap(arrayRange(o, lower, upper), h)) - \replacewith(o = null | boolean::select(h, o, java.lang.Object::) = TRUE | upper < lower) + \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::) = TRUE | upper < lower) \heuristics(simplify_enlarging) }; @@ -1187,7 +1187,7 @@ \schemaVar \term Field f; \schemaVar \term Heap h; - \find( ==> createdInHeap(LocSet::select(h, o, f), h)) + \find( ==> createdInHeap(select<[LocSet]>(h, o, f), h)) \replacewith( ==> wellFormed(h)) @@ -1221,7 +1221,7 @@ \find(createdInHeap(EQ, h)) \sameUpdateLevel - \replacewith(o = null | boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::) = TRUE) \heuristics(simplify_enlarging) }; @@ -1263,7 +1263,7 @@ \find(createdInHeap(EQ, h)) \sameUpdateLevel - \replacewith(o = null | boolean::select(h, o, java.lang.Object::) = TRUE) + \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::) = TRUE) \heuristics(simplify_enlarging) }; @@ -1278,7 +1278,7 @@ \find(createdInHeap(EQ, h)) \sameUpdateLevel - \replacewith(o = null | boolean::select(h, o, java.lang.Object::) = TRUE | upper < lower) + \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::) = TRUE | upper < lower) \heuristics(simplify_enlarging) }; @@ -1289,7 +1289,7 @@ \schemaVar \term Heap h; \schemaVar \term LocSet EQ; - \assumes(LocSet::select(h, o, f) = EQ ==>) + \assumes(select<[LocSet]>(h, o, f) = EQ ==>) \find( ==> createdInHeap(EQ, h)) \replacewith( ==> wellFormed(h)) @@ -1320,9 +1320,9 @@ \schemaVar \term Object o; \schemaVar \term Field f; - \assumes( ==> deltaObject::select(h, o, f) = null) - \find( ==> boolean::select(h, - deltaObject::select(h, o, f), + \assumes( ==> deltaselect<[Object]>(h, o, f) = null) + \find( ==> select<[boolean]>(h, + deltaselect<[Object]>(h, o, f), java.lang.Object::) = TRUE) \replacewith( ==> wellFormed(h)) @@ -1336,8 +1336,8 @@ \schemaVar \term Field f; \schemaVar \term Object EQ; - \assumes(deltaObject::select(h, o, f) = EQ ==> EQ = null) - \find( ==> boolean::select(h, + \assumes(deltaselect<[Object]>(h, o, f) = EQ ==> EQ = null) + \find( ==> select<[boolean]>(h, EQ, java.lang.Object::) = TRUE) @@ -1351,12 +1351,12 @@ \schemaVar \term Object o; \schemaVar \term Field f; - \assumes( ==> deltaObject::final(o, f) = null) - \find( ==> boolean::select(h, - deltaObject::final(o, f), + \assumes( ==> final<[deltaObj]>(o, f) = null) + \find( ==> select<[boolean]>(h, + final<[deltaObj]>(o, f), java.lang.Object::) = TRUE ) - \replacewith( ==> boolean::select(h, o, java.lang.Object::) = TRUE | o = null ) + \replacewith( ==> select<[boolean]>(h, o, java.lang.Object::) = TRUE | o = null ) \heuristics(simplify_enlarging) }; @@ -1367,12 +1367,12 @@ \schemaVar \term Field f; \schemaVar \term Object EQ; - \assumes(deltaObject::final(o, f) = EQ ==> EQ = null) - \find( ==> boolean::select(h, + \assumes(final<[deltaObj]>(o, f) = EQ ==> EQ = null) + \find( ==> select<[boolean]>(h, EQ, java.lang.Object::) = TRUE) - \add( ==> boolean::select(h, o, java.lang.Object::) = TRUE | o = null ) + \add( ==> select<[boolean]>(h, o, java.lang.Object::) = TRUE | o = null ) \heuristics(concrete) }; @@ -1733,7 +1733,7 @@ \varcond(\notFreeIn(j, h), \notFreeIn(j, array), \notFreeIn(j, o, f)) \replacewith(infiniteUnion{j;}(\if(0 <= j & j < length(array)) - \then(singleton(Object::select(h, array, arr(j)), f)) + \then(singleton(select<[Object]>(h, array, arr(j)), f)) \else(empty))) \heuristics(simplify) }; @@ -1749,7 +1749,7 @@ \varcond(\notFreeIn(j, h), \notFreeIn(j, array)) \replacewith(infiniteUnion{j;}(\if(0 <= j & j < length(array)) - \then(allFields(Object::select(h, array, arr(j)))) + \then(allFields(select<[Object]>(h, array, arr(j)))) \else(empty))) \heuristics(simplify) }; @@ -1765,7 +1765,7 @@ \varcond(\notFreeIn(j, h), \notFreeIn(j, array), \notFreeIn(j, o, f)) \replacewith(infiniteUnion{j;}(\if(0 <= j & j < length(array)) - \then(LocSet::select(h, Object::select(h, array, arr(j)), f)) + \then(select<[LocSet]>(h, select<[Object]>(h, array, arr(j)), f)) \else(empty))) \heuristics(simplify) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/map.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/map.key index baa1cb64421..0aa0b009b70 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/map.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/map.key @@ -66,8 +66,8 @@ Abstract datatype of (untyped) partial maps. inDomainOfMapForeach { \find(inDomain(mapForeach{v;}(b, y), x)) - \replacewith({\subst v; alpha::cast(x)}b = TRUE - & alpha::instance(x) = TRUE) + \replacewith({\subst v; cast<[alpha]>(x)}b = TRUE + & instance<[alpha]>(x) = TRUE) \heuristics(simplify) }; @@ -75,7 +75,7 @@ Abstract datatype of (untyped) partial maps. \find(mapGet(mapForeach{v;}(b, y), x)) \sameUpdateLevel \replacewith(\if(inDomain(mapForeach{v;}(b, y), x)) - \then({\subst v; alpha::cast(x)}y) + \then({\subst v; cast<[alpha]>(x)}y) \else(mapUndef)) \heuristics(simplify_enlarging) }; @@ -93,7 +93,7 @@ Abstract datatype of (untyped) partial maps. \find(mapSingleton(xa, y)) \varcond(\notFreeIn(vy, xa, y)) \replacewith(mapForeach{vy;}( - \if(vy = any::cast(xa)) \then(TRUE) \else(FALSE), y) + \if(vy = cast<[any]>(xa)) \then(TRUE) \else(FALSE), y) ) }; @@ -114,7 +114,7 @@ Abstract datatype of (untyped) partial maps. \varcond(\notFreeIn(ix, s)) \replacewith(mapForeach{ix;}( \if(0 <= ix & ix < seqLen(s)) \then(TRUE) \else(FALSE), - any::seqGet(s, ix) + seqGet<[any]>(s, ix) )) }; @@ -150,7 +150,7 @@ Abstract datatype of (untyped) partial maps. \find(inDomainImpliesCreated(m)) \varcond(\notFreeIn(o, m)) \replacewith(\forall o; (inDomain(m, o) -> - boolean::select(heap, o, java.lang.Object::) = TRUE)) + select<[boolean]>(heap, o, java.lang.Object::) = TRUE)) \heuristics(simplify_enlarging) }; @@ -220,8 +220,8 @@ Abstract datatype of (untyped) partial maps. inDomainOfSeq2Map { \schemaVar \term Seq s; \find(inDomain(seq2map(s), x)) - \replacewith(int::instance(x) = TRUE & - 0 <= int::cast(x) & int::cast(x) < seqLen(s)) + \replacewith(instance<[int]>(x) = TRUE & + 0 <= cast<[int]>(x) & cast<[int]>(x) < seqLen(s)) \heuristics(simplify) }; @@ -284,8 +284,8 @@ Abstract datatype of (untyped) partial maps. \schemaVar \term Seq s; \find(mapGet(seq2map(s), x)) \sameUpdateLevel - \replacewith(\if(int::instance(x) = TRUE & 0 <= int::cast(x) & int::cast(x) < seqLen(s)) - \then(any::seqGet(s, int::cast(x))) \else(mapUndef)) + \replacewith(\if(instance<[int]>(x) = TRUE & 0 <= cast<[int]>(x) & cast<[int]>(x) < seqLen(s)) + \then(seqGet<[any]>(s, cast<[int]>(x))) \else(mapUndef)) \heuristics(simplify_enlarging) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/mapSize.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/mapSize.key index dd54b430705..3ce1a3721f0 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/mapSize.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/mapSize.key @@ -34,7 +34,7 @@ \varcond(\notFreeIn(vx, m), \notFreeIn(s, m)) \replacewith(\exists s; (\forall vx; - (inDomain(m, vx) <-> (\exists ix; (0 <= ix & ix < seqLen(s) & any::seqGet(s, ix) = vx))) + (inDomain(m, vx) <-> (\exists ix; (0 <= ix & ix < seqLen(s) & seqGet<[any]>(s, ix) = vx))) )) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/permissionRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/permissionRules.key index 80ea8fb2997..3fe8177f87b 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/permissionRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/permissionRules.key @@ -19,7 +19,7 @@ }; permissionDefaultValue { - \find(Permission::defaultValue) + \find(defaultValue<[Permission]>) \replacewith(initFullPermission) \heuristics(simplify) }; @@ -507,8 +507,8 @@ \schemaVar \term Object o; \schemaVar \term Heap h, p; - \assumes(wellFormed(h), wellFormed(p), permissionsFor(p, h), boolean::select(h, o, java.lang.Object::) = TRUE ==>) - \find(boolean::select(p, o, java.lang.Object::)) + \assumes(wellFormed(h), wellFormed(p), permissionsFor(p, h), select<[boolean]>(h, o, java.lang.Object::) = TRUE ==>) + \find(select<[boolean]>(p, o, java.lang.Object::)) \sameUpdateLevel \replacewith(TRUE) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/precRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/precRules.key index a26bd05829f..32dc7a82011 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/precRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/precRules.key @@ -66,9 +66,9 @@ \replacewith( seqLen(s1) = seqLen(s2) & \exists iv; (0 <= iv & iv < seqLen(s1) & - prec(any::seqGet(s1, iv), any::seqGet(s2, iv)) & + prec(seqGet<[any]>(s1, iv), seqGet<[any]>(s2, iv)) & \forall jv; (0 <= jv & jv < iv -> - any::seqGet(s1, jv) = any::seqGet(s2, jv))) + seqGet<[any]>(s1, jv) = seqGet<[any]>(s2, jv))) | seqLen(s1) < seqLen(s2) ) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/reachRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/reachRules.key index 461b77f44df..dc5e31ef940 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/reachRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/reachRules.key @@ -22,7 +22,7 @@ \notFreeIn(fv, o), \notFreeIn(fv, o2)) - \replacewith(o != null & o2 != null & \exists fv; (elementOf(o, fv, s) & deltaObject::select(h, o, fv) = o2)) + \replacewith(o != null & o2 != null & \exists fv; (elementOf(o, fv, s) & select<[deltaObject]>(h, o, fv) = o2)) \heuristics(simplify) }; @@ -176,8 +176,8 @@ \schemaVar \term Field f; \assumes(reach(h, allObjects(f), o, o2, n), - alpha::select(h, o2, f) = null, - alpha::select(h, o3, f) = null ==>) + select<[alpha]>(h, o2, f) = null, + select<[alpha]>(h, o3, f) = null ==>) \find(reach(h, allObjects(f), o, o3, n2) ==>) \varcond(\different(n, n2)) @@ -194,7 +194,7 @@ \schemaVar \term Field f; \assumes(reach(h, allObjects(f), o, o2, n), - alpha::select(h, o2, f) = null ==>) + select<[alpha]>(h, o2, f) = null ==>) \find(reach(h, allObjects(f), o, o3, n2) ==>) \varcond(\different(o, o2), \different(n, n2)) @@ -397,8 +397,8 @@ \assumes(wellFormed(h) ==> o = null) \find(reach(h, s, o, o2, n) ==>) - \add(!boolean::select(h, o, java.lang.Object::) = TRUE - | boolean::select(h, o2, java.lang.Object::) = TRUE ==>) + \add(!select<[boolean]>(h, o, java.lang.Object::) = TRUE + | select<[boolean]>(h, o2, java.lang.Object::) = TRUE ==>) \heuristics(inReachableStateImplication) }; @@ -412,7 +412,7 @@ \find(reach(anon(h, empty, h2), s, o, o2, n)) \replacewith(reach(h, s, o, o2, n)); - \add( ==> wellFormed(h) & boolean::select(h, o, java.lang.Object::) = TRUE) + \add( ==> wellFormed(h) & select<[boolean]>(h, o, java.lang.Object::) = TRUE) \heuristics(simplify) }; @@ -428,7 +428,7 @@ \find(reach(EQ, s, o, o2, n)) \replacewith(reach(h, s, o, o2, n)); - \add( ==> wellFormed(h) & boolean::select(h, o, java.lang.Object::) = TRUE) + \add( ==> wellFormed(h) & select<[boolean]>(h, o, java.lang.Object::) = TRUE) \heuristics(simplify) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seq.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seq.key index e9fa73b1381..35d08d4a191 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seq.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seq.key @@ -19,7 +19,7 @@ \functions { // getters - alpha alpha::seqGet(Seq, int); + alpha seqGet<[alpha]>(Seq, int); int seqLen(Seq); int seqIndexOf(Seq, any); any seqGetOutside; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqCoreRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqCoreRules.key index 9dc47adbf67..470178845ae 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqCoreRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqCoreRules.key @@ -44,7 +44,7 @@ \replacewith(seqLen(left) = seqLen(right) & \forall iv; (0 <= iv & iv < seqLen(left) - -> any::seqGet(left, iv) = any::seqGet(right, iv))) + -> seqGet<[any]>(left, iv) = seqGet<[any]>(right, iv))) \heuristics(defOpsSeqEquality) }; @@ -57,7 +57,7 @@ \schemaVar \term any t; \schemaVar \variables int uSub, uSub1, uSub2; - \find(alpha::seqGet(seqDef{uSub;}(from, to, t), idx)) + \find(seqGet<[alpha]>(seqDef{uSub;}(from, to, t), idx)) \varcond(\notFreeIn(uSub, from), \notFreeIn(uSub, to)) \replacewith(\if(0 <= idx & idx < (to - from)) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqEq.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqEq.key index 08e9e778709..edb1091744a 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqEq.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqEq.key @@ -21,7 +21,7 @@ \schemaVar \term any x; \find(s = seqSingleton(x)) - \replacewith(seqLen(s) = 1 & any::seqGet(s, 0) = x) + \replacewith(seqLen(s) = 1 & seqGet<[any]>(s, 0) = x) \heuristics(simplify) }; @@ -31,7 +31,7 @@ \assumes(seqSingleton(x) = s2 ==>) \find(s = s2) - \replacewith(seqLen(s) = 1 & any::seqGet(s, 0) = x) + \replacewith(seqLen(s) = 1 & seqGet<[any]>(s, 0) = x) \heuristics(simplify) }; @@ -152,7 +152,7 @@ \replacewith( seqLen(s) = seqLen(seqReverse(s2)) & \forall iv; (0 <= iv & iv < seqLen(s) - -> any::seqGet(s, iv) = any::seqGet(seqReverse(s2), iv) + -> seqGet<[any]>(s, iv) = seqGet<[any]>(seqReverse(s2), iv) ) ) \heuristics(simplify_enlarging) @@ -169,7 +169,7 @@ \replacewith( seqLen(s) = seqLen(seqReverse(s2)) & \forall iv; (0 <= iv & iv < seqLen(s) - -> any::seqGet(s, iv) = any::seqGet(seqReverse(s2), iv) + -> seqGet<[any]>(s, iv) = seqGet<[any]>(seqReverse(s2), iv) ) ) \heuristics(simplify_enlarging, no_self_application) @@ -191,7 +191,7 @@ \replacewith( seqLen(s) = seqLen(seqDef{i;}(l, u, a)) & \forall iv; (0 <= iv & iv < seqLen(s) - -> any::seqGet(s, iv) = any::seqGet(seqDef{i;}(l, u, a), iv) + -> seqGet<[any]>(s, iv) = seqGet<[any]>(seqDef{i;}(l, u, a), iv) ) ) \heuristics(simplify_enlarging) @@ -215,7 +215,7 @@ \replacewith( seqLen(s) = seqLen(seqDef{i;}(l, u, a)) & \forall iv; (0 <= iv & iv < seqLen(s) - -> any::seqGet(s, iv) = any::seqGet(seqDef{i;}(l, u, a), iv) + -> seqGet<[any]>(s, iv) = seqGet<[any]>(seqDef{i;}(l, u, a), iv) ) ) \heuristics(simplify_enlarging) @@ -236,7 +236,7 @@ | (seqLen(seq) = to - from & \forall iv; ( 0 <= iv & iv < seqLen(seq) - -> any::seqGet(seq, iv) = any::seqGet(seq, iv + from))) + -> seqGet<[any]>(seq, iv) = seqGet<[any]>(seq, iv + from))) ) \heuristics(simplify) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqPerm.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqPerm.key index cdae1369ebb..f061cfbe3da 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqPerm.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqPerm.key @@ -38,7 +38,7 @@ \replacewith( (\forall iv; (0 <= iv & iv < seqLen(s1) -> - \exists jv; (0 <= jv & jv < seqLen(s1) & any::seqGet(s1, jv) = iv)))) + \exists jv; (0 <= jv & jv < seqLen(s1) & seqGet<[any]>(s1, jv) = iv)))) }; seqNPermDefLeft { @@ -50,7 +50,7 @@ \add( (\forall iv; (0 <= iv & iv < seqLen(s1) -> - \exists jv; (0 <= jv & jv < seqLen(s1) & any::seqGet(s1, jv) = iv))) ==>) + \exists jv; (0 <= jv & jv < seqLen(s1) & seqGet<[any]>(s1, jv) = iv))) ==>) }; seqPermDefLeft { @@ -68,7 +68,7 @@ (\exists s; (seqLen(s) = seqLen(s1) & seqNPerm(s) & (\forall iv; (0 <= iv & iv < seqLen(s) -> - any::seqGet(s1, iv) = any::seqGet(s2, int::seqGet(s, iv)))))) + seqGet<[any]>(s1, iv) = seqGet<[any]>(s2, seqGet<[int]>(s, iv)))))) ==>) }; @@ -87,7 +87,7 @@ (\exists s; (seqLen(s) = seqLen(s1) & seqNPerm(s) & (\forall iv; (0 <= iv & iv < seqLen(s) -> - any::seqGet(s1, iv) = any::seqGet(s2, int::seqGet(s, iv)))))) + seqGet<[any]>(s1, iv) = seqGet<[any]>(s2, seqGet<[int]>(s, iv)))))) ) }; @@ -103,12 +103,12 @@ \notFreeIn(uSub, jv)) \replacewith(seqDef{uSub;}(0, seqLen(s), \if(!(0 <= iv & 0 <= jv & iv < seqLen(s) & jv < seqLen(s))) - \then(any::seqGet(s, uSub)) + \then(seqGet<[any]>(s, uSub)) \else(\if(uSub = iv) - \then(any::seqGet(s, jv)) + \then(seqGet<[any]>(s, jv)) \else(\if(uSub = jv) - \then(any::seqGet(s, iv)) - \else(any::seqGet(s, uSub)))))) + \then(seqGet<[any]>(s, iv)) + \else(seqGet<[any]>(s, uSub)))))) }; @@ -126,8 +126,8 @@ \then(s) \else(seqDef{uSub;}(0, seqLen(s) - 1, \if(uSub < iv) - \then(any::seqGet(s, uSub)) - \else(any::seqGet(s, uSub + 1))))) + \then(seqGet<[any]>(s, uSub)) + \else(seqGet<[any]>(s, uSub + 1))))) }; // -------------------------------------------------------------------- @@ -166,8 +166,8 @@ \schemaVar \term Seq s1; \schemaVar \term int i3; - \find(any::seqGet(seqNPermInv(s1), i3)) - \replacewith(int::seqGet(seqNPermInv(s1), i3)); + \find(seqGet<[any]>(seqNPermInv(s1), i3)) + \replacewith(seqGet<[int]>(seqNPermInv(s1), i3)); \add( ==> 0 <= i3 & i3 < seqLen(s1)) \heuristics(simplify) }; @@ -177,10 +177,10 @@ \schemaVar \term int i3; \schemaVar \skolemTerm int jsk; - \find(int::seqGet(seqNPermInv(s1), i3)) + \find(seqGet<[int]>(seqNPermInv(s1), i3)) \varcond(\newDependingOn(jsk, i3)) \replacewith(jsk) - \add(int::seqGet(s1, jsk) = i3 & 0 <= jsk & jsk < seqLen(s1) ==>); + \add(seqGet<[int]>(s1, jsk) = i3 & 0 <= jsk & jsk < seqLen(s1) ==>); \add( ==> 0 <= i3 & i3 < seqLen(s1) & seqNPerm(s1)) \heuristics(simplify) @@ -204,14 +204,14 @@ // Differs from seqOutsideValue in seqStandard-new-verify.key // - \find(alpha::seqGet(seqSwap(s1, iv, jv), idx)) + \find(seqGet<[alpha]>(seqSwap(s1, iv, jv), idx)) \replacewith(\if(!(0 <= iv & 0 <= jv & iv < seqLen(s1) & jv < seqLen(s1))) - \then(alpha::seqGet(s1, idx)) + \then(seqGet<[alpha]>(s1, idx)) \else(\if(idx = iv) - \then(alpha::seqGet(s1, jv)) + \then(seqGet<[alpha]>(s1, jv)) \else(\if(idx = jv) - \then(alpha::seqGet(s1, iv)) - \else(alpha::seqGet(s1, idx))))) + \then(seqGet<[alpha]>(s1, iv)) + \else(seqGet<[alpha]>(s1, idx))))) \heuristics(simplify_enlarging) }; @@ -236,13 +236,13 @@ \schemaVar \term Seq s1; \schemaVar \term int i3, i2; - \find(alpha::seqGet(seqRemove(s1, i2), i3)) + \find(seqGet<[alpha]>(seqRemove(s1, i2), i3)) \replacewith(\if(i2 < 0 | seqLen(s1) <= i2) - \then(alpha::seqGet(s1, i3)) + \then(seqGet<[alpha]>(s1, i3)) \else(\if(i3 < i2) - \then(alpha::seqGet(s1, i3)) + \then(seqGet<[alpha]>(s1, i3)) \else(\if(i2 <= i3 & i3 < seqLen(s1) - 1) - \then(alpha::seqGet(s1, i3 + 1)) + \then(seqGet<[alpha]>(s1, i3 + 1)) \else((alpha)seqGetOutside)))) \heuristics(simplify_enlarging) @@ -252,13 +252,13 @@ \schemaVar \term Seq s1; \schemaVar \term int i3, i2; - \find(int::seqGet(seqRemove(s1, i2), i3)) + \find(seqGet<[int]>(seqRemove(s1, i2), i3)) \replacewith(\if(i2 < 0 | seqLen(s1) <= i2) - \then(int::seqGet(s1, i3)) + \then(seqGet<[int]>(s1, i3)) \else(\if(i3 < i2) - \then(int::seqGet(s1, i3)) + \then(seqGet<[int]>(s1, i3)) \else(\if(i2 <= i3 & i3 < seqLen(s1) - 1) - \then(int::seqGet(s1, i3 + 1)) + \then(seqGet<[int]>(s1, i3 + 1)) \else((int)seqGetOutside)))) \heuristics(simplify_enlarging) @@ -291,9 +291,9 @@ \schemaVar \term Seq s1; \schemaVar \term int i3, i2; \assumes(seqLen(s1) >= 1 ==>) - \find(alpha::seqGet(seqRemove(s1, seqLen(s1) - 1), i3)) + \find(seqGet<[alpha]>(seqRemove(s1, seqLen(s1) - 1), i3)) \replacewith(\if(i3 < seqLen(s1) - 1) - \then(alpha::seqGet(s1, i3)) + \then(seqGet<[alpha]>(s1, i3)) \else((alpha)seqGetOutside)) \heuristics(simplify_enlarging) @@ -306,9 +306,9 @@ \schemaVar \term Seq s1; \schemaVar \term int i3, i2; \assumes(seqLen(s1) >= 1 ==>) - \find(alpha::seqGet(seqRemove(s1, 0), i3)) + \find(seqGet<[alpha]>(seqRemove(s1, 0), i3)) \replacewith(\if(0 <= i3 & i3 < seqLen(s1) - 1) - \then(alpha::seqGet(s1, i3 + 1)) + \then(seqGet<[alpha]>(s1, i3 + 1)) \else((alpha)seqGetOutside)) \heuristics(simplify_enlarging) @@ -332,7 +332,7 @@ // \find(seqNPerm(s) ==> ) // \varcond( \notFreeIn (iv,s) ) // \add(\forall iv;((0 <= iv & iv < seqLen(s)) - // -> (0 <= int::seqGet(s,iv) & int::seqGet(s,iv) < seqLen(s))) ==>) + // -> (0 <= seqGet<[int]>(s,iv) & seqGet<[int]>(s,iv) < seqLen(s))) ==>) // }; // Improved version by PHS, correctness proof from Oct.19.2016 @@ -343,8 +343,8 @@ \find(seqNPerm(s) ==>) \varcond(\notFreeIn(iv, s)) \add(\forall iv; ((0 <= iv & iv < seqLen(s)) - -> (0 <= int::seqGet(s, iv) & int::seqGet(s, iv) < seqLen(s) & - int::instance(any::seqGet(s, iv)) = TRUE)) ==>) + -> (0 <= seqGet<[int]>(s, iv) & seqGet<[int]>(s, iv) < seqLen(s) & + instance<[int]>(seqGet<[any]>(s, iv)) = TRUE)) ==>) }; @@ -362,7 +362,7 @@ \varcond(\notFreeIn(iv, s), \notFreeIn(jv, s)) \add(\forall iv; (\forall jv; ( (0 <= iv & iv < seqLen(s) & 0 <= jv & jv < seqLen(s) - & int::seqGet(s, iv) = int::seqGet(s, jv)) + & seqGet<[int]>(s, iv) = seqGet<[int]>(s, jv)) -> iv = jv)) ==>) }; @@ -446,7 +446,7 @@ \varcond(\notFreeIn(u, s1), \notFreeIn(u, s2)) \add(seqNPerm(seqDef{u;}(0, seqLen(s1), - int::seqGet(s1, int::seqGet(s2, u)))) ==>) + seqGet<[int]>(s1, seqGet<[int]>(s2, u)))) ==>) }; @@ -454,7 +454,7 @@ \schemaVar \term Seq s; \schemaVar \term int t; - \find(int::seqGet(s, int::seqGet(seqNPermInv(s), t))) + \find(seqGet<[int]>(s, seqGet<[int]>(seqNPermInv(s), t))) \replacewith(t); \add( ==> seqNPerm(s) & 0 <= t & t < seqLen(s)) @@ -531,10 +531,10 @@ \varcond(\notFreeIn(iv, s), \notFreeIn(jv, s)) \add( ==> \forall iv; (\forall jv; ( (0 <= iv & iv < seqLen(s) & 0 <= jv & jv < seqLen(s) - & int::seqGet(s, iv) = int::seqGet(s, jv)) + & seqGet<[int]>(s, iv) = seqGet<[int]>(s, jv)) -> iv = jv)) - & \forall iv; (0 <= iv & iv < seqLen(s) -> 0 <= int::seqGet(s, iv) & int::seqGet(s, iv) < seqLen(s)) - & \forall iv; (0 <= iv & iv < seqLen(s) -> int::instance(any::seqGet(s, iv)) = TRUE)) + & \forall iv; (0 <= iv & iv < seqLen(s) -> 0 <= seqGet<[int]>(s, iv) & seqGet<[int]>(s, iv) < seqLen(s)) + & \forall iv; (0 <= iv & iv < seqLen(s) -> instance<[int]>(seqGet<[any]>(s, iv)) = TRUE)) }; \lemma @@ -651,8 +651,8 @@ \replacewith( (\forall element; - bsum{iv;}(0, s1.length, \if(any::seqGet(s1, iv) = element) \then(1) \else(0)) = - bsum{iv;}(0, s2.length, \if(any::seqGet(s2, iv) = element) \then(1) \else(0)) + bsum{iv;}(0, s1.length, \if(seqGet<[any]>(s1, iv) = element) \then(1) \else(0)) = + bsum{iv;}(0, s2.length, \if(seqGet<[any]>(s2, iv) = element) \then(1) \else(0)) ) ) }; @@ -666,9 +666,9 @@ \schemaVar \variable any x; \assumes(seqPerm(s1, s2) ==>) \varcond(\notFreeIn(iv, phi), \notFreeIn(iv, s1), \notFreeIn(iv, s2)) - \add(\forall iv; (0 <= iv & iv < seqLen(s1) -> {\subst x; any::seqGet(s1, iv)}phi) + \add(\forall iv; (0 <= iv & iv < seqLen(s1) -> {\subst x; seqGet<[any]>(s1, iv)}phi) <-> - \forall iv; (0 <= iv & iv < seqLen(s1) -> {\subst x; any::seqGet(s2, iv)}phi) ==>) + \forall iv; (0 <= iv & iv < seqLen(s1) -> {\subst x; seqGet<[any]>(s2, iv)}phi) ==>) }; \lemma @@ -680,8 +680,8 @@ \schemaVar \variable any x; \assumes(seqPerm(s1, s2) ==>) \varcond(\notFreeIn(iv, phi), \notFreeIn(iv, s1), \notFreeIn(iv, s2)) - \add(\exists iv; (0 <= iv & iv < seqLen(s1) & {\subst x; any::seqGet(s1, iv)}phi) + \add(\exists iv; (0 <= iv & iv < seqLen(s1) & {\subst x; seqGet<[any]>(s1, iv)}phi) <-> - \exists iv; (0 <= iv & iv < seqLen(s1) & {\subst x; any::seqGet(s2, iv)}phi) ==>) + \exists iv; (0 <= iv & iv < seqLen(s1) & {\subst x; seqGet<[any]>(s2, iv)}phi) ==>) }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqPerm2.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqPerm2.key index 03a0b07b8d9..e20560c35b7 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqPerm2.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqPerm2.key @@ -27,13 +27,13 @@ \notFreeIn(y, s, t)) \add(\forall x; \forall y; ( - any::seqGet(s, x) = any::seqGet(t, x) & - any::seqGet(s, y) = any::seqGet(t, y) & 0 <= x & x < seqLen(s) & + seqGet<[any]>(s, x) = seqGet<[any]>(t, x) & + seqGet<[any]>(s, y) = seqGet<[any]>(t, y) & 0 <= x & x < seqLen(s) & 0 <= y & y < seqLen(s) -> \exists r; (seqLen(r) = seqLen(s) & seqNPerm(r) & (\forall iv; (0 <= iv & iv < seqLen(s) -> - any::seqGet(s, iv) = any::seqGet(t, int::seqGet(r, iv)))) & - int::seqGet(r, x) = x & int::seqGet(r, y) = y)) + seqGet<[any]>(s, iv) = seqGet<[any]>(t, seqGet<[int]>(r, iv)))) & + seqGet<[int]>(r, x) = x & seqGet<[int]>(r, y) = y)) ==>) }; @@ -53,23 +53,23 @@ \notFreeIn(idx, s), \notFreeIn(idx, t)) - \add(seqPerm(s, t) & any::seqGet(s, x) = any::seqGet(t, x) & - any::seqGet(s, y) = any::seqGet(t, y) & 0 <= x & x < seqLen(s) & + \add(seqPerm(s, t) & seqGet<[any]>(s, x) = seqGet<[any]>(t, x) & + seqGet<[any]>(s, y) = seqGet<[any]>(t, y) & 0 <= x & x < seqLen(s) & 0 <= y & y < seqLen(s) - -> seqPerm(seqDef{idx;}(0, s.length, \if(idx = y) \then(b) \else(\if(idx = x) \then(a) \else(any::seqGet(s, idx)))) - , seqDef{idx;}(0, s.length, \if(idx = y) \then(b) \else(\if(idx = x) \then(a) \else(any::seqGet(t, idx))))) + -> seqPerm(seqDef{idx;}(0, s.length, \if(idx = y) \then(b) \else(\if(idx = x) \then(a) \else(seqGet<[any]>(s, idx)))) + , seqDef{idx;}(0, s.length, \if(idx = y) \then(b) \else(\if(idx = x) \then(a) \else(seqGet<[any]>(t, idx))))) ==>) }; // seqUpd(seqUpd(s,x,a),y,b) = // seqDef{idx;}(0, s.length, // \if(idx=y)\then(b)\else(\if(idx=x)\then(a) - // \else(int::seqGet(s, idx)))) + // \else(seqGet<[int]>(s, idx)))) // seqUpd(seqUpd(t,x,a),y,b) = // seqDef{idx;}(0, s.length, // \if(idx=y)\then(b)\else(\if(idx=x)\then(a) - // \else(int::seqGet(t, idx)))) + // \else(seqGet<[int]>(t, idx)))) } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqRules.key index 6feb4890641..f7a6d79b2aa 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqRules.key @@ -53,8 +53,8 @@ \notFreeIn(uSub, seq2)) \replacewith(seqDef{uSub;}(0, seqLen(seq1) + seqLen(seq2), \if(uSub < seqLen(seq1)) - \then(any::seqGet(seq1, uSub)) - \else(any::seqGet(seq2, uSub - seqLen(seq1))))) + \then(seqGet<[any]>(seq1, uSub)) + \else(seqGet<[any]>(seq2, uSub - seqLen(seq1))))) }; @@ -76,7 +76,7 @@ \varcond(\notFreeIn(uSub, seq), \notFreeIn(uSub, from), \notFreeIn(uSub, to)) - \replacewith(seqDef{uSub;}(from, to, any::seqGet(seq, uSub))) + \replacewith(seqDef{uSub;}(from, to, seqGet<[any]>(seq, uSub))) }; @@ -87,7 +87,7 @@ \find(seqReverse(seq)) \varcond(\notFreeIn(uSub, seq)) - \replacewith(seqDef{uSub;}(0, seqLen(seq), any::seqGet(seq, seqLen(seq) - uSub - 1))) + \replacewith(seqDef{uSub;}(0, seqLen(seq), seqGet<[any]>(seq, seqLen(seq) - uSub - 1))) }; @@ -100,7 +100,7 @@ \find(seqUpd(seq, idx, value)) \varcond(\notFreeIn(uSub, idx), \notFreeIn(uSub, value), \notFreeIn(uSub, seq)) - \replacewith(seqDef{uSub;}(0, seqLen(seq), \if(uSub=idx) \then(value) \else(any::seqGet(seq,uSub)))) + \replacewith(seqDef{uSub;}(0, seqLen(seq), \if(uSub=idx) \then(value) \else(seqGet<[any]>(seq,uSub)))) }; // -------------------------------------------------------------------- @@ -123,11 +123,11 @@ \notFreeIn(n, t), \notFreeIn(m, s), \notFreeIn(m, t)) - \add((\exists n; (0 <= n & n < seqLen(s) & any::seqGet(s, n) = t)) + \add((\exists n; (0 <= n & n < seqLen(s) & seqGet<[any]>(s, n) = t)) -> (0 <= seqIndexOf(s, t) & seqIndexOf(s, t) < seqLen(s) & - any::seqGet(s, seqIndexOf(s, t)) = t & - \forall m; ((0 <= m & m < seqIndexOf(s, t)) -> any::seqGet(s, m) != t)) ==>) + seqGet<[any]>(s, seqIndexOf(s, t)) = t & + \forall m; ((0 <= m & m < seqIndexOf(s, t)) -> seqGet<[any]>(s, m) != t)) ==>) }; // ==================================================================== @@ -138,7 +138,7 @@ // The taclets differ from the original axiomatization by // (1) the right hand bound in seqDef is now strict // (2) the default value is explicitely given by seqGetOutside - // instead of any::seqGet(seqEmpty, 0) + // instead of seqGet<[any]>(seqEmpty, 0) // // ==================================================================== @@ -149,7 +149,7 @@ \schemaVar \variables Seq s; \schemaVar \variables int u; \find(seq) - \add(\forall s; (s = seqDef{u;}(0, seqLen(s), any::seqGet(s, u))) ==>) + \add(\forall s; (s = seqDef{u;}(0, seqLen(s), seqGet<[any]>(s, u))) ==>) }; \lemma @@ -158,7 +158,7 @@ \schemaVar \variables int iv; \find(seqGetOutside) \add(\forall s; (\forall iv; ((iv < 0 | seqLen(s) <= iv) - -> any::seqGet(s, iv) = seqGetOutside)) ==>) + -> seqGet<[any]>(s, iv) = seqGetOutside)) ==>) }; // -------------------------------------------------------------------- @@ -170,9 +170,9 @@ \schemaVar \term Seq seq; \schemaVar \term int idx; - \find((beta)any::seqGet(seq, idx)) + \find((beta)seqGet<[any]>(seq, idx)) - \replacewith(beta::seqGet(seq, idx)) + \replacewith(seqGet<[beta]>(seq, idx)) \heuristics(simplify) }; @@ -182,8 +182,8 @@ \schemaVar \term Seq seq; \schemaVar \term int at; - \find(alpha::seqGet(seq, at)) - \add((alpha)any::seqGet(seq, at) = alpha::seqGet(seq, at) ==>) + \find(seqGet<[alpha]>(seq, at)) + \add((alpha)seqGet<[any]>(seq, at) = seqGet<[alpha]>(seq, at) ==>) \heuristics(inReachableStateImplication) }; @@ -196,7 +196,7 @@ \schemaVar \term any x; \schemaVar \term int idx; - \find(alpha::seqGet(seqSingleton(x), idx)) + \find(seqGet<[alpha]>(seqSingleton(x), idx)) \replacewith(\if(idx = 0) \then((alpha)x) @@ -208,7 +208,7 @@ \lemma getOfSeqSingletonConcrete { \schemaVar \term any x; - \find(alpha::seqGet(seqSingleton(x), 0)) + \find(seqGet<[alpha]>(seqSingleton(x), 0)) \replacewith((alpha)x) \heuristics(concrete) }; @@ -218,11 +218,11 @@ \schemaVar \term Seq seq, seq2; \schemaVar \term int idx; - \find(alpha::seqGet(seqConcat(seq, seq2), idx)) + \find(seqGet<[alpha]>(seqConcat(seq, seq2), idx)) \replacewith(\if(idx < seqLen(seq)) - \then(alpha::seqGet(seq, idx)) - \else(alpha::seqGet(seq2, idx - seqLen(seq)))) + \then(seqGet<[alpha]>(seq, idx)) + \else(seqGet<[alpha]>(seq2, idx - seqLen(seq)))) \heuristics(simplify_enlarging) }; @@ -232,10 +232,10 @@ \schemaVar \term Seq seq; \schemaVar \term int idx, from, to; - \find(alpha::seqGet(seqSub(seq, from, to), idx)) + \find(seqGet<[alpha]>(seqSub(seq, from, to), idx)) \replacewith(\if(0 <= idx & idx < (to - from)) - \then(alpha::seqGet(seq, idx + from)) + \then(seqGet<[alpha]>(seq, idx + from)) \else((alpha)seqGetOutside)) \heuristics(simplify_enlarging) @@ -246,9 +246,9 @@ \schemaVar \term Seq seq; \schemaVar \term int idx; - \find(alpha::seqGet(seqReverse(seq), idx)) + \find(seqGet<[alpha]>(seqReverse(seq), idx)) - \replacewith(alpha::seqGet(seq, seqLen(seq) - 1 - idx)) + \replacewith(seqGet<[alpha]>(seq, seqLen(seq) - 1 - idx)) \heuristics(simplify_enlarging) }; @@ -259,8 +259,8 @@ \schemaVar \term int idx, jdx; \schemaVar \term any value; - \find(alpha::seqGet(seqUpd(seq, idx, value), jdx)) - \replacewith(\if(0<=jdx & jdx < seqLen(seq) & idx=jdx) \then((alpha)value) \else(alpha::seqGet(seq, jdx))) + \find(seqGet<[alpha]>(seqUpd(seq, idx, value), jdx)) + \replacewith(\if(0<=jdx & jdx < seqLen(seq) & idx=jdx) \then((alpha)value) \else(seqGet<[alpha]>(seq, jdx))) \heuristics(simplify_enlarging) }; @@ -348,7 +348,7 @@ \add(seqLen(s) = seqLen(s2) & \forall iv; (0 <= iv & iv < seqLen(s) - -> any::seqGet(s, iv) = any::seqGet(s2, iv)) ==>) + -> seqGet<[any]>(s, iv) = seqGet<[any]>(s2, iv)) ==>) \heuristics(inReachableStateImplication) // uncertain about heuristics?? @@ -364,7 +364,7 @@ \replacewith( ==> seqLen(s) = seqLen(s2) & \forall iv; (0 <= iv & iv < seqLen(s) - -> any::seqGet(s, iv) = any::seqGet(s2, iv))) + -> seqGet<[any]>(s, iv) = seqGet<[any]>(s2, iv))) \heuristics(simplify_enlarging) }; @@ -376,7 +376,7 @@ \schemaVar \term Seq EQ; \assumes(seqSingleton(x) = EQ ==>) - \find(alpha::seqGet(EQ, idx)) + \find(seqGet<[alpha]>(EQ, idx)) \sameUpdateLevel \replacewith(\if(idx = 0) @@ -394,12 +394,12 @@ \schemaVar \term Seq EQ; \assumes(seqConcat(seq, seq2) = EQ ==>) - \find(alpha::seqGet(EQ, idx)) + \find(seqGet<[alpha]>(EQ, idx)) \sameUpdateLevel \replacewith(\if(idx < seqLen(seq)) - \then(alpha::seqGet(seq, idx)) - \else(alpha::seqGet(seq2, idx - seqLen(seq)))) + \then(seqGet<[alpha]>(seq, idx)) + \else(seqGet<[alpha]>(seq2, idx - seqLen(seq)))) \heuristics(no_self_application, simplify_enlarging) \displayname "getOfSeqConcat" @@ -412,11 +412,11 @@ \schemaVar \term Seq EQ; \assumes(seqSub(seq, from, to) = EQ ==>) - \find(alpha::seqGet(EQ, idx)) + \find(seqGet<[alpha]>(EQ, idx)) \sameUpdateLevel \replacewith(\if(0 <= idx & idx < (to - from)) - \then(alpha::seqGet(seq, idx + from)) + \then(seqGet<[alpha]>(seq, idx + from)) \else((alpha)seqGetOutside)) \heuristics(no_self_application, simplify_enlarging) @@ -430,10 +430,10 @@ \schemaVar \term Seq EQ; \assumes(seqReverse(seq) = EQ ==>) - \find(alpha::seqGet(EQ, idx)) + \find(seqGet<[alpha]>(EQ, idx)) \sameUpdateLevel - \replacewith(alpha::seqGet(seq, seqLen(seq) - 1 - idx)) + \replacewith(seqGet<[alpha]>(seq, seqLen(seq) - 1 - idx)) \heuristics(no_self_application, simplify_enlarging) \displayname "getOfSeqReverse" @@ -521,7 +521,7 @@ \schemaVar \variables int uSub, uSub1, uSub2; \assumes(seqDef{uSub;}(from, to, t) = EQ ==>) - \find(alpha::seqGet(EQ, idx)) + \find(seqGet<[alpha]>(EQ, idx)) \sameUpdateLevel \varcond(\notFreeIn(uSub, from), \notFreeIn(uSub, to)) @@ -968,13 +968,13 @@ \schemaVar \term int x; \schemaVar \term Seq s; \schemaVar \variables int u, v; - // \find(seqDef{u;}(0,x,alpha::seqGet(s,u))) + // \find(seqDef{u;}(0,x,seqGet<[alpha]>(s,u))) // changed by PHS 17.12.2013 // original version caused inconsistency // proof by DB 29.10.2013 was based on // another incorrect taclet that has in the // meantime been removed. - \find(seqDef{u;}(0, x, any::seqGet(s, u))) + \find(seqDef{u;}(0, x, seqGet<[any]>(s, u))) \varcond(\notFreeIn(u, x, s), \notFreeIn(v, x, s)) \replacewith(\if(seqLen(s) = x) \then(s) @@ -992,7 +992,7 @@ \schemaVar \term int x; \schemaVar \variables int u; \assumes(seqLen(s) = x ==>) - \find(seqDef{u;}(0, x, any::seqGet(s, u))) + \find(seqDef{u;}(0, x, seqGet<[any]>(s, u))) \sameUpdateLevel \varcond(\notFreeIn(u, x, s)) \replacewith(s) @@ -1015,7 +1015,7 @@ // \find( seqIndexOf(s,t) ) // \varcond ( \notFreeIn(n, s), \notFreeIn(n, t) ) // \replacewith( \ifEx n; - // (0 <= n & n < seqLen(s) & any::seqGet(s,n)=t) + // (0 <= n & n < seqLen(s) & seqGet<[any]>(s,n)=t) // \then (n) // \else (seqIndexOf(s,t)) ) // }; @@ -1039,7 +1039,7 @@ \varcond(\notFreeIn(idx, s1, s2, x)) \replacewith(seqIndexOf(s1, x)); \add( ==> \exists idx; (0 <= idx & idx < seqLen(s1) & - any::seqGet(s1, idx) = x)) + seqGet<[any]>(s1, idx) = x)) }; \lemma @@ -1052,9 +1052,9 @@ \varcond(\notFreeIn(idx, s1, s2, x)) \replacewith(add(seqIndexOf(s2, x), seqLen(s1))); \add( ==> (!\exists idx; - (0 <= idx & idx < seqLen(s1) & any::seqGet(s1, idx) = x) + (0 <= idx & idx < seqLen(s1) & seqGet<[any]>(s1, idx) = x) & \exists idx; - (0 <= idx & idx < seqLen(s2) & any::seqGet(s2, idx) = x))) + (0 <= idx & idx < seqLen(s2) & seqGet<[any]>(s2, idx) = x))) }; \lemma @@ -1073,7 +1073,7 @@ \notFreeIn(nx, to)) \replacewith(sub(seqIndexOf(s, x), from)); \add( ==> from <= seqIndexOf(s, x) & seqIndexOf(s, x) < to & 0 <= from & - \exists nx; ((0 <= nx & nx < seqLen(s) & any::seqGet(s, nx) = x))) + \exists nx; ((0 <= nx & nx < seqLen(s) & seqGet<[any]>(s, nx) = x))) }; // -------------------------------------------------------------------------- @@ -1101,7 +1101,7 @@ \replacewith(seqDef{j;}(lower, upper, - any::select(h, array, arr(j)) + select<[any]>(h, array, arr(j)) ) ) \heuristics(concrete) @@ -1131,8 +1131,8 @@ \replacewith(seqDef{j;}(lower, upper, - any::select(h, - Object::select(h, array, arr(j)), + select<[any]>(h, + select<[Object]>(h, array, arr(j)), f ) ) @@ -1150,7 +1150,7 @@ \schemaVar \variables int u; \find(array2seq(h, a)) \varcond(\notFreeIn(u, a, h)) - \replacewith(seqDef{u;}(0, length(a), any::select(h, a, arr(u)))) + \replacewith(seqDef{u;}(0, length(a), select<[any]>(h, a, arr(u)))) \heuristics(simplify_enlarging) }; @@ -1171,8 +1171,8 @@ \schemaVar \term Object a; \schemaVar \term int idx; \schemaVar \term Heap h; - \find(any::seqGet(array2seq(h, a), idx)) - \replacewith(any::select(h, a, arr(idx))); + \find(seqGet<[any]>(array2seq(h, a), idx)) + \replacewith(select<[any]>(h, a, arr(idx))); \add( ==> 0 <= idx & idx < length(a)) }; @@ -1181,8 +1181,8 @@ \schemaVar \term Object a; \schemaVar \term int idx; \schemaVar \term Heap h; - \find(alpha::seqGet(array2seq(h, a), idx)) - \replacewith(alpha::select(h, a, arr(idx))); + \find(seqGet<[alpha]>(array2seq(h, a), idx)) + \replacewith(select<[alpha]>(h, a, arr(idx))); \add( ==> 0 <= idx & idx < length(a)) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/types.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/types.key index 38a875cb9b1..8bdce7f8a69 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/types.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/types.key @@ -7,7 +7,7 @@ \functions { SORT anySORT; - SORT alph::ssort; + SORT sort<[alph]>; } \predicates { @@ -16,7 +16,7 @@ \rules { ssubsortDirect { - \find(ssubsort(alphSub::ssort, alph::ssort)) + \find(ssubsort(sort<[alphSub]>, sort<[alph]>)) \replacewith(true) \heuristics(simplify) }; @@ -36,7 +36,7 @@ }; ssubsortSup { - \find(ssubsort(alph::ssort, alphSub::ssort)) + \find(ssubsort(sort<[alph]>, sort<[alphSub]>)) \varcond(\not \same(alphSub, alph)) \replacewith(false) \heuristics(simplify) From ec93a6f06aa618de94a1c66cac1f316f67c9db7d Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 16 Mar 2026 14:52:37 +0100 Subject: [PATCH 04/37] Fix rewriting of .key files, field resolution, and grammar --- key.core/src/main/antlr4/KeYParser.g4 | 2 +- .../main/java/de/uka/ilkd/key/ldt/LDT.java | 2 +- .../nparser/builder/ExpressionBuilder.java | 3 ++ .../key/java/JavaRedux/java/lang/String.key | 2 +- .../de/uka/ilkd/key/proof/rules/heap.key | 8 ++--- .../de/uka/ilkd/key/proof/rules/heapRules.key | 6 ++-- .../de/uka/ilkd/key/proof/rules/infFlow.key | 8 ++--- .../de/uka/ilkd/key/proof/rules/javaRules.key | 32 +++++++++---------- .../uka/ilkd/key/proof/rules/locSetsRules.key | 12 +++---- .../de/uka/ilkd/key/proof/rules/types.key | 6 ++-- 10 files changed, 42 insertions(+), 39 deletions(-) diff --git a/key.core/src/main/antlr4/KeYParser.g4 b/key.core/src/main/antlr4/KeYParser.g4 index 947da311d48..6e992d132f3 100644 --- a/key.core/src/main/antlr4/KeYParser.g4 +++ b/key.core/src/main/antlr4/KeYParser.g4 @@ -362,7 +362,7 @@ id_declaration funcpred_name : - (name=simple_ident_dots|num=INT_LITERAL) + (sortId DOUBLECOLON)? (name=simple_ident_dots|num=INT_LITERAL) ; diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/LDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/LDT.java index 5a0e0d8281a..00189c9b311 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/LDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/LDT.java @@ -110,7 +110,7 @@ protected final ParametricFunctionDecl addParametricFunction(TermServices servic String name) { final ParametricFunctionDecl f = services.getNamespaces().parametricFunctions().lookup(name); - assert f != null : "LDT: Sort depending function " + name + " not found"; + assert f != null : "LDT: Parametric function " + name + " not found"; return addParametricFunction(f); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java index 21489e5b04d..498f865c23d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java @@ -1501,6 +1501,9 @@ public JTerm visitAccessterm(KeYParser.AccesstermContext ctx) { semanticError(ctx, "Cannot can be limited: " + op); } } else { + if (ctx.sortId() != null) { + firstName = ctx.sortId().getText() + "::" + firstName; + } op = lookupVarfuncId(ctx, firstName, genericArgsCtxt); } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/String.key b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/String.key index 3c26ffb13e0..d9a5a02f5d7 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/String.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/String.key @@ -55,7 +55,7 @@ \replacewith ({ #v := strPool(#slit) } \modality{#normalassign}{.. ...}\endmodality(post)) - \add(strPool(#slit) != null, boolean::select(heap, strPool(#slit), java.lang.Object::) = TRUE ==>) + \add(strPool(#slit) != null, select<[boolean]>(heap, strPool(#slit), java.lang.Object::) = TRUE ==>) \heuristics (simplify_prog, simplify_prog_subset) }; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key index 6907e596eec..38157509c10 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key @@ -31,10 +31,10 @@ \unique Field java.lang.Object::; \unique Field java.lang.Object::; \unique Field java.lang.Object::; - \unique Field alpha::; // static - \unique Field alpha::; // static - \unique Field alpha::; // static - \unique Field alpha::; // static + \unique Field <[alpha]>; // static + \unique Field <[alpha]>; // static + \unique Field <[alpha]>; // static + \unique Field <[alpha]>; // static // array length int length(Object); diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key index eedbe9e95be..8eeceaaf8cf 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key @@ -819,12 +819,12 @@ \schemaVar \term Field f; \assumes(wellFormed(h) ==>) - \find(deltaselect<[Object]>(h, o, f)) + \find(select<[deltaObject]>(h, o, f)) \sameUpdateLevel - \add(deltaselect<[Object]>(h, o, f) = null + \add(select<[deltaObject]>(h, o, f) = null | select<[boolean]>(h, - deltaselect<[Object]>(h, o, f), + select<[deltaObject]>(h, o, f), java.lang.Object::) = TRUE ==>) \heuristics(inReachableStateImplication) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/infFlow.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/infFlow.key index c5181ca15e1..9abafbc29b3 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/infFlow.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/infFlow.key @@ -52,7 +52,7 @@ ((0 <= i & i < seqLen(s)) -> ((instance<[java.lang.Object]>(seqGet<[any]>(s, i)) = TRUE -> select<[boolean]>(h, seqGet<[java.lang.Object]>(s, i), java.lang.Object::) = FALSE) - & (Seqinstance<[Seq]>(seqGet<[any]>(s, i)) = TRUE + & (instance<[Seq]>(seqGet<[any]>(s, i)) = TRUE -> newOnHeap(h, seqGet<[Seq]>(s, i)))))) \heuristics(comprehensions) @@ -70,7 +70,7 @@ & \forall i; ((0 <= i & i < seqLen(s1)) -> ((sameType(seqGet<[any]>(s1, i), seqGet<[any]>(s2, i))) - & (Seqinstance<[Seq]>(seqGet<[any]>(s1, i)) = TRUE + & (instance<[Seq]>(seqGet<[any]>(s1, i)) = TRUE -> sameTypes(seqGet<[Seq]>(s1, i), seqGet<[Seq]>(s2, i)))))) \heuristics(comprehensions) @@ -95,7 +95,7 @@ seqGet<[java.lang.Object]>(t1, i), s2, seqGet<[java.lang.Object]>(t2, i))) - & (Seqinstance<[Seq]>(seqGet<[any]>(t1, i)) = TRUE + & (instance<[Seq]>(seqGet<[any]>(t1, i)) = TRUE -> objectsIsomorphic(s1, seqGet<[Seq]>(t1, i), s2, @@ -122,7 +122,7 @@ -> ((instance<[java.lang.Object]>(seqGet<[any]>(s1, i)) = TRUE -> (seqGet<[java.lang.Object]>(s1, i) = o1 <-> seqGet<[java.lang.Object]>(s2, i) = o2)) - & (Seqinstance<[Seq]>(seqGet<[any]>(s1, i)) = TRUE + & (instance<[Seq]>(seqGet<[any]>(s1, i)) = TRUE -> objectIsomorphic(seqGet<[Seq]>(s1, i), o1, seqGet<[Seq]>(s2, i), diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key index 15248d59188..0018ca5de79 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key @@ -4053,8 +4053,8 @@ \rules(programRules:Java, initialisation:enableStaticInitialisation) { class_being_initialized_is_prepared { - \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, <[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, <[alphaObj]>)) \sameUpdateLevel \replacewith(TRUE) \heuristics(confluence_restricted, simplify) @@ -4062,8 +4062,8 @@ }; initialized_class_is_prepared { - \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, <[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, <[alphaObj]>)) \sameUpdateLevel \replacewith(TRUE) \heuristics(confluence_restricted, simplify) @@ -4071,8 +4071,8 @@ }; initialized_class_is_not_erroneous { - \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, <[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, <[alphaObj]>)) \sameUpdateLevel \replacewith(FALSE) \heuristics(confluence_restricted, simplify) @@ -4080,8 +4080,8 @@ }; class_initialized_excludes_class_init_in_progress { - \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, <[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, <[alphaObj]>)) \sameUpdateLevel \replacewith(FALSE) \heuristics(confluence_restricted, simplify) @@ -4089,8 +4089,8 @@ }; class_erroneous_excludes_class_in_init { - \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, <[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, <[alphaObj]>)) \sameUpdateLevel \replacewith(FALSE) \heuristics(confluence_restricted, simplify) @@ -4098,8 +4098,8 @@ }; erroneous_class_has_no_initialized_sub_class { - \assumes(select<[boolean]>(heap, null, alphaObj::) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, betaObj::)) + \assumes(select<[boolean]>(heap, null, <[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, <[alphaObj]>)) \sameUpdateLevel \varcond(\sub(betaObj, alphaObj)) \replacewith(FALSE) @@ -4108,8 +4108,8 @@ }; superclasses_of_initialized_classes_are_initialized { - \assumes(select<[boolean]>(heap, null, betaObj::) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, <[betaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, <[alphaObj]>)) \sameUpdateLevel \varcond(\isReference [non_null](betaObj), \strict \sub(betaObj, alphaObj)) \replacewith(TRUE) @@ -4117,8 +4117,8 @@ }; superclasses_of_initialized_classes_are_prepared { - \assumes(select<[boolean]>(heap, null, betaObj::) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, alphaObj::)) + \assumes(select<[boolean]>(heap, null, <[betaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, <[alphaObj]>)) \sameUpdateLevel \varcond(\sub(betaObj, alphaObj)) \replacewith(TRUE) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key index b1a0ec2e9e2..a45de9829d4 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key @@ -1320,9 +1320,9 @@ \schemaVar \term Object o; \schemaVar \term Field f; - \assumes( ==> deltaselect<[Object]>(h, o, f) = null) + \assumes( ==> select<[deltaObject]>(h, o, f) = null) \find( ==> select<[boolean]>(h, - deltaselect<[Object]>(h, o, f), + select<[deltaObject]>(h, o, f), java.lang.Object::) = TRUE) \replacewith( ==> wellFormed(h)) @@ -1336,7 +1336,7 @@ \schemaVar \term Field f; \schemaVar \term Object EQ; - \assumes(deltaselect<[Object]>(h, o, f) = EQ ==> EQ = null) + \assumes(select<[deltaObject]>(h, o, f) = EQ ==> EQ = null) \find( ==> select<[boolean]>(h, EQ, java.lang.Object::) = TRUE) @@ -1351,9 +1351,9 @@ \schemaVar \term Object o; \schemaVar \term Field f; - \assumes( ==> final<[deltaObj]>(o, f) = null) + \assumes( ==> final<[deltaObject]>(o, f) = null) \find( ==> select<[boolean]>(h, - final<[deltaObj]>(o, f), + final<[deltaObject]>(o, f), java.lang.Object::) = TRUE ) \replacewith( ==> select<[boolean]>(h, o, java.lang.Object::) = TRUE | o = null ) @@ -1367,7 +1367,7 @@ \schemaVar \term Field f; \schemaVar \term Object EQ; - \assumes(final<[deltaObj]>(o, f) = EQ ==> EQ = null) + \assumes(final<[deltaObject]>(o, f) = EQ ==> EQ = null) \find( ==> select<[boolean]>(h, EQ, java.lang.Object::) = TRUE) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/types.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/types.key index 8bdce7f8a69..33a2c30df19 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/types.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/types.key @@ -7,7 +7,7 @@ \functions { SORT anySORT; - SORT sort<[alph]>; + SORT ssort<[alph]>; } \predicates { @@ -16,7 +16,7 @@ \rules { ssubsortDirect { - \find(ssubsort(sort<[alphSub]>, sort<[alph]>)) + \find(ssubsort(ssort<[alphSub]>, ssort<[alph]>)) \replacewith(true) \heuristics(simplify) }; @@ -36,7 +36,7 @@ }; ssubsortSup { - \find(ssubsort(sort<[alph]>, sort<[alphSub]>)) + \find(ssubsort(ssort<[alph]>, ssort<[alphSub]>)) \varcond(\not \same(alphSub, alph)) \replacewith(false) \heuristics(simplify) From 5c07d77ae10b96fba5cc426a02d10197f621c06a Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 16 Mar 2026 18:16:16 +0100 Subject: [PATCH 05/37] Fix tests & pp --- .../java/de/uka/ilkd/key/ldt/HeapLDT.java | 4 ++ .../nparser/builder/ExpressionBuilder.java | 3 +- .../java/de/uka/ilkd/key/pp/NotationInfo.java | 4 +- .../de/uka/ilkd/key/parser/TestParser.java | 2 +- .../ilkd/key/parser/TestTermParserHeap.java | 64 ++++++++++--------- .../de/uka/ilkd/key/pp/FinalPrinterTest.java | 22 +++---- .../key/nparser/exceptional/unknownsort.key | 2 +- .../key/nparser/exceptional/unknownsort2.key | 4 +- .../src/test/resources/testcase/testrules.key | 2 +- 9 files changed, 57 insertions(+), 50 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java index aa9480cdce1..56b58e3518f 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java @@ -246,6 +246,10 @@ public ParametricFunctionInstance getSelect(Sort instanceSort, TermServices serv ImmutableList.of(new GenericArgument(instanceSort)), (Services) services); } + public @NonNull ParametricFunctionDecl getFinal() { + return finalFunction; + } + /** * Returns the function symbol to access final fields for the given instance sort. * diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java index 498f865c23d..f79bd17173a 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java @@ -175,7 +175,8 @@ public static String operatorOfJavaBlock(String raw) { } private static boolean isSelectTerm(JTerm term) { - return term.op().name().toString().endsWith("::select") && term.arity() == 3; + return term.op() instanceof ParametricFunctionInstance pfi + && pfi.getBase().name().toString().equals("select") && term.arity() == 3; } @Override diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java b/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java index 28a5eb3d25e..cbf9d647516 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java @@ -293,8 +293,8 @@ private HashMap createPrettyNotation(Services services) { // heap operators final HeapLDT heapLDT = services.getTypeConverter().getHeapLDT(); - tbl.put(HeapLDT.SELECT_NAME, new Notation.SelectNotation()); - tbl.put(HeapLDT.FINAL_NAME, new Notation.FinalNotation()); + tbl.put(heapLDT.getSelect(), new Notation.SelectNotation()); + tbl.put(heapLDT.getFinal(), new Notation.FinalNotation()); tbl.put(heapLDT.getStore(), new Notation.StoreNotation()); tbl.put(heapLDT.getAnon(), new Notation.HeapConstructorNotation()); tbl.put(heapLDT.getCreate(), new Notation.HeapConstructorNotation()); diff --git a/key.core/src/test/java/de/uka/ilkd/key/parser/TestParser.java b/key.core/src/test/java/de/uka/ilkd/key/parser/TestParser.java index 5bba4dd7fe9..f0651fd1fdf 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/parser/TestParser.java +++ b/key.core/src/test/java/de/uka/ilkd/key/parser/TestParser.java @@ -61,7 +61,7 @@ public void testGenericSort() throws IOException { String content = """ \\sorts { \\generic gen; }\s - \\rules { SomeRule { \\find(gen::instance(0)) \\replacewith(false) }; } + \\rules { SomeRule { \\find(instance<[gen]>(0)) \\replacewith(false) }; } \\problem { true }"""; Services services = TacletForTests.services(); diff --git a/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserHeap.java b/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserHeap.java index 2ab3d8afeb2..2bee05cbad0 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserHeap.java +++ b/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserHeap.java @@ -8,6 +8,7 @@ import de.uka.ilkd.key.logic.JTerm; import org.key_project.logic.op.Operator; +import org.key_project.logic.sort.Sort; import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.BeforeEach; @@ -47,7 +48,8 @@ public void setUp() throws Exception { } private JTerm getSelectTerm(String sort, JTerm heap, JTerm object, JTerm field) { - Operator op = lookup_func(sort + "::select"); + Sort s = services.getNamespaces().sorts().lookup(sort); + Operator op = services.getTypeConverter().getHeapLDT().getSelect(s, services); JTerm[] params = { heap, object, field }; return tf.createTerm(op, params); } @@ -74,15 +76,15 @@ public void testLocationSets() throws Exception { @Test public void testParsePrettyPrintedSelect() throws Exception { String prettySyntax = "a.f"; - String verboseSyntax = "int::select(heap, a, testTermParserHeap.A::$f)"; + String verboseSyntax = "select<[int]>(heap, a, testTermParserHeap.A::$f)"; comparePrettySyntaxAgainstVerboseSyntax(prettySyntax, verboseSyntax); prettySyntax = "a1.f"; - verboseSyntax = "int::select(heap, a1, testTermParserHeap.A1::$f)"; + verboseSyntax = "select<[int]>(heap, a1, testTermParserHeap.A1::$f)"; comparePrettySyntaxAgainstVerboseSyntax(prettySyntax, verboseSyntax); prettySyntax = "a1.(testTermParserHeap.A::f)"; - verboseSyntax = "int::select(heap, a1, testTermParserHeap.A::$f)"; + verboseSyntax = "select<[int]>(heap, a1, testTermParserHeap.A::$f)"; comparePrettySyntaxAgainstVerboseSyntax(prettySyntax, verboseSyntax); } @@ -95,7 +97,7 @@ public void testBracketHeapUpdate() throws Exception { comparePrettySyntaxAgainstVerboseSyntax(complicatedHeapPretty, complicatedHeapVerbose); String prettySyntax = "a.f@h[anon({}, h2)]"; - String verboseSyntax = "int::select(anon(h, empty, h2), a, testTermParserHeap.A::$f)"; + String verboseSyntax = "select<[int]>(anon(h, empty, h2), a, testTermParserHeap.A::$f)"; comparePrettySyntaxAgainstVerboseSyntax(prettySyntax, verboseSyntax); /* @@ -103,9 +105,9 @@ public void testBracketHeapUpdate() throws Exception { * after @-Operator. */ prettySyntax = "a.next.next.array[i]@" + complicatedHeapPretty; - verboseSyntax = "int::select(" + complicatedHeapVerbose + ", " + "int[]::select(" - + complicatedHeapVerbose + ", " + "testTermParserHeap.A::select(" - + complicatedHeapVerbose + ", " + "testTermParserHeap.A::select(" + verboseSyntax = "select<[int]>(" + complicatedHeapVerbose + ", " + "select<[int[]]>(" + + complicatedHeapVerbose + ", " + "select<[testTermParserHeap.A]>(" + + complicatedHeapVerbose + ", " + "select<[testTermParserHeap.A]>(" + complicatedHeapVerbose + ", " + " a, testTermParserHeap.A::$next)" + ", testTermParserHeap.A::$next)" + ", testTermParserHeap.A::$array)" + ", arr(i))"; comparePrettySyntaxAgainstVerboseSyntax(prettySyntax, verboseSyntax); @@ -120,21 +122,21 @@ public void testAtOperator_1() throws Exception { String prettySyntax, verboseSyntax; prettySyntax = "a.f@h"; - verboseSyntax = "int::select(h, a, testTermParserHeap.A::$f)"; + verboseSyntax = "select<[int]>(h, a, testTermParserHeap.A::$f)"; comparePrettySyntaxAgainstVerboseSyntax(prettySyntax, verboseSyntax); } @Test public void testAtOperator_2() throws Exception { String prettySyntax = "a1.f@h"; - String verboseSyntax = "int::select(h, a1, testTermParserHeap.A1::$f)"; + String verboseSyntax = "select<[int]>(h, a1, testTermParserHeap.A1::$f)"; comparePrettySyntaxAgainstVerboseSyntax(prettySyntax, verboseSyntax); } @Test public void testAtOperator_3() throws Exception { String prettySyntax = "a1.(testTermParserHeap.A::f)@h"; - String verboseSyntax = "int::select(h, a1, testTermParserHeap.A::$f)"; + String verboseSyntax = "select<[int]>(h, a1, testTermParserHeap.A::$f)"; comparePrettySyntaxAgainstVerboseSyntax(prettySyntax, verboseSyntax); } @@ -193,7 +195,7 @@ public void testAtOperator_8() throws Exception { public void testBugResettingCounter() throws Exception { String prettySyntax = "a.f = a.f@h"; String verboseSyntax = - "int::select(heap, a, testTermParserHeap.A::$f) = int::select(h, a, testTermParserHeap.A::$f)"; + "select<[int]>(heap, a, testTermParserHeap.A::$f) = select<[int]>(h, a, testTermParserHeap.A::$f)"; comparePrettySyntaxAgainstVerboseSyntax(prettySyntax, verboseSyntax); } @@ -218,7 +220,7 @@ public void testVerifyExceptionIfAtOperatorNotPreceededBySelectTerm() { // @Ignore(value="weigl: This test is not comprehensible anymore.") public void testUnknownConstant() throws Exception { parseDecls("\\functions { \\unique Field unknown.Clazz::$unknownField; }"); - String string = "int::select(heap,a,unknown.Clazz::$unknownField)"; + String string = "select<[int]>(heap,a,unknown.Clazz::$unknownField)"; comparePrettyPrintAgainstToString(string, string); } @@ -226,12 +228,12 @@ public void testUnknownConstant() throws Exception { public void testQuantifiedSelect() throws Exception { String quantification = "\\forall java.lang.Object o; \\forall Field f; o.f = 1"; String expectedToString = - "all{o:java.lang.Object}(all{f:Field}(equals(any::select(heap,o,f),Z(1(#)))))"; + "all{o:java.lang.Object}(all{f:Field}(equals(select<[any]>(heap,o,f),Z(1(#)))))"; comparePrettyPrintAgainstToString(quantification, expectedToString); - quantification = "\\forall Field f; a.f = any::select(heap, a, f)"; + quantification = "\\forall Field f; a.f = select<[any]>(heap, a, f)"; expectedToString = - "all{f:Field}(equals(int::select(heap,a,testTermParserHeap.A::$f),any::select(heap,a,f)))"; + "all{f:Field}(equals(select<[int]>(heap,a,testTermParserHeap.A::$f),select<[any]>(heap,a,f)))"; comparePrettyPrintAgainstToString(quantification, expectedToString); } @@ -247,14 +249,14 @@ private void comparePrettyPrintAgainstToString(String quantification, String exp public void testGenericObjectProperties() throws Exception { // test pretty syntax comparePrettySyntaxAgainstVerboseSyntax("a.", - "boolean::select(heap,a,java.lang.Object::)"); + "select<[boolean]>(heap,a,java.lang.Object::)"); comparePrettySyntaxAgainstVerboseSyntax("a.", - "boolean::select(heap,a,java.lang.Object::)"); + "select<[boolean]>(heap,a,java.lang.Object::)"); comparePrettySyntaxAgainstVerboseSyntax("a.", - "int::select(heap,a,java.lang.Object::)"); + "select<[int]>(heap,a,java.lang.Object::)"); // test fallback mode in case non-default select-type is used - parseAndPrint("int::select(heap,a,java.lang.Object::)"); + parseAndPrint("select<[int]>(heap,a,java.lang.Object::)"); } @@ -274,7 +276,7 @@ public void testQueryBasic_2() throws Exception { public void testQueryBasic_3() throws Exception { comparePrettySyntaxAgainstVerboseSyntax("a.query(a.f)@h", "testTermParserHeap.A::query(h, a, " - + "int::select(heap, a, testTermParserHeap.A::$f))"); + + "select<[int]>(heap, a, testTermParserHeap.A::$f))"); } @@ -282,8 +284,8 @@ public void testQueryBasic_3() throws Exception { public void testQueryBasic_4() throws Exception { comparePrettySyntaxAgainstVerboseSyntax("a.next.query(a.f)@h", "testTermParserHeap.A::query(h, " - + "testTermParserHeap.A::select(h, a, testTermParserHeap.A::$next), " - + "int::select(heap, a, testTermParserHeap.A::$f))"); + + "select<[testTermParserHeap.A]>(h, a, testTermParserHeap.A::$next), " + + "select<[int]>(heap, a, testTermParserHeap.A::$f))"); } @@ -297,7 +299,7 @@ public void testQueryBasic_5() throws Exception { @Test public void testQueryBasic_6() throws Exception { comparePrettySyntaxAgainstVerboseSyntax("a.getNext().next@h", - "testTermParserHeap.A::select(h, " + "select<[testTermParserHeap.A]>(h, " + "testTermParserHeap.A::getNext(h, a), testTermParserHeap.A::$next)"); } @@ -305,14 +307,14 @@ public void testQueryBasic_6() throws Exception { @Test public void testQueryBasic_7() throws Exception { comparePrettySyntaxAgainstVerboseSyntax("(a.getNext()@h2).next@h", - "testTermParserHeap.A::select(h, testTermParserHeap.A::getNext(h2, a), testTermParserHeap.A::$next)"); + "select<[testTermParserHeap.A]>(h, testTermParserHeap.A::getNext(h2, a), testTermParserHeap.A::$next)"); } @Test public void testQueryBasic_8() throws Exception { comparePrettySyntaxAgainstVerboseSyntax("(a.getNext()@heap).next@h", - "testTermParserHeap.A::select(h, " + "select<[testTermParserHeap.A]>(h, " + "testTermParserHeap.A::getNext(heap, a), testTermParserHeap.A::$next)"); } @@ -321,7 +323,7 @@ public void testQueryBasic_8() throws Exception { public void testQueryBasic_9() throws Exception { comparePrettySyntaxAgainstVerboseSyntax("(a.next@heap).getNext()@h", "testTermParserHeap.A::getNext(h, " - + "testTermParserHeap.A::select(heap, a, testTermParserHeap.A::$next))"); + + "select<[testTermParserHeap.A]>(heap, a, testTermParserHeap.A::$next))"); } @@ -337,7 +339,7 @@ public void testQueryBasic_10() throws Exception { public void testQueryBasic_11() throws Exception { // test a query on an array element comparePrettySyntaxAgainstVerboseSyntax("array[i].arrayQuery(array)", - "testTermParserHeap.A::arrayQuery(heap,testTermParserHeap.A::select(heap,array,arr(i)),array)"); + "testTermParserHeap.A::arrayQuery(heap,select<[testTermParserHeap.A]>(heap,array,arr(i)),array)"); } @Test @@ -419,7 +421,7 @@ public void testQueryInheritance_9() throws Exception { public void testAccessStaticMembers() throws Exception { // static field access comparePrettySyntaxAgainstVerboseSyntax("testTermParserHeap.A.staticField", - "int::select(heap, null, testTermParserHeap.A::$staticField)"); + "select<[int]>(heap, null, testTermParserHeap.A::$staticField)"); // static method access comparePrettySyntaxAgainstVerboseSyntax("testTermParserHeap.A.staticMethod()", @@ -427,7 +429,7 @@ public void testAccessStaticMembers() throws Exception { // static array access comparePrettySyntaxAgainstVerboseSyntax("testTermParserHeap.A.staticArray[0]", - "int::select(heap,int[]::select(heap,null,testTermParserHeap.A::$staticArray),arr(Z(0(#))))"); + "select<[int]>(heap,select<[int[]]>(heap,null,testTermParserHeap.A::$staticArray),arr(Z(0(#))))"); } /* @@ -455,7 +457,7 @@ public void testStore() throws Exception { // element of static array pretty = "heap[testTermParserHeap.A.staticArray[i] := i]"; verbose = - "store(heap, int[]::select(heap,null,testTermParserHeap.A::$staticArray), arr(i), i)"; + "store(heap, select<[int[]]>(heap,null,testTermParserHeap.A::$staticArray), arr(i), i)"; comparePrettySyntaxAgainstVerboseSyntax(pretty, verbose); // object property diff --git a/key.core/src/test/java/de/uka/ilkd/key/pp/FinalPrinterTest.java b/key.core/src/test/java/de/uka/ilkd/key/pp/FinalPrinterTest.java index d0ea35b8b13..a28c957c3f3 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/pp/FinalPrinterTest.java +++ b/key.core/src/test/java/de/uka/ilkd/key/pp/FinalPrinterTest.java @@ -43,12 +43,12 @@ public static void tearDown() { @ParameterizedTest(name = "{0} => {1}") @CsvSource(delimiter = ';', textBlock = """ - int::select(heap, self, C::$f); self.f - int::select(heap, self, C::$finf); int::select(heap, self, C::$finf) - int::final(sub, Csub::$finf); sub.finf - int::final(sub, C::$finf); sub.(C::finf) - int::final(self, C::$finf); self.finf - int::final(sub, C::$finf); sub.(C::finf) + select<[int]>(heap, self, C::$f); self.f + select<[int]>(heap, self, C::$finf); select<[int]>(heap, self, C::$finf) + final<[int]>(sub, Csub::$finf); sub.finf + final<[int]>(sub, C::$finf); sub.(C::finf) + final<[int]>(self, C::$finf); self.finf + final<[int]>(sub, C::$finf); sub.(C::finf) """) public void testPPWithFinal(String termString, String expected) throws Exception { services.getProof().getSettings().getChoiceSettings() @@ -63,11 +63,11 @@ public void testPPWithFinal(String termString, String expected) throws Exception @ParameterizedTest(name = "{0} => {1}") @CsvSource(delimiter = ';', textBlock = """ - int::final(sub, Csub::$finf); sub.finf - int::final(sub, C::$finf); sub.(C::finf) - int::final(self, C::$finf); self.finf - int::select(heap, self, C::$f); self.f - int::select(heap, self, C::$finf); self.finf + final<[int]>(sub, Csub::$finf); sub.finf + final<[int]>(sub, C::$finf); sub.(C::finf) + final<[int]>(self, C::$finf); self.finf + select<[int]>(heap, self, C::$f); self.f + select<[int]>(heap, self, C::$finf); self.finf """) public void testPPWithoutFinal(String termString, String expected) throws Exception { services.getProof().getSettings().getChoiceSettings() diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort.key b/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort.key index 9a044c08966..c26a6d2a900 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort.key +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort.key @@ -5,5 +5,5 @@ \problem { - seq::seqGet(seqEmpty, 0) + seqGet<[seq]>(seqEmpty, 0) } \ No newline at end of file diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort2.key b/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort2.key index 62c0e48c388..563f99aa320 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort2.key +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort2.key @@ -6,8 +6,8 @@ \rules { R { - \find(seq::seqGet(seqEmpty, 0)) - \replacewith(seq::seqGet(seqEmpty, 0)) + \find(seqGet<[seq]>(seqEmpty, 0)) + \replacewith(seqGet<[seq]>(seqEmpty, 0)) }; } diff --git a/key.core/src/test/resources/testcase/testrules.key b/key.core/src/test/resources/testcase/testrules.key index 708c87e570b..390c3f9de96 100644 --- a/key.core/src/test/resources/testcase/testrules.key +++ b/key.core/src/test/resources/testcase/testrules.key @@ -254,7 +254,7 @@ TesTApplyTaclet_emptyModality { \replacewith ( \<{ #v = #e + 1; }\> post ) }; testUninstantiatedSVCollector { - \find ({#v:=1 || heap:=store(heap,#v3,#memberPVToField(#v2),2)}\<{}\> int::select(heap,#v3,#memberPVToField(#v1)) = 4) \replacewith ( true ) + \find ({#v:=1 || heap:=store(heap,#v3,#memberPVToField(#v2),2)}\<{}\> select<[int]>(heap,#v3,#memberPVToField(#v1)) = 4) \replacewith ( true ) }; testParsingExplicitMethodBody { From 8e53992d9c9008c13148f6ec6ada4d84aa371a25 Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 16 Mar 2026 18:38:54 +0100 Subject: [PATCH 06/37] Fix more .key files --- .../test/resources/testcase/smt/ce/types1.key | 2 +- .../test/resources/testcase/smt/ce/types2.key | 2 +- .../test/resources/testcase/smt/ce/types4.key | 2 +- .../test/resources/testcase/smt/ce/types5.key | 2 +- .../test/resources/testcase/smt/ce/types6.key | 2 +- .../test/resources/testcase/smt/ce/types7.key | 2 +- .../test/resources/testcase/smt/ce/types8.key | 2 +- .../test/resources/testcase/smt/ce/types9.key | 2 +- .../ilkd/key/proof/rules/wdGeneralRules.key | 8 +- .../uka/ilkd/key/proof/rules/wdHeapRules.key | 14 +-- .../ilkd/key/proof/rules/wdLocSetRules.key | 4 +- .../uka/ilkd/key/proof/rules/wdSeqRules.key | 2 +- .../ilkd/key/smt/newsmt2/smt-lemma-header.key | 4 +- .../complexBundleGeneration/a/lang/String.key | 112 +++++++++--------- .../smt/tacletTranslation/castOperators.key | 4 +- .../smt/tacletTranslation/complexProblem.key | 2 +- .../smt/tacletTranslation/complexProblem2.key | 4 +- 17 files changed, 85 insertions(+), 85 deletions(-) diff --git a/key.core.testgen/src/test/resources/testcase/smt/ce/types1.key b/key.core.testgen/src/test/resources/testcase/smt/ce/types1.key index 45cca4fa967..1848bb32ef8 100644 --- a/key.core.testgen/src/test/resources/testcase/smt/ce/types1.key +++ b/key.core.testgen/src/test/resources/testcase/smt/ce/types1.key @@ -6,5 +6,5 @@ } \problem { -a != null -> (I3::instance(a) = TRUE -> I1::instance(a) = TRUE) +a != null -> (instance<[I3]>(a) = TRUE -> instance<[I1]>(a) = TRUE) } diff --git a/key.core.testgen/src/test/resources/testcase/smt/ce/types2.key b/key.core.testgen/src/test/resources/testcase/smt/ce/types2.key index 5049aa5f758..8602c0d80de 100644 --- a/key.core.testgen/src/test/resources/testcase/smt/ce/types2.key +++ b/key.core.testgen/src/test/resources/testcase/smt/ce/types2.key @@ -6,5 +6,5 @@ } \problem { -a != null -> (C1::instance(a) = TRUE -> C2::instance(a) = FALSE) +a != null -> (instance<[C1]>(a) = TRUE -> instance<[C2]>(a) = FALSE) } diff --git a/key.core.testgen/src/test/resources/testcase/smt/ce/types4.key b/key.core.testgen/src/test/resources/testcase/smt/ce/types4.key index 7002f1df164..296a6372fa9 100644 --- a/key.core.testgen/src/test/resources/testcase/smt/ce/types4.key +++ b/key.core.testgen/src/test/resources/testcase/smt/ce/types4.key @@ -6,5 +6,5 @@ } \problem { -a != null -> (C2::instance(a) = TRUE -> (I2::instance(a) = TRUE & I1::instance(a) = TRUE & I4::instance(a) = TRUE)) +a != null -> (instance<[C2]>(a) = TRUE -> (instance<[I2]>(a) = TRUE & instance<[I1]>(a) = TRUE & instance<[I4]>(a) = TRUE)) } diff --git a/key.core.testgen/src/test/resources/testcase/smt/ce/types5.key b/key.core.testgen/src/test/resources/testcase/smt/ce/types5.key index 98a55ffc7b4..c82969d9ec9 100644 --- a/key.core.testgen/src/test/resources/testcase/smt/ce/types5.key +++ b/key.core.testgen/src/test/resources/testcase/smt/ce/types5.key @@ -6,5 +6,5 @@ } \problem { -a != null -> (A::instance(a) = TRUE -> (C2::instance(a) = TRUE | C3::instance(a) = TRUE)) +a != null -> (instance<[A]>(a) = TRUE -> (instance<[C2]>(a) = TRUE | instance<[C3]>(a) = TRUE)) } diff --git a/key.core.testgen/src/test/resources/testcase/smt/ce/types6.key b/key.core.testgen/src/test/resources/testcase/smt/ce/types6.key index eeea799a303..d92695c2057 100644 --- a/key.core.testgen/src/test/resources/testcase/smt/ce/types6.key +++ b/key.core.testgen/src/test/resources/testcase/smt/ce/types6.key @@ -6,5 +6,5 @@ } \problem { -a != null -> (C3::instance(a) = TRUE -> I3::instance(a) = FALSE) +a != null -> (instance<[C3]>(a) = TRUE -> instance<[I3]>(a) = FALSE) } diff --git a/key.core.testgen/src/test/resources/testcase/smt/ce/types7.key b/key.core.testgen/src/test/resources/testcase/smt/ce/types7.key index 187237cf975..b0ba57dd5a3 100644 --- a/key.core.testgen/src/test/resources/testcase/smt/ce/types7.key +++ b/key.core.testgen/src/test/resources/testcase/smt/ce/types7.key @@ -6,5 +6,5 @@ } \problem { -I3::exactInstance(a) = FALSE +exactInstance<[I3]>(a) = FALSE } diff --git a/key.core.testgen/src/test/resources/testcase/smt/ce/types8.key b/key.core.testgen/src/test/resources/testcase/smt/ce/types8.key index dad195e2ab0..ae2a8b351ec 100644 --- a/key.core.testgen/src/test/resources/testcase/smt/ce/types8.key +++ b/key.core.testgen/src/test/resources/testcase/smt/ce/types8.key @@ -6,5 +6,5 @@ } \problem { -(C4::exactInstance(a) = TRUE -> C2::exactInstance(a) = FALSE) +(exactInstance<[C4]>(a) = TRUE -> exactInstance<[C2]>(a) = FALSE) } diff --git a/key.core.testgen/src/test/resources/testcase/smt/ce/types9.key b/key.core.testgen/src/test/resources/testcase/smt/ce/types9.key index 6a09ce33b51..922a2f3a84b 100644 --- a/key.core.testgen/src/test/resources/testcase/smt/ce/types9.key +++ b/key.core.testgen/src/test/resources/testcase/smt/ce/types9.key @@ -6,5 +6,5 @@ } \problem { -(C2::exactInstance(a) = TRUE -> C4::exactInstance(a) = FALSE) +(exactInstance<[C2]>(a) = TRUE -> exactInstance<[C4]>(a) = FALSE) } diff --git a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdGeneralRules.key b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdGeneralRules.key index ca57ca75441..276dbd2998c 100644 --- a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdGeneralRules.key +++ b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdGeneralRules.key @@ -118,10 +118,10 @@ wd_Type_Cast { \find( - wd(alpha::cast(t)) + wd(cast<[alpha]>(t)) ) \replacewith( - wd(t) & (alpha::instance(t) = TRUE) + wd(t) & (instance<[alpha]>(t) = TRUE) ) \heuristics(simplify) }; @@ -129,7 +129,7 @@ wd_Type_ExactInstance { \find( - wd(alpha::exactInstance(t)) + wd(exactInstance<[alpha]>(t)) ) \replacewith( wd(t) @@ -140,7 +140,7 @@ wd_Type_Instance { \find( - wd(alpha::instance(t)) + wd(instance<[alpha]>(t)) ) \replacewith( wd(t) diff --git a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdHeapRules.key b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdHeapRules.key index 55250ca5c77..97672f0bc96 100644 --- a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdHeapRules.key +++ b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdHeapRules.key @@ -40,7 +40,7 @@ wd_Heap_Reference_Created { \find( - wd(alpha::select(h, o, java.lang.Object::)) + wd(select<[alpha]>(h, o, java.lang.Object::)) ) \replacewith( wd(h) & wd(o) & wellFormed(h) & o != null @@ -51,7 +51,7 @@ wd_Heap_Reference { \find( - wd(alpha::select(h, o, f)) + wd(select<[alpha]>(h, o, f)) ) \varcond( \not \isArray(o), @@ -59,7 +59,7 @@ ) \replacewith( wd(h) & wd(o) & wd(f) & wellFormed(h) & o != null - & (f = java.lang.Object:: | boolean::select(h, o, java.lang.Object::) = TRUE) + & (f = java.lang.Object:: | select<[boolean]>(h, o, java.lang.Object::) = TRUE) ) \heuristics(simplify) }; @@ -67,7 +67,7 @@ wd_Heap_Reference_Static { \find( - wd(alpha::select(h, o, f)) + wd(select<[alpha]>(h, o, f)) ) \varcond( \not \isArray(o), @@ -82,14 +82,14 @@ wd_Heap_Reference_Array { \find( - wd(alpha::select(h, o, arr(i))) + wd(select<[alpha]>(h, o, arr(i))) ) \varcond( \isArray(o) ) \replacewith( wd(h) & wd(o) & wd(i) & wellFormed(h) & o != null - & boolean::select(h, o, java.lang.Object::) = TRUE + & select<[boolean]>(h, o, java.lang.Object::) = TRUE & leq(0, i) & lt(i, length(o)) ) \heuristics(simplify) @@ -124,7 +124,7 @@ ) \replacewith( wd(h) & wd(o) & wd(f) & wd(a) & wellFormed(h) & o != null - & boolean::select(h, o, java.lang.Object::) = TRUE + & select<[boolean]>(h, o, java.lang.Object::) = TRUE ) \heuristics(simplify) }; diff --git a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdLocSetRules.key b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdLocSetRules.key index c331867f47a..41c99c9bfd1 100644 --- a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdLocSetRules.key +++ b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdLocSetRules.key @@ -178,7 +178,7 @@ ) \replacewith( wd(h) & wd(o) & wd(l) & wellFormed(h) & o != null - & boolean::select(h, o, java.lang.Object::) = TRUE + & select<[boolean]>(h, o, java.lang.Object::) = TRUE ) \heuristics(simplify) }; @@ -193,7 +193,7 @@ ) \replacewith( wd(h) & wd(o) & wd(l) & wellFormed(h) & o != null - & boolean::select(h, o, java.lang.Object::) = TRUE + & select<[boolean]>(h, o, java.lang.Object::) = TRUE ) \heuristics(simplify) }; diff --git a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdSeqRules.key b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdSeqRules.key index b741ab67dad..dfd4429c191 100644 --- a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdSeqRules.key +++ b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdSeqRules.key @@ -57,7 +57,7 @@ wd_Seq_Get { \find( - wd(alpha::seqGet(s, n)) + wd(seqGet<[alpha]>(s, n)) ) \replacewith( wd(s) & wd(n) & leq(0, n) & lt(n, seqLen(s)) diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/smt-lemma-header.key b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/smt-lemma-header.key index 4169d34480d..116255f97e6 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/smt-lemma-header.key +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/smt-lemma-header.key @@ -1,13 +1,13 @@ /*\sorts { \generic G; } // This should actually be "(G)" instead of "(any)", but KeY can't parse that ... -\functions { G G::PATTERN(any); } +\functions { G PATTERN<[G]>(any); } \predicates { FPATTERN(\formula); } \rules { removePattern { \schemaVar \term any t; - \find(G::PATTERN(t)) + \find(PATTERN<[G]>(t)) \replacewith(t) \heuristics(simplify) }; diff --git a/key.core/src/test/resources/testcase/proofBundle/complexBundleGeneration/a/lang/String.key b/key.core/src/test/resources/testcase/proofBundle/complexBundleGeneration/a/lang/String.key index 72a70f71f0a..32e3cf95f1c 100644 --- a/key.core/src/test/resources/testcase/proofBundle/complexBundleGeneration/a/lang/String.key +++ b/key.core/src/test/resources/testcase/proofBundle/complexBundleGeneration/a/lang/String.key @@ -35,7 +35,7 @@ \<{ #catchAll(exc) { result = string.charAt(charIdx); - }}\>(exc = null & result = int::seqGet(strContent(string), charIdx)) + }}\>(exc = null & result = seqGet<[int]>(strContent(string), charIdx)) \modifiable empty }; @@ -51,7 +51,7 @@ #catchAll(exc) { result = string.charAt(charIdx); }}\>( exc != null - & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + & instance<[java.lang.IndexOutOfBoundsException]>(exc) = TRUE) \modifiable empty }; @@ -68,7 +68,7 @@ {heapAtPre := heap} \<{ result = calleeStringObj.concat(argumentStringObj); - }\>( boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + }\>( select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null & strContent(result) = seqConcat(strContent(calleeStringObj), strContent(argumentStringObj)) ) \modifiable empty @@ -95,7 +95,7 @@ #catchAll(exc) { result = calleeStringObj.concat(argumentStringObj); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -114,7 +114,7 @@ {heapAtPre := heap} \<{ result = string.substring(startIdx, endIdx); - }\>( boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + }\>( select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null & strContent(result) = seqSub(strContent(string),startIdx, endIdx)) \modifiable empty @@ -131,7 +131,7 @@ #catchAll(exc) { result = string.substring(startIdx, endIdx); }}\>( exc != null - & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + & instance<[java.lang.IndexOutOfBoundsException]>(exc) = TRUE) \modifiable empty }; @@ -145,7 +145,7 @@ {heapAtPre := heap} \<{ result = string.substring(startIdx); - }\>( boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + }\>( select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null & strContent(result) = seqSub( strContent(string), startIdx, seqLen(strContent(string)) ) ) \modifiable empty @@ -162,7 +162,7 @@ #catchAll(exc) { result = string.substring(startIdx); }}\>( exc != null - & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + & instance<[java.lang.IndexOutOfBoundsException]>(exc) = TRUE) \modifiable empty }; @@ -180,9 +180,9 @@ result = stringCallee.compareTo(stringArgument); }\>( result = \ifEx int i; ( i < seqLen(strContent(stringCallee)) & i < seqLen(strContent(stringArgument)) - & int::seqGet(strContent(stringCallee),i) - != int::seqGet(strContent(stringArgument),i) ) - \then (int::seqGet(strContent(stringCallee), i) - int::seqGet(strContent(stringArgument), i)) + & seqGet<[int]>(strContent(stringCallee),i) + != seqGet<[int]>(strContent(stringArgument),i) ) + \then (seqGet<[int]>(strContent(stringCallee), i) - seqGet<[int]>(strContent(stringArgument), i)) \else (seqLen(strContent(stringCallee)) - seqLen(strContent(stringArgument))) ) \modifiable empty }; @@ -198,7 +198,7 @@ #catchAll(exc) { result = stringCallee.compareTo(stringArgument); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -230,7 +230,7 @@ #catchAll(exc) { result = stringCallee.endsWith(stringArgument); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -261,7 +261,7 @@ #catchAll(exc) { result = stringCallee.startsWith(stringArgument); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -294,7 +294,7 @@ #catchAll(exc) { result = stringCallee.startsWith(stringArgument, startIdx); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -314,8 +314,8 @@ result = s.replace(c1,c2); }\>(\if (\exists int i; ( i >= 0 & i < seqLen(strContent(s)) - & int::seqGet(strContent(s), i) = c1)) - \then( boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & seqGet<[int]>(strContent(s), i) = c1)) + \then( select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null & strContent(result) = clReplace(strContent(s), c1, c2) ) \else ( result = s )) @@ -375,7 +375,7 @@ #catchAll (exc) { result = s.indexOf(t); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -402,7 +402,7 @@ #catchAll (exc) { result = s.indexOf(t,from); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -461,7 +461,7 @@ #catchAll (exc) { result = s.lastIndexOf(t); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -488,7 +488,7 @@ #catchAll (exc) { result = s.lastIndexOf(t, from); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -521,7 +521,7 @@ \<{ result = s.equals(obj); }\>( result = TRUE <-> ( obj != null - & java.lang.String::instance(obj) = TRUE + & instance<[java.lang.String]>(obj) = TRUE & strContent(s) = strContent((java.lang.String)obj) )) \modifiable empty }; @@ -558,8 +558,8 @@ result = java.lang.String.copyValueOf(data); }\>( seqLen(strContent(result)) = data.length & \forall int i; ((i >= 0 & i < data.length) - -> int::seqGet(strContent(result),i) = data[i] ) - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + -> seqGet<[int]>(strContent(result),i) = data[i] ) + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null ) \modifiable empty }; @@ -575,7 +575,7 @@ #catchAll (exc) { result = java.lang.String.copyValueOf(data); }}\> ( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -596,8 +596,8 @@ result = java.lang.String.copyValueOf(data, offset, count); }\>( seqLen(strContent(result)) = count & \forall int i; ((i >= 0 & i < count) - -> int::seqGet(strContent(result), i) = data[i+offset] ) - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + -> seqGet<[int]>(strContent(result), i) = data[i+offset] ) + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null ) \modifiable empty }; @@ -618,7 +618,7 @@ #catchAll (exc) { result = java.lang.String.copyValueOf (data,offset,count); }}\>( exc != null - & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + & instance<[java.lang.IndexOutOfBoundsException]>(exc) = TRUE) \modifiable empty }; @@ -634,7 +634,7 @@ #catchAll (exc) { result = java.lang.String.copyValueOf(data, offset, count); }}\> ( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -660,11 +660,11 @@ \<{ s.getChars(srcBegin, srcEnd, dst, dstBegin); }\>(\forall int i; ( ((i >= 0 & i < (srcEnd - srcBegin)) - -> int::seqGet(strContent(s), srcBegin + i) = dst[dstBegin + i]) + -> seqGet<[int]>(strContent(s), srcBegin + i) = dst[dstBegin + i]) & ((i >= 0 & i < dstBegin) - -> dst[i] = int::select(heapAtPre, dst, arr(i))) + -> dst[i] = select<[int]>(heapAtPre, dst, arr(i))) & ((i >= dstBegin + (srcEnd - srcBegin) & i < dst.length) - -> dst[i] = int::select(heapAtPre, dst, arr(i))) )) + -> dst[i] = select<[int]>(heapAtPre, dst, arr(i))) )) \modifiable allFields(dst) }; @@ -686,7 +686,7 @@ #catchAll (exc) { s.getChars(srcBegin, srcEnd, dst, dstBegin); }}\>( exc != null - & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE) + & instance<[java.lang.IndexOutOfBoundsException]>(exc) = TRUE) \modifiable empty }; @@ -702,7 +702,7 @@ #catchAll (exc) { s.getChars(srcBegin, srcEnd, dst, dstBegin); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE) + & instance<[java.lang.NullPointerException]>(exc) = TRUE) \modifiable empty }; @@ -723,8 +723,8 @@ }\>( result != null & result.length = seqLen(strContent(s)) & \forall int i; ((i >= 0 & i < seqLen(strContent(s))) - -> int::seqGet(strContent(s), i) = result[i]) - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE) + -> seqGet<[int]>(strContent(s), i) = result[i]) + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE) \modifiable empty }; @@ -745,7 +745,7 @@ }\>(strContent(result) = \if (bVal = TRUE) \then ( "true" ) \else ( "false" ) - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null ) \modifiable empty }; @@ -761,7 +761,7 @@ \<{ result = java.lang.String.valueOf(charVal); }\>( strContent(result) = seqSingleton(charVal) - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null ) \modifiable empty }; @@ -777,9 +777,9 @@ \<{ result = java.lang.String.valueOf(data); }\>( (\forall int i; ((i >= 0 & i < data.length) - -> int::seqGet(strContent(result), i) = data[i])) + -> seqGet<[int]>(strContent(result), i) = data[i])) & seqLen(strContent(result)) = data.length - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null ) \modifiable empty }; @@ -795,7 +795,7 @@ #catchAll (exc) { result = java.lang.String.valueOf(data); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE ) + & instance<[java.lang.NullPointerException]>(exc) = TRUE ) \modifiable empty }; @@ -810,7 +810,7 @@ \<{ result = java.lang.String.valueOf(iVal); }\>( strContent(result) = clRemoveZeros(clTranslateInt(iVal)) - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null ) \modifiable empty }; @@ -826,7 +826,7 @@ \<{ result = java.lang.String.valueOf(lVal); }\>( strContent(result) = clRemoveZeros(clTranslateInt(lVal)) - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null ) \modifiable empty }; @@ -845,9 +845,9 @@ \<{ result = java.lang.String.valueOf(data, offset, count); }\>( (\forall int i; ((i >= 0 & i < count) - -> int::seqGet(strContent(result), i) = data[offset + i])) + -> seqGet<[int]>(strContent(result), i) = data[offset + i])) & seqLen(strContent(result)) = count - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null ) \modifiable empty }; @@ -866,7 +866,7 @@ #catchAll (exc) { result = java.lang.String.valueOf(data, offset, count); }}\>( exc != null - & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE ) + & instance<[java.lang.IndexOutOfBoundsException]>(exc) = TRUE ) \modifiable empty }; @@ -882,7 +882,7 @@ #catchAll (exc) { result = java.lang.String.valueOf(data, offset, count); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE ) + & instance<[java.lang.NullPointerException]>(exc) = TRUE ) \modifiable empty }; @@ -897,7 +897,7 @@ \<{ result = java.lang.String.valueOf(obj); }\>( strContent(result) = "null" - & boolean::select(heapAtPre, result, java.lang.Object::) = FALSE + & select<[boolean]>(heapAtPre, result, java.lang.Object::) = FALSE & result != null ) \modifiable empty }; @@ -944,7 +944,7 @@ {heapAtPre:=heap}\<{ result = s.intern(); }\>(result != null & result = strPool(strContent(s)) & - boolean::select(heap, result, java.lang.Object::) = TRUE) + select<[boolean]>(heap, result, java.lang.Object::) = TRUE) \modifiable false }; @@ -973,7 +973,7 @@ s = new String(v); }\>( seqLen ( strContent ( s ) ) = v.length & \forall int i; ((i >= 0 & i < v.length) - -> int::seqGet(strContent(s), i) = v[i]) ) + -> seqGet<[int]>(strContent(s), i) = v[i]) ) \modifiable empty }; @@ -988,7 +988,7 @@ #catchAll (exc) { s = new String(v); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE ) + & instance<[java.lang.NullPointerException]>(exc) = TRUE ) \modifiable empty }; @@ -1004,7 +1004,7 @@ s = new String(v, offset, count); }\>( seqLen(strContent(s)) = count & \forall int i; ((i >= 0 & i < count) - -> int::seqGet(strContent(s), i) = v[offset+i]) ) + -> seqGet<[int]>(strContent(s), i) = v[offset+i]) ) \modifiable empty }; @@ -1021,7 +1021,7 @@ #catchAll(exc) { s = new String(v, offset, count); }}\>( exc != null - & java.lang.IndexOutOfBoundsException::instance(exc) = TRUE ) + & instance<[java.lang.IndexOutOfBoundsException]>(exc) = TRUE ) \modifiable empty }; @@ -1037,7 +1037,7 @@ #catchAll(exc) { s = new String(v, offset, count); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE ) + & instance<[java.lang.NullPointerException]>(exc) = TRUE ) \modifiable empty }; @@ -1062,7 +1062,7 @@ #catchAll(exc) { s = new String(t); }}\>( exc != null - & java.lang.NullPointerException::instance(exc) = TRUE ) + & instance<[java.lang.NullPointerException]>(exc) = TRUE ) \modifiable empty }; } @@ -1119,7 +1119,7 @@ \replacewith ({ #v := strPool(#slit) } \modality{#normalassign}{.. ...}\endmodality(post)) - \add(strPool(#slit) != null, boolean::select(heap, strPool(#slit), java.lang.Object::) = TRUE ==>) + \add(strPool(#slit) != null, select<[boolean]>(heap, strPool(#slit), java.lang.Object::) = TRUE ==>) \heuristics (simplify_prog, simplify_prog_subset) }; diff --git a/key.core/src/test/resources/testcase/smt/tacletTranslation/castOperators.key b/key.core/src/test/resources/testcase/smt/tacletTranslation/castOperators.key index 7544c267967..3d05a46a75b 100644 --- a/key.core/src/test/resources/testcase/smt/tacletTranslation/castOperators.key +++ b/key.core/src/test/resources/testcase/smt/tacletTranslation/castOperators.key @@ -31,8 +31,8 @@ Options: f = (MySort) f f != (MySort) g & - & (java.util.List::instance(o)=TRUE - -> java.util.Collection::instance(o)=TRUE) + & (instance<[java.util.List]>(o)=TRUE + -> instance<[java.util.Collection]>(o)=TRUE) diff --git a/key.core/src/test/resources/testcase/smt/tacletTranslation/complexProblem.key b/key.core/src/test/resources/testcase/smt/tacletTranslation/complexProblem.key index 228f39b93c9..7c5894c3bb1 100644 --- a/key.core/src/test/resources/testcase/smt/tacletTranslation/complexProblem.key +++ b/key.core/src/test/resources/testcase/smt/tacletTranslation/complexProblem.key @@ -45,7 +45,7 @@ Options: & ((A.=TRUE & wellFormed(heap) & !(A.F@(Test)=null))-> (A.F.F@(Test).=TRUE | A.F.F@(Test)=null)) & - (java.lang.Object::exactInstance(o) = TRUE & wellFormed(heap) & o.=TRUE -> + (exactInstance<[java.lang.Object]>(o) = TRUE & wellFormed(heap) & o.=TRUE -> \exists int iv; java.lang.Object::(iv) = o) & (java.lang.Object::(5) = o & wellFormed(heap) & o.=TRUE -> diff --git a/key.core/src/test/resources/testcase/smt/tacletTranslation/complexProblem2.key b/key.core/src/test/resources/testcase/smt/tacletTranslation/complexProblem2.key index 08dc77b0051..e61d0553f0f 100644 --- a/key.core/src/test/resources/testcase/smt/tacletTranslation/complexProblem2.key +++ b/key.core/src/test/resources/testcase/smt/tacletTranslation/complexProblem2.key @@ -38,8 +38,8 @@ Options: & (wellFormed(heap) & java.lang.Object.=TRUE -> java.lang.Object.=TRUE) // (5) - & (java.util.List::instance(o)=TRUE - -> java.util.Collection::instance(o)=TRUE) // (6) + & (instance<[java.util.List]>(o)=TRUE + -> instance<[java.util.Collection]>(o)=TRUE) // (6) & (wellFormed(heap) -> java.lang.Object. >=0) // (7) From 3acacc7f5ae44319d903b5f58924e1693a9bb276 Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 16 Mar 2026 18:53:08 +0100 Subject: [PATCH 07/37] Replace more sort dep fns --- .../test/resources/testcase/smt/ce/types3.key | 2 +- .../evaluateArgs.key | 2 +- .../evaluateArgsConst.key | 2 +- .../simpleArrayAssignment_AIOOB.key | 2 +- .../simpleArrayAssignment_ASE.key | 4 +-- .../simpleArrayAssignment_ASE_2.key | 4 +-- .../simpleArrayAssignment_NPE.key | 2 +- .../simpleAssignmentNPE.key | 2 +- .../unfoldLeftArrayAssignment_NPE.key | 2 +- .../unfoldLeftArrayAssignment_NPE_2.key | 2 +- .../unfoldLeftArrayAssignment_NPE_3.key | 2 +- .../unfoldLeftAssignment_NPE.key | 2 +- .../unfoldLeftAssignment_NPE_2.key | 2 +- ...nfoldLeftThenUnfoldRightAssignment_NPE.key | 2 +- ...oldLeftThenUnfoldRightAssignment_NPE_2.key | 2 +- ...foldLeftThenUnfoldRightThrowNPEOnRight.key | 2 +- .../heap/simple/anonymise_datagroup.key | 4 +-- .../heap/simple/constructor_contracts.key | 2 +- key.ui/examples/heap/simple/dependencies.key | 2 +- .../heap/simple/dependency_contracts.key | 8 +++--- .../heap/simple/invariant_preservation.key | 8 +++--- key.ui/examples/heap/simple/loop1.key | 2 +- key.ui/examples/heap/simple/loop2.key | 4 +-- key.ui/examples/heap/simple/modifiable.key | 12 ++++----- .../heap/simple/modifiable_datagroup.key | 2 +- .../heap/simple/operation_contracts.key | 10 +++---- key.ui/examples/heap/simple/select_store.key | 2 +- key.ui/examples/heap/simple/seq.key | 6 ++--- .../heap/vstte12_03_RingBuffer/problem3.key | 6 ++--- .../examples/smt/casestudy/SumAndMaxProof.key | 4 +-- .../smt/taclettranslation/castOperators.key | 4 +-- .../smt/taclettranslation/complexProblem.key | 2 +- .../smt/taclettranslation/complexProblem2.key | 4 +-- .../BookExamples/02FirstOrderLogic/Ex2.56.key | 2 +- .../BookExamples/02FirstOrderLogic/Ex2.57.key | 2 +- .../instanceCreation/instanceof.key | 6 ++--- ...facesAndAbstractClassesHaveNoInstances.key | 8 +++--- .../java_dl/DLContractChooser/example.key | 4 +-- .../java_dl/jml-information-flow.key | 4 +-- .../objectOfErroneousClass.key | 26 +++++++++---------- .../examples/standard_key/strings/charAt0.key | 2 +- .../examples/standard_key/strings/charAt1.key | 2 +- .../standard_key/strings/replace1.key | 2 +- .../standard_key/strings/stringIntern.key | 2 +- .../examples/standard_key/types/disjoint.key | 4 +-- .../standard_key/types/finalTypes.key | 6 ++--- .../types/finalTypes_unprovable.key | 2 +- key.ui/examples/theories/map.key | 16 ++++++------ 48 files changed, 103 insertions(+), 103 deletions(-) diff --git a/key.core.testgen/src/test/resources/testcase/smt/ce/types3.key b/key.core.testgen/src/test/resources/testcase/smt/ce/types3.key index 7d9fd927f86..bb49799d2f6 100644 --- a/key.core.testgen/src/test/resources/testcase/smt/ce/types3.key +++ b/key.core.testgen/src/test/resources/testcase/smt/ce/types3.key @@ -6,5 +6,5 @@ } \problem { -a != null -> (C1::instance(a) = TRUE -> I2::instance(a) = FALSE) +a != null -> (instance<[C1]>(a) = TRUE -> instance<[I2]>(a) = FALSE) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_12_4_Method_Invocation/evaluateArgs.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_12_4_Method_Invocation/evaluateArgs.key index 233944eda41..0a0c06a51ff 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_12_4_Method_Invocation/evaluateArgs.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_12_4_Method_Invocation/evaluateArgs.key @@ -8,5 +8,5 @@ \problem { // m is called with arguments 1,3 - a1 != null & a1.=TRUE & wellFormed(heap) -> \<{ i = 1; j = a1.m(i++, ++i); }\> (j = \if (B::instance(a1) = TRUE) \then (3) \else (4)) + a1 != null & a1.=TRUE & wellFormed(heap) -> \<{ i = 1; j = a1.m(i++, ++i); }\> (j = \if (instance<[B]>(a1) = TRUE) \then (3) \else (4)) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_12_4_Method_Invocation/evaluateArgsConst.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_12_4_Method_Invocation/evaluateArgsConst.key index a224b9e2ff3..5f12123ecde 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_12_4_Method_Invocation/evaluateArgsConst.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_12_4_Method_Invocation/evaluateArgsConst.key @@ -7,5 +7,5 @@ } \problem { - a1 != null & a1.=TRUE & wellFormed(heap) -> \<{ i = 1; j = a1.m(1, 3); }\> (j = \if (B::instance(a1) = TRUE) \then (3) \else (4)) + a1 != null & a1.=TRUE & wellFormed(heap) -> \<{ i = 1; j = a1.m(1, 3); }\> (j = \if (instance<[B]>(a1) = TRUE) \then (3) \else (4)) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_AIOOB.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_AIOOB.key index 6caffb82e68..ef9038d9227 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_AIOOB.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_AIOOB.key @@ -27,5 +27,5 @@ } catch (ArrayStoreException e) { exc = e; } - }\> ( exc != null & java.lang.ArrayIndexOutOfBoundsException::instance(exc) = TRUE & i = 0) + }\> ( exc != null & instance<[java.lang.ArrayIndexOutOfBoundsException]>(exc) = TRUE & i = 0) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_ASE.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_ASE.key index 54752f3f2b2..f805219ce7a 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_ASE.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_ASE.key @@ -16,7 +16,7 @@ // when accessing array elements null check comes before index out of bounds check before array store validity check \problem { - o != null & o.=TRUE & java.lang.Object::exactInstance(o) = TRUE & wellFormed(heap) -> + o != null & o.=TRUE & exactInstance<[java.lang.Object]>(o) = TRUE & wellFormed(heap) -> \<{ a = new String[10]; exc = null; @@ -31,5 +31,5 @@ } catch (ArrayStoreException e) { exc = e; } - }\> ( exc != null & java.lang.ArrayStoreException::instance(exc) = TRUE & i = 0 & a[0] = null) + }\> ( exc != null & instance<[java.lang.ArrayStoreException]>(exc) = TRUE & i = 0 & a[0] = null) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_ASE_2.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_ASE_2.key index 855ab230055..41e4cbd0df9 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_ASE_2.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_ASE_2.key @@ -16,7 +16,7 @@ // when accessing array elements null check comes before index out of bounds check before array store validity check \problem { - o != null & o.=TRUE & java.lang.Object::exactInstance(o) = TRUE & wellFormed(heap) -> + o != null & o.=TRUE & exactInstance<[java.lang.Object]>(o) = TRUE & wellFormed(heap) -> \<{ a = new String[10]; exc = null; @@ -31,5 +31,5 @@ } catch (ArrayStoreException e) { exc = e; } - }\> ( exc != null & java.lang.ArrayIndexOutOfBoundsException::instance(exc) = TRUE & i = 0 & a[0] = null) + }\> ( exc != null & instance<[java.lang.ArrayIndexOutOfBoundsException]>(exc) = TRUE & i = 0 & a[0] = null) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_NPE.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_NPE.key index 0574eaff365..cd14d5095a3 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_NPE.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleArrayAssignment_NPE.key @@ -29,5 +29,5 @@ } catch (ArrayStoreException e) { exc = e; } - }\> ( exc != null & NullPointerException::instance(exc) = TRUE & i = 0) + }\> ( exc != null & instance<[NullPointerException]>(exc) = TRUE & i = 0) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleAssignmentNPE.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleAssignmentNPE.key index b01311731ce..544f7aa03e5 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleAssignmentNPE.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/simpleAssignmentNPE.key @@ -17,6 +17,6 @@ \<{ exc = null; try { l.next = null; } catch (Exception e) { exc = e; } - }\> ( exc != null & NullPointerException::instance(exc) = TRUE ) + }\> ( exc != null & instance<[NullPointerException]>(exc) = TRUE ) } \ No newline at end of file diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE.key index 8527fa627af..3af0c5eb69c 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE.key @@ -29,5 +29,5 @@ } catch (ArrayStoreException e) { exc = e; } - }\> ( exc != null & java.lang.NullPointerException::instance(exc) = TRUE & i = 0) + }\> ( exc != null & instance<[java.lang.NullPointerException]>(exc) = TRUE & i = 0) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE_2.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE_2.key index 6e8022a9b12..db3f3b43fe9 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE_2.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE_2.key @@ -30,5 +30,5 @@ } catch (ArrayStoreException e) { exc = e; } - }\> ( exc != null & java.lang.NullPointerException::instance(exc) = TRUE & i = 1) + }\> ( exc != null & instance<[java.lang.NullPointerException]>(exc) = TRUE & i = 1) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE_3.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE_3.key index 0102c386ada..340eb0ea99c 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE_3.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftArrayAssignment_NPE_3.key @@ -30,5 +30,5 @@ } catch (ArrayStoreException e) { exc = e; } - }\> ( exc != null & java.lang.NullPointerException::instance(exc) = TRUE & i = 1) + }\> ( exc != null & instance<[java.lang.NullPointerException]>(exc) = TRUE & i = 1) } diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftAssignment_NPE.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftAssignment_NPE.key index 4d6df581ac8..49065cf0980 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftAssignment_NPE.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftAssignment_NPE.key @@ -19,5 +19,5 @@ \<{ exc = null; try { (k=l.next).next = null; } catch (NullPointerException e) { exc = e; } - }\> ( exc != null & NullPointerException::instance(exc) = TRUE & k = null ) + }\> ( exc != null & instance<[NullPointerException]>(exc) = TRUE & k = null ) } \ No newline at end of file diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftAssignment_NPE_2.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftAssignment_NPE_2.key index c2090841af6..f49606368ad 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftAssignment_NPE_2.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftAssignment_NPE_2.key @@ -17,5 +17,5 @@ \<{ exc = null; try { (k=l.next).next = null; } catch (NullPointerException e) { exc = e; } - }\> ( exc != null & NullPointerException::instance(exc) = TRUE & k = null ) + }\> ( exc != null & instance<[NullPointerException]>(exc) = TRUE & k = null ) } \ No newline at end of file diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightAssignment_NPE.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightAssignment_NPE.key index dbb5cc0c404..3a2f6e750a7 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightAssignment_NPE.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightAssignment_NPE.key @@ -18,5 +18,5 @@ \<{ exc = null; i = 0; try { l.next.size = ++i; } catch (NullPointerException e) { exc = e; } - }\> ( exc != null & NullPointerException::instance(exc) = TRUE & i = 1) + }\> ( exc != null & instance<[NullPointerException]>(exc) = TRUE & i = 1) } \ No newline at end of file diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightAssignment_NPE_2.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightAssignment_NPE_2.key index a4a02c159f2..98fe86de0b7 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightAssignment_NPE_2.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightAssignment_NPE_2.key @@ -18,5 +18,5 @@ \<{ exc = null; i = 0; try { l.next.size = ++i; } catch (NullPointerException e) { exc = e; } - }\> ( exc != null & NullPointerException::instance(exc) = TRUE & i = 0) + }\> ( exc != null & instance<[NullPointerException]>(exc) = TRUE & i = 0) } \ No newline at end of file diff --git a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightThrowNPEOnRight.key b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightThrowNPEOnRight.key index 316ff5ba680..40f86558498 100644 --- a/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightThrowNPEOnRight.key +++ b/key.ui/examples/JLS_Conformance_Tests/JLS_15_26_Assignment/unfoldLeftThenUnfoldRightThrowNPEOnRight.key @@ -24,5 +24,5 @@ } catch (NullPointerException e) { exc = e; } - }\> ( exc != null & NullPointerException::instance(exc) = TRUE & i = 0 & m != null & l.next.next = null) + }\> ( exc != null & instance<[NullPointerException]>(exc) = TRUE & i = 0 & m != null & l.next.next = null) } diff --git a/key.ui/examples/heap/simple/anonymise_datagroup.key b/key.ui/examples/heap/simple/anonymise_datagroup.key index 57785fcd29f..d448259ccbd 100644 --- a/key.ui/examples/heap/simple/anonymise_datagroup.key +++ b/key.ui/examples/heap/simple/anonymise_datagroup.key @@ -15,12 +15,12 @@ //where "o2.*" is disjoint from the data group o. = TRUE - & int::select(heap, o, f) = 33 + & select<[int]>(heap, o, f) = 33 & disjoint(allFields(o), dataGroup(heap)) & heap = heapAtPre & modAtPre = dataGroup(heap) -> - ({heap := anon(heap, modAtPre, anonHeap)} int::select(heap, o, f)) = 33 + ({heap := anon(heap, modAtPre, anonHeap)} select<[int]>(heap, o, f)) = 33 } diff --git a/key.ui/examples/heap/simple/constructor_contracts.key b/key.ui/examples/heap/simple/constructor_contracts.key index 26f9c74f643..0f3c4848666 100644 --- a/key.ui/examples/heap/simple/constructor_contracts.key +++ b/key.ui/examples/heap/simple/constructor_contracts.key @@ -65,6 +65,6 @@ & \forall java.lang.Object o; \forall Field f; ( elementOf(o, f, freshLocs(heapAtPre)) - | any::select(heap, o, f) = any::select(heapAtPre, o, f))) + | select<[any]>(heap, o, f) = select<[any]>(heapAtPre, o, f))) } diff --git a/key.ui/examples/heap/simple/dependencies.key b/key.ui/examples/heap/simple/dependencies.key index 5ac857e541d..7cdfc3027d0 100644 --- a/key.ui/examples/heap/simple/dependencies.key +++ b/key.ui/examples/heap/simple/dependencies.key @@ -14,7 +14,7 @@ \forall Heap h; \forall Object o; ( \forall Object o2; \forall Field f; ( elementOf(o2, f, dataGroup(heap, o)) - -> any::select(h, o2, f) = any::select(heap, o2, f) + -> select<[any]>(h, o2, f) = select<[any]>(heap, o2, f) ) -> modelField(h, o) = modelField(heap, o) diff --git a/key.ui/examples/heap/simple/dependency_contracts.key b/key.ui/examples/heap/simple/dependency_contracts.key index 3568eb8c31e..f693c6e6745 100644 --- a/key.ui/examples/heap/simple/dependency_contracts.key +++ b/key.ui/examples/heap/simple/dependency_contracts.key @@ -51,11 +51,11 @@ \problem { wellFormed(heap) & !self = null - & boolean::select(heap, + & select<[boolean]>(heap, self, java.lang.Object::) = TRUE - & MyClient::exactInstance(self) = TRUE + & exactInstance<[MyClient]>(self) = TRUE & java.lang.Object::(heap, self) -> {heapAtPre:=heap} \[{ @@ -74,7 +74,7 @@ MyClient::$mc), singleton(self, MyClient::$i)), freshLocs(heapAtPre))) - | any::select(heap, o, f) - = any::select(heapAtPre, o, f))) + | select<[any]>(heap, o, f) + = select<[any]>(heapAtPre, o, f))) } diff --git a/key.ui/examples/heap/simple/invariant_preservation.key b/key.ui/examples/heap/simple/invariant_preservation.key index 827c233400a..42f0209beb1 100644 --- a/key.ui/examples/heap/simple/invariant_preservation.key +++ b/key.ui/examples/heap/simple/invariant_preservation.key @@ -49,11 +49,11 @@ \problem { wellFormed(heap) & !self = null - & boolean::select(heap, + & select<[boolean]>(heap, self, java.lang.Object::) = TRUE - & MyClient::exactInstance(self) = TRUE + & exactInstance<[MyClient]>(self) = TRUE & java.lang.Object::(heap, self) -> {heapAtPre:=heap} \[{ @@ -70,7 +70,7 @@ ( elementOf(o, f, union(singleton(self, MyClient::$i), freshLocs(heapAtPre))) - | any::select(heap, o, f) - = any::select(heapAtPre, o, f))) + | select<[any]>(heap, o, f) + = select<[any]>(heapAtPre, o, f))) } diff --git a/key.ui/examples/heap/simple/loop1.key b/key.ui/examples/heap/simple/loop1.key index 2ab9921344c..590538a673d 100644 --- a/key.ui/examples/heap/simple/loop1.key +++ b/key.ui/examples/heap/simple/loop1.key @@ -20,5 +20,5 @@ self.attr = 27 & \forall Object o; \forall Field f; ((o = self & f = MyClass::$attr) - | any::select(heap,o,f) = any::select(heapAtPre,o,f)) + | select<[any]>(heap,o,f) = select<[any]>(heapAtPre,o,f)) } diff --git a/key.ui/examples/heap/simple/loop2.key b/key.ui/examples/heap/simple/loop2.key index 2aa8215e480..8ccded76603 100644 --- a/key.ui/examples/heap/simple/loop2.key +++ b/key.ui/examples/heap/simple/loop2.key @@ -26,7 +26,7 @@ -> \<{self.loop2(a)@MyClass;}\> - \forall int x; (0 <= x & x < a.length -> a[x] = int::select(heapAtPre,self,MyClass::$attr2)) + \forall int x; (0 <= x & x < a.length -> a[x] = select<[int]>(heapAtPre,self,MyClass::$attr2)) & \forall Object o; \forall Field f; ((o = a & \exists int i; f = arr(i)) - | any::select(heap,o,f) = any::select(heapAtPre,o,f)) + | select<[any]>(heap,o,f) = select<[any]>(heapAtPre,o,f)) } diff --git a/key.ui/examples/heap/simple/modifiable.key b/key.ui/examples/heap/simple/modifiable.key index cd5ff748c72..b962afd7ccf 100644 --- a/key.ui/examples/heap/simple/modifiable.key +++ b/key.ui/examples/heap/simple/modifiable.key @@ -15,8 +15,8 @@ \problem { //Assignable clause is {self.next, b.next.next, b.next.next.next, self.attr} modAtPre = union(singleton(self, next), - union(singleton(Object::select(heap,b,next), next), - union(singleton(Object::select(heap,Object::select(heap,b,next),next), next), + union(singleton(select<[Object]>(heap,b,next), next), + union(singleton(select<[Object]>(heap,select<[Object]>(heap,b,next),next), next), singleton(self, attr)))) //atPre definitions @@ -27,14 +27,14 @@ // self.next = b.next.next; // b.next.next = b; // self.attr++; - {heap := store(heap, self, next, Object::select(heap, Object::select(heap,b,next), next))} - {heap := store(heap, Object::select(heap, b, next), next, b)} - {heap := store(heap, self, attr, int::select(heap, self, attr) + 1)} + {heap := store(heap, self, next, select<[Object]>(heap, select<[Object]>(heap,b,next), next))} + {heap := store(heap, select<[Object]>(heap, b, next), next, b)} + {heap := store(heap, self, attr, select<[int]>(heap, self, attr) + 1)} //all heap locations must either be unchanged or be in the assignable clause (\forall Object o; \forall Field g; ( - any::select(heap, o, g) = any::select(heapAtPre, o, g) + select<[any]>(heap, o, g) = select<[any]>(heapAtPre, o, g) | elementOf(o, g, modAtPre) )) } diff --git a/key.ui/examples/heap/simple/modifiable_datagroup.key b/key.ui/examples/heap/simple/modifiable_datagroup.key index 2d50a068ae4..20ad0e5dd3b 100644 --- a/key.ui/examples/heap/simple/modifiable_datagroup.key +++ b/key.ui/examples/heap/simple/modifiable_datagroup.key @@ -30,7 +30,7 @@ //all heap locations must either be unchanged or be in the assignable clause (\forall Object o; \forall Field g; ( - any::select(heap, o, g) = any::select(heapAtPre, o, g) + select<[any]>(heap, o, g) = select<[any]>(heapAtPre, o, g) | elementOf(o, g, modAtPre) )) } diff --git a/key.ui/examples/heap/simple/operation_contracts.key b/key.ui/examples/heap/simple/operation_contracts.key index 651ba09f63a..6e8eccab5f5 100644 --- a/key.ui/examples/heap/simple/operation_contracts.key +++ b/key.ui/examples/heap/simple/operation_contracts.key @@ -51,11 +51,11 @@ \problem { wellFormed(heap) & !self = null - & boolean::select(heap, + & select<[boolean]>(heap, self, java.lang.Object::) = TRUE - & MyClient::exactInstance(self) = TRUE + & exactInstance<[MyClient]>(self) = TRUE & java.lang.Object::(heap, self) -> {heapAtPre:=heap} \[{ @@ -73,11 +73,11 @@ ( elementOf(o, f, union(union(singleton(self, MyClient::$i), MyClass::$footprint(heapAtPre, - MyClass::select(heapAtPre, + select<[MyClass]>(heapAtPre, self, MyClient::$mc))), freshLocs(heapAtPre))) - | any::select(heap, o, f) - = any::select(heapAtPre, o, f))) + | select<[any]>(heap, o, f) + = select<[any]>(heapAtPre, o, f))) } diff --git a/key.ui/examples/heap/simple/select_store.key b/key.ui/examples/heap/simple/select_store.key index 5e3fac7e0bf..714ea9dc709 100644 --- a/key.ui/examples/heap/simple/select_store.key +++ b/key.ui/examples/heap/simple/select_store.key @@ -8,5 +8,5 @@ } \problem { - {heap:=store(heap,o,f,1)} {heap:=store(heap,o,g,2)} \[{}\] int::select(heap,o,f)=1 + {heap:=store(heap,o,f,1)} {heap:=store(heap,o,g,2)} \[{}\] select<[int]>(heap,o,f)=1 } diff --git a/key.ui/examples/heap/simple/seq.key b/key.ui/examples/heap/simple/seq.key index bcbc99bd034..4d6ed806b75 100644 --- a/key.ui/examples/heap/simple/seq.key +++ b/key.ui/examples/heap/simple/seq.key @@ -8,11 +8,11 @@ s1 = seqConcat(seqConcat(seqSingleton(54), seqSingleton(4)), seqSingleton(100)) & s2 = seqConcat(seqEmpty, seqSub(s1, 1, 3)) -> - \forall int i; (0 <= i & i < seqLen(s1) -> int::seqGet(s1, i) > 0) - & int::seqGet(s1, 1) = 4 + \forall int i; (0 <= i & i < seqLen(s1) -> seqGet<[int]>(s1, i) > 0) + & seqGet<[int]>(s1, 1) = 4 & seqLen(s1) = 3 & seqLen(s2) = 2 - & int::seqGet(s2, 1) = 100 + & seqGet<[int]>(s2, 1) = 100 & seqReverse(s1) = seqConcat(seqConcat(seqSingleton(100), seqSingleton(4)), seqSingleton(54)) & seqConcat(seqEmpty, seqReverse(seqEmpty)) = seqEmpty & \forall Seq s; (seqSub(s, 0, seqLen(s)) = s) diff --git a/key.ui/examples/heap/vstte12_03_RingBuffer/problem3.key b/key.ui/examples/heap/vstte12_03_RingBuffer/problem3.key index 7eae38061e0..4423521453d 100644 --- a/key.ui/examples/heap/vstte12_03_RingBuffer/problem3.key +++ b/key.ui/examples/heap/vstte12_03_RingBuffer/problem3.key @@ -7,11 +7,11 @@ \schemaVar \term Heap h; \schemaVar \term int x; - \assumes (RingBuffer::exactInstance(r)=TRUE ==>) + \assumes (exactInstance<[RingBuffer]>(r)=TRUE ==>) \find(RingBuffer::modulo(h, r, x)) - \replacewith(\if(x < length(int[]::select(h,r,RingBuffer::$data))) + \replacewith(\if(x < length(select<[int[]]>(h,r,RingBuffer::$data))) \then(x) - \else(x-length(int[]::select(h,r,RingBuffer::$data)))) + \else(x-length(select<[int[]]>(h,r,RingBuffer::$data)))) \heuristics ( simplify ) }; diff --git a/key.ui/examples/smt/casestudy/SumAndMaxProof.key b/key.ui/examples/smt/casestudy/SumAndMaxProof.key index 9c8ac751165..409ba7fecc4 100644 --- a/key.ui/examples/smt/casestudy/SumAndMaxProof.key +++ b/key.ui/examples/smt/casestudy/SumAndMaxProof.key @@ -584,7 +584,7 @@ (rule "mul_literals" (formula "17") (term "0,1,0")) (rule "polySimp_elimOne" (formula "17") (term "1,1,0")) (rule "ifthenelse_split_for" (formula "17")) - (branch "int::select(anon_heap_loop, self, max) <= -1 + a[k_0] TRUE" + (branch "select<[int]>(anon_heap_loop, self, max) <= -1 + a[k_0] TRUE" (rule "ifSplit" (formula "18")) (branch "if x_7 true" (builtin "One Step Simplification" (formula "1")) @@ -1636,7 +1636,7 @@ (rule "closeFalse" (formula "1")) ) ) - (branch "int::select(anon_heap_loop, self, max) <= -1 + a[k_0] FALSE" + (branch "select<[int]>(anon_heap_loop, self, max) <= -1 + a[k_0] FALSE" (rule "inEqSimp_leqRight" (formula "17")) (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) (rule "mul_literals" (formula "1") (term "0,1,0,0")) diff --git a/key.ui/examples/smt/taclettranslation/castOperators.key b/key.ui/examples/smt/taclettranslation/castOperators.key index 816070929a2..cd9f54f2ed1 100644 --- a/key.ui/examples/smt/taclettranslation/castOperators.key +++ b/key.ui/examples/smt/taclettranslation/castOperators.key @@ -29,8 +29,8 @@ Options: f = (MySort) f - & (java.util.List::instance(o)=TRUE - -> java.util.Collection::instance(o)=TRUE) + & (instance<[java.util.List]>(o)=TRUE + -> instance<[java.util.Collection]>(o)=TRUE) diff --git a/key.ui/examples/smt/taclettranslation/complexProblem.key b/key.ui/examples/smt/taclettranslation/complexProblem.key index 228f39b93c9..7c5894c3bb1 100644 --- a/key.ui/examples/smt/taclettranslation/complexProblem.key +++ b/key.ui/examples/smt/taclettranslation/complexProblem.key @@ -45,7 +45,7 @@ Options: & ((A.=TRUE & wellFormed(heap) & !(A.F@(Test)=null))-> (A.F.F@(Test).=TRUE | A.F.F@(Test)=null)) & - (java.lang.Object::exactInstance(o) = TRUE & wellFormed(heap) & o.=TRUE -> + (exactInstance<[java.lang.Object]>(o) = TRUE & wellFormed(heap) & o.=TRUE -> \exists int iv; java.lang.Object::(iv) = o) & (java.lang.Object::(5) = o & wellFormed(heap) & o.=TRUE -> diff --git a/key.ui/examples/smt/taclettranslation/complexProblem2.key b/key.ui/examples/smt/taclettranslation/complexProblem2.key index 08dc77b0051..e61d0553f0f 100644 --- a/key.ui/examples/smt/taclettranslation/complexProblem2.key +++ b/key.ui/examples/smt/taclettranslation/complexProblem2.key @@ -38,8 +38,8 @@ Options: & (wellFormed(heap) & java.lang.Object.=TRUE -> java.lang.Object.=TRUE) // (5) - & (java.util.List::instance(o)=TRUE - -> java.util.Collection::instance(o)=TRUE) // (6) + & (instance<[java.util.List]>(o)=TRUE + -> instance<[java.util.Collection]>(o)=TRUE) // (6) & (wellFormed(heap) -> java.lang.Object. >=0) // (7) diff --git a/key.ui/examples/standard_key/BookExamples/02FirstOrderLogic/Ex2.56.key b/key.ui/examples/standard_key/BookExamples/02FirstOrderLogic/Ex2.56.key index 1b035dc5817..14e8dba65e8 100644 --- a/key.ui/examples/standard_key/BookExamples/02FirstOrderLogic/Ex2.56.key +++ b/key.ui/examples/standard_key/BookExamples/02FirstOrderLogic/Ex2.56.key @@ -3,5 +3,5 @@ } \problem { - \forall A x; ( (A)x = x -> A::instance(x) = TRUE) + \forall A x; ( (A)x = x -> instance<[A]>(x) = TRUE) } diff --git a/key.ui/examples/standard_key/BookExamples/02FirstOrderLogic/Ex2.57.key b/key.ui/examples/standard_key/BookExamples/02FirstOrderLogic/Ex2.57.key index aa96df7e083..7dad09961c9 100644 --- a/key.ui/examples/standard_key/BookExamples/02FirstOrderLogic/Ex2.57.key +++ b/key.ui/examples/standard_key/BookExamples/02FirstOrderLogic/Ex2.57.key @@ -3,5 +3,5 @@ } \problem { - \forall A x; ( A::instance(x) = TRUE -> (A)x = x ) + \forall A x; ( instance<[A]>(x) = TRUE -> (A)x = x ) } diff --git a/key.ui/examples/standard_key/instanceCreation/instanceof.key b/key.ui/examples/standard_key/instanceCreation/instanceof.key index 77b84263389..cc48bd241b6 100644 --- a/key.ui/examples/standard_key/instanceCreation/instanceof.key +++ b/key.ui/examples/standard_key/instanceCreation/instanceof.key @@ -12,11 +12,11 @@ \problem { java.lang.RuntimeException:: instance(java.lang.NullPointerException::(0)) = TRUE & - java.lang.NullPointerException::instance + instance<[java.lang.NullPointerException]> (java.lang.RuntimeException::(0)) = FALSE & - java.lang.Error::instance + instance<[java.lang.Error]> (java.lang.RuntimeException::(0)) = FALSE & - java.lang.RuntimeException::instance + instance<[java.lang.RuntimeException]> (java.lang.Error::(0)) = FALSE } diff --git a/key.ui/examples/standard_key/instanceCreation/interfacesAndAbstractClassesHaveNoInstances.key b/key.ui/examples/standard_key/instanceCreation/interfacesAndAbstractClassesHaveNoInstances.key index f0e1b8fb88a..a1d94876df4 100644 --- a/key.ui/examples/standard_key/instanceCreation/interfacesAndAbstractClassesHaveNoInstances.key +++ b/key.ui/examples/standard_key/instanceCreation/interfacesAndAbstractClassesHaveNoInstances.key @@ -12,9 +12,9 @@ } \problem { - Interface::exactInstance(inter) = FALSE & - !(Interface::exactInstance(inter) = TRUE) & - Abstract::exactInstance(abst) = FALSE & - !(Abstract::exactInstance(abst) = TRUE) + exactInstance<[Interface]>(inter) = FALSE & + !(exactInstance<[Interface]>(inter) = TRUE) & + exactInstance<[Abstract]>(abst) = FALSE & + !(exactInstance<[Abstract]>(abst) = TRUE) } diff --git a/key.ui/examples/standard_key/java_dl/DLContractChooser/example.key b/key.ui/examples/standard_key/java_dl/DLContractChooser/example.key index 6c7a99fc87c..d5975d2dd7f 100644 --- a/key.ui/examples/standard_key/java_dl/DLContractChooser/example.key +++ b/key.ui/examples/standard_key/java_dl/DLContractChooser/example.key @@ -24,7 +24,7 @@ specification. Both methods have been proveable. {heapAtPre := heap} \<{ mc.addTwenty(); - }\> (mc.a = int::select(heapAtPre, mc, MyClass::$a) + 20) + }\> (mc.a = select<[int]>(heapAtPre, mc, MyClass::$a) + 20) \modifiable singleton(mc, MyClass::$a) }; @@ -38,7 +38,7 @@ specification. Both methods have been proveable. {heapAtPre := heap} \<{ mc.addTen(); - }\> (mc.a = int::select(heapAtPre, mc, MyClass::$a) + 10) + }\> (mc.a = select<[int]>(heapAtPre, mc, MyClass::$a) + 10) \modifiable singleton(mc, MyClass::$a) }; diff --git a/key.ui/examples/standard_key/java_dl/jml-information-flow.key b/key.ui/examples/standard_key/java_dl/jml-information-flow.key index 3efb87f6e4a..fe23247b31d 100644 --- a/key.ui/examples/standard_key/java_dl/jml-information-flow.key +++ b/key.ui/examples/standard_key/java_dl/jml-information-flow.key @@ -53,7 +53,7 @@ Avg self_Avg; < self_Avg.(Avg::num_Instances) -> ! self_Avg.(Avg::m_Tab)[i] = null - & ( int[]::instance(self_Avg.(Avg::m_Tab)[i]) + & ( instance<[int[]]>(self_Avg.(Avg::m_Tab)[i]) = TRUE & ! self_Avg.(Avg::m_Tab)[i] = null @@ -65,7 +65,7 @@ Avg self_Avg; < self_Avg.(Avg::num_Instances) -> ! self_Avg.(Avg::m_Tab2)[i] = null - & ( int[]::instance(self_Avg.(Avg::m_Tab2)[i]) + & ( instance<[int[]]>(self_Avg.(Avg::m_Tab2)[i]) = TRUE & ! self_Avg.(Avg::m_Tab2)[i] = null diff --git a/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key b/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key index 9fb5a41b81b..8abb86a56fe 100644 --- a/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key +++ b/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key @@ -42,43 +42,43 @@ \problem { wellFormed(heap) - & boolean::select(heap, + & select<[boolean]>(heap, null, java.lang.NoClassDefFoundError::) = TRUE - & boolean::select(heap, + & select<[boolean]>(heap, null, java.lang.ArithmeticException::) = TRUE - & boolean::select(heap, + & select<[boolean]>(heap, null, java.lang.NullPointerException::) = TRUE - & boolean::select(heap, + & select<[boolean]>(heap, null, A::) = FALSE - & boolean::select(heap, null, A::) + & select<[boolean]>(heap, null, A::) = FALSE - & boolean::select(heap, + & select<[boolean]>(heap, null, A::) = FALSE - & boolean::select(heap, null, A::) + & select<[boolean]>(heap, null, A::) = FALSE - & boolean::select(heap, + & select<[boolean]>(heap, null, FailedStaticInit::) = FALSE - & boolean::select(heap, + & select<[boolean]>(heap, null, FailedStaticInit::) = FALSE - & boolean::select(heap, + & select<[boolean]>(heap, null, FailedStaticInit::) = FALSE - & boolean::select(heap, + & select<[boolean]>(heap, null, FailedStaticInit::) = FALSE @@ -90,11 +90,11 @@ }catch (Error e) { errorWhileProcessingMethod=true; } - }\> ( boolean::select(heap, + }\> ( select<[boolean]>(heap, null, FailedStaticInit::) = TRUE - & int::select(heap, + & select<[int]>(heap, fsi, FailedStaticInit::$objectVar) = Z(3(#)) diff --git a/key.ui/examples/standard_key/strings/charAt0.key b/key.ui/examples/standard_key/strings/charAt0.key index f2153235031..d7835976a29 100644 --- a/key.ui/examples/standard_key/strings/charAt0.key +++ b/key.ui/examples/standard_key/strings/charAt0.key @@ -6,7 +6,7 @@ \forall Seq l; \forall int start; \forall int end; \forall int pos; ( start >= 0 & start <= end & end <= seqLen(l) & start <= pos & pos < start-end -> - int::seqGet(l, pos + start) = int::seqGet(seqSub(l, start, end), pos) + seqGet<[int]>(l, pos + start) = seqGet<[int]>(seqSub(l, start, end), pos) ) diff --git a/key.ui/examples/standard_key/strings/charAt1.key b/key.ui/examples/standard_key/strings/charAt1.key index 8b0776a9e5b..4b2c64cd24b 100644 --- a/key.ui/examples/standard_key/strings/charAt1.key +++ b/key.ui/examples/standard_key/strings/charAt1.key @@ -5,7 +5,7 @@ \forall Seq l; \forall Seq subL; \forall int start; \forall int end; \forall int pos; ( start >= 0 & start <= end & end <= seqLen(l) & start <= pos & pos < start - end & subL = seqSub(l, start, end) -> - int::seqGet(l, pos + start) = int::seqGet(subL, pos) + seqGet<[int]>(l, pos + start) = seqGet<[int]>(subL, pos) ) diff --git a/key.ui/examples/standard_key/strings/replace1.key b/key.ui/examples/standard_key/strings/replace1.key index fb5c6623030..3e84d463fab 100644 --- a/key.ui/examples/standard_key/strings/replace1.key +++ b/key.ui/examples/standard_key/strings/replace1.key @@ -4,6 +4,6 @@ \forall Seq str; \forall int c; \forall int d; \forall int pos; - (pos >= 0 & pos < seqLen(str) -> (int::seqGet(clReplace(str, c, d), pos) = c -> c = d)) + (pos >= 0 & pos < seqLen(str) -> (seqGet<[int]>(clReplace(str, c, d), pos) = c -> c = d)) } \ No newline at end of file diff --git a/key.ui/examples/standard_key/strings/stringIntern.key b/key.ui/examples/standard_key/strings/stringIntern.key index fe6d72ba074..222932c8831 100644 --- a/key.ui/examples/standard_key/strings/stringIntern.key +++ b/key.ui/examples/standard_key/strings/stringIntern.key @@ -5,6 +5,6 @@ \problem { - wellFormed(heap) & boolean::select(heap, strPool(""), java.lang.Object::) = TRUE -> \<{ s = new String(); b1 = (s == ""); s = s.intern(); b2 = (s == ""); }\> (b1 = FALSE & b2 = TRUE) + wellFormed(heap) & select<[boolean]>(heap, strPool(""), java.lang.Object::) = TRUE -> \<{ s = new String(); b1 = (s == ""); s = s.intern(); b2 = (s == ""); }\> (b1 = FALSE & b2 = TRUE) } \ No newline at end of file diff --git a/key.ui/examples/standard_key/types/disjoint.key b/key.ui/examples/standard_key/types/disjoint.key index edd1cfe302c..4f1ad2a148a 100644 --- a/key.ui/examples/standard_key/types/disjoint.key +++ b/key.ui/examples/standard_key/types/disjoint.key @@ -1,6 +1,6 @@ \functions { java.lang.Throwable e; } -\problem { ( java.lang.Exception::instance(e) = TRUE - & java.lang.Error::instance(e) = TRUE ) +\problem { ( instance<[java.lang.Exception]>(e) = TRUE + & instance<[java.lang.Error]>(e) = TRUE ) -> e = null } diff --git a/key.ui/examples/standard_key/types/finalTypes.key b/key.ui/examples/standard_key/types/finalTypes.key index 8ef3c0370bb..d18ed9b0cde 100644 --- a/key.ui/examples/standard_key/types/finalTypes.key +++ b/key.ui/examples/standard_key/types/finalTypes.key @@ -5,7 +5,7 @@ } \problem { - (Final::instance(o) = TRUE -> o = null | Final::exactInstance(o) = TRUE) - & (Final[]::instance(o) = TRUE -> o = null | Final[]::exactInstance(o) = TRUE) - & (int[]::instance(o) = TRUE -> o = null | int[]::exactInstance(o) = TRUE) + (instance<[Final]>(o) = TRUE -> o = null | exactInstance<[Final]>(o) = TRUE) + & (instance<[Final[]]>(o) = TRUE -> o = null | exactInstance<[Final[]]>(o) = TRUE) + & (instance<[int[]]>(o) = TRUE -> o = null | exactInstance<[int[]]>(o) = TRUE) } \ No newline at end of file diff --git a/key.ui/examples/standard_key/types/finalTypes_unprovable.key b/key.ui/examples/standard_key/types/finalTypes_unprovable.key index 9bf7507cb61..8803276d24e 100644 --- a/key.ui/examples/standard_key/types/finalTypes_unprovable.key +++ b/key.ui/examples/standard_key/types/finalTypes_unprovable.key @@ -5,5 +5,5 @@ } \problem { - FinalSuper[]::instance(o) = TRUE ==> o = null | FinalSuper[]::exactInstance(o) = TRUE + instance<[java.lang.NullPointerException]>(o) = TRUE ==> o = null | exactInstance<[FinalSuper[]]>(o) = TRUE } diff --git a/key.ui/examples/theories/map.key b/key.ui/examples/theories/map.key index 8b19d90a964..ed979863918 100644 --- a/key.ui/examples/theories/map.key +++ b/key.ui/examples/theories/map.key @@ -44,7 +44,7 @@ getOfMapForeach { \find(mapGet(mapForeach{v;}(b,y),x)) \sameUpdateLevel - \replacewith({\subst v; alpha::cast(x)} + \replacewith({\subst v; cast<[alpha]>(x)} \if(b=TRUE)\then(y)\else(mapUndef)) \heuristics(simplify_enlarging) }; @@ -55,8 +55,8 @@ inDomainOfMapForeach { \find(inDomain(mapForeach{v;}(b,y),x)) - \replacewith({\subst v; alpha::cast(x)}b = TRUE - & alpha::instance(x)=TRUE ) + \replacewith({\subst v; cast<[alpha]>(x)}b = TRUE + & instance<[alpha]>(x)=TRUE ) \heuristics(simplify) }; @@ -69,7 +69,7 @@ \find(mapSingleton(xa, y)) \varcond(\notFreeIn(vy,xa,y)) \replacewith(mapForeach{vy;}( - \if(vy=any::cast(xa))\then(TRUE)\else(FALSE),y) + \if(vy=cast<[any]>(xa))\then(TRUE)\else(FALSE),y) ) }; @@ -90,7 +90,7 @@ \varcond(\notFreeIn(ix,s)) \replacewith(mapForeach{ix;}( \if(0 <= ix & ix < seqLen(s))\then(TRUE)\else(FALSE), - any::seqGet(s,ix) + seqGet<[any]>(s,ix) )) }; @@ -119,8 +119,8 @@ inDomainOfSeq2Map { \schemaVar \term Seq s; \find(inDomain(seq2map(s),x)) - \replacewith(int::instance(x) = TRUE & - 0 <= int::cast(x) & int::cast(x) < seqLen(s)) + \replacewith(instance<[int]>(x) = TRUE & + 0 <= cast<[int]>(x) & cast<[int]>(x) < seqLen(s)) \heuristics(simplify) }; @@ -145,7 +145,7 @@ \find(mapGet(seq2map(s),n)) \sameUpdateLevel \replacewith(\if(0 <= n & n < seqLen(s)) - \then(any::seqGet(s,n))\else(mapUndef)) + \then(seqGet<[any]>(s,n))\else(mapUndef)) \heuristics(simplify_enlarging) }; From f50ce80e988f1e630b2db439b722de3bc223390b Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 09:03:26 +0100 Subject: [PATCH 08/37] Fix more .key files, taclets.old.txt, and SMT files --- .../java/de/uka/ilkd/key/pp/LogicPrinter.java | 2 +- .../java/de/uka/ilkd/key/pp/NotationInfo.java | 2 +- .../Heap.DefinedSymbolsHandler.preamble.xml | 22 +- .../Java.DefinedSymbolsHandler.preamble.xml | 2 +- .../LocSet.DefinedSymbolsHandler.preamble.xml | 6 +- .../Seq.DefinedSymbolsHandler.preamble.xml | 12 +- .../ilkd/key/parser/TestTermParserSorts.java | 14 +- .../key/pp/PrettyPrinterRoundtripTest.java | 8 +- .../key/nparser/exceptional/unknownsort.key | 2 +- .../key/nparser/exceptional/unknownsort2.key | 2 +- .../de/uka/ilkd/key/nparser/taclets.old.txt | 582 +++++++++--------- .../key/smt/newsmt2/SMT_lemma_seqGet.dl.proof | 2 +- .../newsmt2/SMT_lemma_seqGetOutside.dl.proof | 4 +- .../uka/ilkd/key/smt/newsmt2/cases/cast2.yml | 2 +- .../uka/ilkd/key/smt/newsmt2/cases/heap1.yml | 2 +- .../uka/ilkd/key/smt/newsmt2/cases/quant2.yml | 2 +- .../key/smt/newsmt2/cases/subtypes3738.yml | 4 +- .../uka/ilkd/key/smt/newsmt2/cases/types1.yml | 2 +- .../uka/ilkd/key/smt/newsmt2/cases/types2.yml | 2 +- .../smt/newsmt2/cases/unknownQuantified.yml | 2 +- ...erentVarsWithSameName.MPS.cut.closed.proof | 20 +- 21 files changed, 349 insertions(+), 347 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java index 8ccb3b06a9c..f4c8a465876 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java @@ -1097,7 +1097,7 @@ public void printStore(JTerm t, boolean closingBrace) { } /* - * Print a term of the form: T::seqGet(Seq, int). + * Print a term of the form: seqGet<[T]>(Seq, int). */ public void printSeqGet(JTerm t) { if (notationInfo.isPrettySyntax()) { diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java b/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java index cbf9d647516..9cc0e6000f5 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/NotationInfo.java @@ -306,7 +306,7 @@ private HashMap createPrettyNotation(Services services) { // sequence operators final SeqLDT seqLDT = services.getTypeConverter().getSeqLDT(); tbl.put(seqLDT.getSeqLen(), new Notation.Postfix(".length")); - tbl.put(SeqLDT.SEQGET_NAME, new Notation.SeqGetNotation()); + tbl.put(seqLDT.getSeqGet(), new Notation.SeqGetNotation()); tbl.put(seqLDT.getSeqConcat(), new Notation.SeqConcatNotation(seqLDT.getSeqConcat(), seqLDT.getSeqSingleton(), integerLDT.getCharSymbol())); diff --git a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Heap.DefinedSymbolsHandler.preamble.xml b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Heap.DefinedSymbolsHandler.preamble.xml index 1b0030b57ed..732e5aef67e 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Heap.DefinedSymbolsHandler.preamble.xml +++ b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Heap.DefinedSymbolsHandler.preamble.xml @@ -1,9 +1,9 @@ > = + select<[any]>(store(h,o,f,v), o2, f2)<> = \if(o = o2 & f = f2 & f != java.lang.Object::) \then(v) - \else(any::select(h, o2, f2)) + \else(select<[any]>(h, o2, f2)) ]]> > = + select<[any]>(anon(h, ls, h2), o, f)<> = \if(elementOf(o, f, ls) & f != java.lang.Object:: | elementOf(o, f, freshLocs(h))) - \then(any::select(h2, o, f)) - \else(any::select(h, o, f)) + \then(select<[any]>(h2, o, f)) + \else(select<[any]>(h, o, f)) ]]> > = + select<[any]>(memset(h, s, x), o, f)<> = \if(elementOf(o, f, s) & f != java.lang.Object::) \then(x) - \else(any::select(h, o, f)) + \else(select<[any]>(h, o, f)) ]]> > = + select<[any]>(create(h, o), o2, f)<> = \if(o = o2 & o != null & f = java.lang.Object::) \then(TRUE) - \else(any::select(h, o2, f)) + \else(select<[any]>(h, o2, f)) ]]> - boolean::select(h, (java.lang.Object::select(h, o, f))<>, java.lang.Object::) = TRUE - | (java.lang.Object::select(h, o, f)) = null) + select<[boolean]>(h, (select<[java.lang.Object]>(h, o, f))<>, java.lang.Object::) = TRUE + | (select<[java.lang.Object]>(h, o, f)) = null) ]]> \ No newline at end of file diff --git a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Java.DefinedSymbolsHandler.preamble.xml b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Java.DefinedSymbolsHandler.preamble.xml index 8f6884382c7..39e2e5e2c84 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Java.DefinedSymbolsHandler.preamble.xml +++ b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Java.DefinedSymbolsHandler.preamble.xml @@ -1,6 +1,6 @@ - > = TRUE -> x = null) ]]> + (x))<> = TRUE -> x = null) ]]> diff --git a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml index 3ac7761e4b5..1b49617213e 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml +++ b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml @@ -11,11 +11,11 @@ \forall Object o; \forall Field f; ( elementOf(o,f,allLocs)<<Trigger>> <-> true ) - + + o != null & !select<[boolean]>(h,o,java.lang.Object::<created>)=TRUE ) +]]> \forall Object o; \forall Field f; \forall Object o2; \forall Field f2; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Seq.DefinedSymbolsHandler.preamble.xml b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Seq.DefinedSymbolsHandler.preamble.xml index 807ea5a17ad..0865c9015d6 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Seq.DefinedSymbolsHandler.preamble.xml +++ b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/Seq.DefinedSymbolsHandler.preamble.xml @@ -1,5 +1,5 @@ = seqLen(s) -> any::seqGet(s, i)<> = seqGetOutside ) + \forall int i; \forall Seq s; ( i < 0 | i >= seqLen(s) -> seqGet<[any]>(s, i)<> = seqGetOutside ) ]]> - any::seqGet(seqConcat(s1, s2), i) = - \if (i < seqLen(s1)) \then (any::seqGet(s1, i)) \else (any::seqGet(s2, i-seqLen(s1)))) + seqGet<[any]>(seqConcat(s1, s2), i) = + \if (i < seqLen(s1)) \then (seqGet<[any]>(s1, i)) \else (seqGet<[any]>(s2, i-seqLen(s1)))) ]]> @@ -24,7 +24,7 @@ >, 0) = x + \forall any x; seqGet<[any]>(seqSingleton(x)<>, 0) = x ]]> @@ -38,9 +38,9 @@ \forall int from; \forall int to; \forall int idx; - any::seqGet(seqSub(seq, from, to)<>, idx) + seqGet<[any]>(seqSub(seq, from, to)<>, idx) = \if(0 <= idx & idx < (to - from)) - \then(any::seqGet(seq, idx + from)) + \then(seqGet<[any]>(seq, idx + from)) \else(seqGetOutside) ]]> diff --git a/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserSorts.java b/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserSorts.java index 4d3939604ea..d9708ce026d 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserSorts.java +++ b/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserSorts.java @@ -32,24 +32,24 @@ public void setUp() throws IOException { @Test public void testParseSequencePrettySyntax() throws Exception { /* - * Test any::seqGet(s,i) + * Test seqGet<[any]>(s,i) */ String pp = "s[i]"; - JTerm expected = parseTerm("any::seqGet(s,i)"); + JTerm expected = parseTerm("seqGet<[any]>(s,i)"); JTerm actual = parseTerm(pp); assertEquals(expected, actual); // test parsing - assertEqualsIgnoreWhitespaces(printTerm(expected), pp); // test pretty-printing + assertEqualsIgnoreWhitespaces(pp, printTerm(expected)); // test pretty-printing /* - * Test int::seqGet(s,i) Notice that pretty-printing of int::seqGet(s,i) results in: - * (int)s[i] But parsing of (int)s[i] results in: int::cast(any::seqGet(s,i) + * Test seqGet<[int]>(s,i) Notice that pretty-printing of seqGet<[int]>(s,i) results in: + * (int)s[i] But parsing of (int)s[i] results in: cast<[int]>(seqGet<[any]>(s,i) */ pp = "(int)s[i]"; - expected = parseTerm("int::cast(any::seqGet(s,i))"); + expected = parseTerm("cast<[int]>(seqGet<[any]>(s,i))"); actual = parseTerm(pp); assertEquals(expected, actual); // test parsing // test pretty-printing - assertEqualsIgnoreWhitespaces(printTerm(parseTerm("int::seqGet(s,i)")), pp); + assertEqualsIgnoreWhitespaces(printTerm(parseTerm("seqGet<[int]>(s,i)")), pp); // test parsing of pretty-printed seqLen comparePrettySyntaxAgainstVerboseSyntax("s.length", "seqLen(s)"); diff --git a/key.core/src/test/java/de/uka/ilkd/key/pp/PrettyPrinterRoundtripTest.java b/key.core/src/test/java/de/uka/ilkd/key/pp/PrettyPrinterRoundtripTest.java index b10a24afa56..b6f122b31c6 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/pp/PrettyPrinterRoundtripTest.java +++ b/key.core/src/test/java/de/uka/ilkd/key/pp/PrettyPrinterRoundtripTest.java @@ -68,11 +68,11 @@ public static void tearDown() { private static final String[] HEAP_CASES = { "self.f", "sub.f", - "int::select(heap, sub, C::$f)", - "int::final(self, C::$f)", - "\\forall Field f; int::select(heap, self, C::$f) = 0", + "select<[int]>(heap, sub, C::$f)", + "final<[int]>(self, C::$f)", + "\\forall Field f; select<[int]>(heap, self, C::$f) = 0", "\\forall Field fvar; self.fvar = 0", - "\\forall Field fvar; any::final(self, fvar) = 0", + "\\forall Field fvar; final<[any]>(self, fvar) = 0", "self.finf" }; diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort.key b/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort.key index c26a6d2a900..fe4c802ad37 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort.key +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort.key @@ -1,7 +1,7 @@ // verbose: true // msgContains: Could not find sort: seq // exceptionClass: BuildingException -// position: 8/4 +// position: 8/12 \problem { diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort2.key b/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort2.key index 563f99aa320..a80312466c2 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort2.key +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/exceptional/unknownsort2.key @@ -1,7 +1,7 @@ // verbose: true // msgContains: Could not find sort: seq // exceptionClass: BuildingException -// position: 9/11 +// position: 9/19 \rules { diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt index a95305f3dbf..76cc8c4b980 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt @@ -1,5 +1,5 @@ # This files contains representation of taclets, which are accepted and revised. -# Date: Tue Jul 29 22:37:48 CEST 2025 +# Date: Tue Mar 17 08:13:22 CET 2026 == abortJavaCardTransactionAPI (abortJavaCardTransactionAPI) ========================================= abortJavaCardTransactionAPI { @@ -34,7 +34,7 @@ Choices: (programRules:Java & JavaCard:on)} accDefinition { \find(acc(h,s,o,o2)) \varcond(\notFreeIn(fv (variable), o2 (deltaObject term)), \notFreeIn(fv (variable), o (java.lang.Object term)), \notFreeIn(fv (variable), s (LocSet term)), \notFreeIn(fv (variable), h (Heap term))) -\replacewith(and(and(not(equals(o,null)),not(equals(o2,null))),exists{fv (variable)}(and(elementOf(o,fv,s),equals(deltaObject::select(h,o,fv),o2))))) +\replacewith(and(and(not(equals(o,null)),not(equals(o2,null))),exists{fv (variable)}(and(elementOf(o,fv,s),equals(select<[deltaObject]>(h,o,fv),o2))))) \heuristics(simplify) Choices: reach:on} ----------------------------------------------------- @@ -679,7 +679,7 @@ allocateInstance { #lhs = #t.#allocate()@#t; ... }}| (post)) \varcond(\hasSort(#t2 (program Type), alphaObj)) -\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),equals(boolean::select(heap,#lhs,java.lang.Object::),FALSE))),equals(alphaObj::exactInstance(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(create(heap,#lhs)),#allmodal(post))]) +\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),equals(select<[boolean]>(heap,#lhs,java.lang.Object::),FALSE))),equals(exactInstance<[alphaObj]>(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(create(heap,#lhs)),#allmodal(post))]) \heuristics(method_expand) Choices: (programRules:Java & permissions:off)} ----------------------------------------------------- @@ -689,7 +689,7 @@ allocateInstanceWithLength { #lhs = #t.#allocate(#len)@#t; ... }}| (post)) \varcond(\hasSort(#t2 (program Type), alphaObj)) -\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),and(equals(boolean::select(heap,#lhs,java.lang.Object::),FALSE),equals(length(#lhs),#len)))),equals(alphaObj::exactInstance(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(store(store(create(heap,#lhs),#lhs,java.lang.Object::,Z(0(#))),#lhs,java.lang.Object::,FALSE)),#allmodal(post))]) +\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),and(equals(select<[boolean]>(heap,#lhs,java.lang.Object::),FALSE),equals(length(#lhs),#len)))),equals(exactInstance<[alphaObj]>(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(store(store(create(heap,#lhs),#lhs,java.lang.Object::,Z(0(#))),#lhs,java.lang.Object::,FALSE)),#allmodal(post))]) \heuristics(method_expand) Choices: (programRules:Java & permissions:off)} ----------------------------------------------------- @@ -1076,7 +1076,7 @@ Choices: true} array2seqDef { \find(array2seq(h,a)) \varcond(\notFreeIn(u (variable), h (Heap term)), \notFreeIn(u (variable), a (java.lang.Object term))) -\replacewith(seqDef{u (variable)}(Z(0(#)),length(a),any::select(h,a,arr(u)))) +\replacewith(seqDef{u (variable)}(Z(0(#)),length(a),select<[any]>(h,a,arr(u)))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- @@ -1146,14 +1146,14 @@ Choices: programRules:Java} == array_self_reference (array_self_reference) ========================================= array_self_reference { \assumes ([wellFormed(heapSV)]==>[equals(array,null)]) -\find(arrayStoreValid(array,G::select(heapSV,array,arr(idx)))) +\find(arrayStoreValid(array,select<[G]>(heapSV,array,arr(idx)))) \sameUpdateLevel\replacewith(true) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- == array_self_reference_eq (array_self_reference_eq) ========================================= array_self_reference_eq { -\assumes ([wellFormed(heapSV),equals(G::select(heapSV,array,arr(idx)),EQ)]==>[equals(array,null)]) +\assumes ([wellFormed(heapSV),equals(select<[G]>(heapSV,array,arr(idx)),EQ)]==>[equals(array,null)]) \find(arrayStoreValid(array,EQ)) \sameUpdateLevel\replacewith(true) \heuristics(simplify) @@ -1161,10 +1161,10 @@ Choices: programRules:Java} ----------------------------------------------------- == array_store_known_dynamic_array_type (known dynamic array type) ========================================= array_store_known_dynamic_array_type { -\assumes ([equals(J::exactInstance(array),TRUE)]==>[]) +\assumes ([equals(exactInstance<[J]>(array),TRUE)]==>[]) \find(arrayStoreValid(array,obj)) \sameUpdateLevel\varcond(\isReference[non_null]( J )) -\replacewith(or(equals(obj,null),equals(#arrayBaseInstanceOf(J::exactInstance(array),obj),TRUE))) +\replacewith(or(equals(obj,null),equals(#arrayBaseInstanceOf(exactInstance<[J]>(array),obj),TRUE))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -1199,7 +1199,7 @@ assertSafe { method-frame (#ex) { #typeof(#e1) #condition = #e1; } -}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(boolean::select(oldHeap,o,java.lang.Object::),FALSE)),equals(any::select(oldHeap,o,f),any::select(heap,o,f))))))]) ; +}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(select<[boolean]>(oldHeap,o,java.lang.Object::),FALSE)),equals(select<[any]>(oldHeap,o,f),select<[any]>(heap,o,f))))))]) ; \replacewith([]==>[\<{ method-frame (#ex) { #condition = #e1; @@ -1220,7 +1220,7 @@ assertSafeWithMessage { #typeof(#e1) #condition = #e1; #typeof(#e2) #message = #e2; } -}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(boolean::select(oldHeap,o,java.lang.Object::),FALSE)),equals(any::select(oldHeap,o,f),any::select(heap,o,f))))))]) ; +}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(select<[boolean]>(oldHeap,o,java.lang.Object::),FALSE)),equals(select<[any]>(oldHeap,o,f),select<[any]>(heap,o,f))))))]) ; \replacewith([]==>[\<{ method-frame (#ex) { #typeof(#e1) #condition = #e1; @@ -1235,7 +1235,7 @@ Choices: (programRules:Java & assertions:safe)} assignableDefinition { \find(assignable(heapNew,heapOld,locs)) \varcond(\notFreeIn(f (variable), heapNew (Heap term)), \notFreeIn(f (variable), heapOld (Heap term)), \notFreeIn(f (variable), locs (LocSet term)), \notFreeIn(o (variable), heapNew (Heap term)), \notFreeIn(o (variable), heapOld (Heap term)), \notFreeIn(o (variable), locs (LocSet term))) -\replacewith(all{f (variable)}(all{o (variable)}(or(or(elementOf(o,f,locs),and(not(equals(o,null)),not(equals(boolean::select(heapOld,o,java.lang.Object::),TRUE)))),equals(any::select(heapNew,o,f),any::select(heapOld,o,f)))))) +\replacewith(all{f (variable)}(all{o (variable)}(or(or(elementOf(o,f,locs),and(not(equals(o,null)),not(equals(select<[boolean]>(heapOld,o,java.lang.Object::),TRUE)))),equals(select<[any]>(heapNew,o,f),select<[any]>(heapOld,o,f)))))) \heuristics(delayedExpansion) Choices: programRules:Java} ----------------------------------------------------- @@ -1838,7 +1838,7 @@ assignment_array2 { \varcond(\hasSort(\elemSort(#v0 (program Variable)), G)) \add [and(not(equals(#v0,null)),or(leq(length(#v0),#se),lt(#se,Z(0(#)))))]==>[] \replacewith([]==>[false]) ; \add [equals(#v0,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(#v (program Variable))(G::select(heap,#v0,arr(#se))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v (program Variable))(select<[G]>(heap,#v0,arr(#se))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: (programRules:Java & runtimeExceptions:ban)} ----------------------------------------------------- @@ -1849,7 +1849,7 @@ assignment_read_attribute { ... }}| (post)) \varcond( \not \static(#a (program Variable)), \not \isArrayLength(#a (program Variable)), \hasSort(#a (program Variable), G), \not\isThisReference (#v (program Variable)), \not \final(#a (program Variable))) \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(G::select(heap,#v,#memberPVToField(#a))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(select<[G]>(heap,#v,#memberPVToField(#a))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & finalFields:immutable)} ----------------------------------------------------- @@ -1860,7 +1860,7 @@ assignment_read_attribute_final { ... }}| (post)) \varcond( \not \static(#a (program Variable)), \not \isArrayLength(#a (program Variable)), \hasSort(#a (program Variable), G), \not\isThisReference (#v (program Variable)), \final(#a (program Variable))) \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(G::final(#v,#memberPVToField(#a))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(final<[G]>(#v,#memberPVToField(#a))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & finalFields:immutable)} ----------------------------------------------------- @@ -1870,7 +1870,7 @@ assignment_read_attribute_this { #v0 = #v.#a; ... }}| (post)) \varcond( \not \static(#a (program Variable)), \not \isArrayLength(#a (program Variable)), \not\isModelField(#a (program Variable)), \hasSort(#a (program Variable), G), \isThisReference (#v (program Variable)), \not \final(#a (program Variable))) -\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(G::select(heap,#v,#memberPVToField(#a))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(select<[G]>(heap,#v,#memberPVToField(#a))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & finalFields:immutable)} ----------------------------------------------------- @@ -1880,7 +1880,7 @@ assignment_read_attribute_this_final { #v0 = #v.#a; ... }}| (post)) \varcond( \not \static(#a (program Variable)), \not \isArrayLength(#a (program Variable)), \hasSort(#a (program Variable), G), \isThisReference (#v (program Variable)), \final(#a (program Variable))) -\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(G::final(#v,#memberPVToField(#a))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(final<[G]>(#v,#memberPVToField(#a))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & finalFields:immutable)} ----------------------------------------------------- @@ -1911,7 +1911,7 @@ assignment_read_static_attribute { #v0 = @(#sv); ... }}| (post)) \sameUpdateLevel\varcond(\hasSort(#sv (program StaticVariable), G), \not \final(#sv (program StaticVariable))) -\replacewith(update-application(elem-update(#v0 (program Variable))(G::select(heap,null,#memberPVToField(#sv))),#allmodal(post))) +\replacewith(update-application(elem-update(#v0 (program Variable))(select<[G]>(heap,null,#memberPVToField(#sv))),#allmodal(post))) \heuristics(simplify_prog_subset, simplify_prog) Choices: (programRules:Java & finalFields:immutable)} ----------------------------------------------------- @@ -1921,7 +1921,7 @@ assignment_read_static_attribute_final { #v0 = @(#sv); ... }}| (post)) \sameUpdateLevel\varcond(\hasSort(#sv (program StaticVariable), G), \final(#sv (program StaticVariable))) -\replacewith(update-application(elem-update(#v0 (program Variable))(G::final(null,#memberPVToField(#sv))),#allmodal(post))) +\replacewith(update-application(elem-update(#v0 (program Variable))(final<[G]>(null,#memberPVToField(#sv))),#allmodal(post))) \heuristics(simplify_prog_subset, simplify_prog) Choices: (programRules:Java & finalFields:immutable)} ----------------------------------------------------- @@ -1931,7 +1931,7 @@ assignment_read_static_attribute_with_variable_prefix { #loc = @(#v.#sv); ... }}| (post)) \varcond(\hasSort(#sv (program StaticVariable), G)) -\replacewith(update-application(elem-update(#loc (program Variable))(G::select(heap,#v,#memberPVToField(#sv))),#allmodal(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(select<[G]>(heap,#v,#memberPVToField(#sv))),#allmodal(post))) \heuristics(simplify_prog) Choices: programRules:Java} ----------------------------------------------------- @@ -1955,7 +1955,7 @@ assignment_to_primitive_array_component_transaction { \varcond( \not \isReferenceArray(#v (program Variable))) \add [and(not(equals(#v,null)),or(leq(length(#v),#se),lt(#se,Z(0(#)))))]==>[] \replacewith([]==>[false]) ; \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(int::select(heap,#v,java.lang.Object::),Z(0(#))),store(savedHeap,#v,java.lang.Object::,TRUE),if-then-else(equals(boolean::select(savedHeap,#v,java.lang.Object::),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) +\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(select<[int]>(heap,#v,java.lang.Object::),Z(0(#))),store(savedHeap,#v,java.lang.Object::,TRUE),if-then-else(equals(select<[boolean]>(savedHeap,#v,java.lang.Object::),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & JavaCard:on)} ----------------------------------------------------- @@ -1981,7 +1981,7 @@ assignment_to_reference_array_component_transaction { \add [and(and(and(not(equals(#v,null)),lt(#se,length(#v))),geq(#se,Z(0(#)))),not(arrayStoreValid(#v,#se0)))]==>[] \replacewith([]==>[false]) ; \add [and(not(equals(#v,null)),or(leq(length(#v),#se),lt(#se,Z(0(#)))))]==>[] \replacewith([]==>[false]) ; \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(int::select(heap,#v,java.lang.Object::),Z(0(#))),store(savedHeap,#v,java.lang.Object::,TRUE),if-then-else(equals(boolean::select(savedHeap,#v,java.lang.Object::),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) +\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(select<[int]>(heap,#v,java.lang.Object::),Z(0(#))),store(savedHeap,#v,java.lang.Object::,TRUE),if-then-else(equals(select<[boolean]>(savedHeap,#v,java.lang.Object::),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & JavaCard:on)} ----------------------------------------------------- @@ -3446,9 +3446,9 @@ Choices: true} ----------------------------------------------------- == castAdd (narrow type) ========================================= castAdd { -\assumes ([equals(CSub::instance(strictCTerm2),TRUE)]==>[]) +\assumes ([equals(instance<[CSub]>(strictCTerm2),TRUE)]==>[]) \find(strictCTerm2) -\sameUpdateLevel\replacewith(CSub::cast(strictCTerm2)) +\sameUpdateLevel\replacewith(cast<[CSub]>(strictCTerm2)) Choices: true} ----------------------------------------------------- @@ -3457,13 +3457,13 @@ castAdd2 { \assumes ([equals(cs,gt)]==>[]) \find(gt) \sameUpdateLevel\varcond(\strict\sub(C, G)) -\replacewith(C::cast(gt)) +\replacewith(cast<[C]>(gt)) Choices: true} ----------------------------------------------------- == castDel (castDel) ========================================= castDel { -\find(C::cast(castedTerm)) +\find(cast<[C]>(castedTerm)) \replacewith(castedTerm) \heuristics(cast_deletion, simplify) Choices: true} @@ -3471,7 +3471,7 @@ Choices: true} == castDel2 (castDel) ========================================= castDel2 { \assumes ([equals(cs,gt)]==>[]) -\find(C::cast(gt)) +\find(cast<[C]>(gt)) \sameUpdateLevel\replacewith(cs) Choices: true} @@ -3481,7 +3481,7 @@ castLongToFloatAddition2 { \find(#normalassign ((modal operator))|{{ .. #loc = #seFloat + #seLong; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(#seFloat,float::cast(#seLong))),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(#seFloat,cast<[float]>(#seLong))),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -3498,32 +3498,32 @@ Choices: programRules:Java} ----------------------------------------------------- == castTrueImpliesOriginalTrue (castTrueImpliesOriginalTrue) ========================================= castTrueImpliesOriginalTrue { -\assumes ([equals(boolean::select(h,o,f),TRUE)]==>[]) -\find(==>equals(any::select(h,o,f),TRUE)) +\assumes ([equals(select<[boolean]>(h,o,f),TRUE)]==>[]) +\find(==>equals(select<[any]>(h,o,f),TRUE)) \replacewith([]==>[true]) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == castType (castType) ========================================= castType { -\assumes ([equals(H::instance(C::cast(s)),TRUE)]==>[]) -\find(equals(CSub::instance(s),TRUE)==>) -\replacewith([equals(H::instance(s),TRUE)]==>[]) +\assumes ([equals(instance<[H]>(cast<[C]>(s)),TRUE)]==>[]) +\find(equals(instance<[CSub]>(s),TRUE)==>) +\replacewith([equals(instance<[H]>(s),TRUE)]==>[]) \heuristics(simplify) Choices: true} ----------------------------------------------------- == castType2 (castType) ========================================= castType2 { -\assumes ([]==>[equals(H::instance(C::cast(s)),TRUE)]) -\find(equals(CSub::instance(s),TRUE)==>) -\replacewith([]==>[equals(H::instance(s),TRUE)]) +\assumes ([]==>[equals(instance<[H]>(cast<[C]>(s)),TRUE)]) +\find(equals(instance<[CSub]>(s),TRUE)==>) +\replacewith([]==>[equals(instance<[H]>(s),TRUE)]) \heuristics(simplify) Choices: true} ----------------------------------------------------- == castedGetAny (castedGetAny) ========================================= castedGetAny { -\find(beta::cast(any::seqGet(seq,idx))) -\replacewith(beta::seqGet(seq,idx)) +\find(cast<[beta]>(seqGet<[any]>(seq,idx))) +\replacewith(seqGet<[beta]>(seq,idx)) \heuristics(simplify) Choices: sequences:on} ----------------------------------------------------- @@ -3562,15 +3562,15 @@ Choices: true} ----------------------------------------------------- == closeType (closeType) ========================================= closeType { -\assumes ([]==>[equals(G::instance(t1),TRUE)]) -\find(equals(GSub::instance(t1),TRUE)==>) +\assumes ([]==>[equals(instance<[G]>(t1),TRUE)]) +\find(equals(instance<[GSub]>(t1),TRUE)==>) \closegoal\heuristics(closure) Choices: true} ----------------------------------------------------- == closeTypeSwitched (closeType) ========================================= closeTypeSwitched { -\assumes ([equals(GSub::instance(t1),TRUE)]==>[]) -\find(==>equals(G::instance(t1),TRUE)) +\assumes ([equals(instance<[GSub]>(t1),TRUE)]==>[]) +\find(==>equals(instance<[G]>(t1),TRUE)) \closegoal\heuristics(closure) Choices: true} ----------------------------------------------------- @@ -5163,14 +5163,14 @@ Choices: true} createdInHeapToElementOf { \find(createdInHeap(s,h)) \varcond(\notFreeIn(fv (variable), h (Heap term)), \notFreeIn(fv (variable), s (LocSet term)), \notFreeIn(ov (variable), h (Heap term)), \notFreeIn(ov (variable), s (LocSet term))) -\replacewith(all{ov (variable)}(all{fv (variable)}(imp(elementOf(ov,fv,s),or(equals(ov,null),equals(boolean::select(h,ov,java.lang.Object::),TRUE)))))) +\replacewith(all{ov (variable)}(all{fv (variable)}(imp(elementOf(ov,fv,s),or(equals(ov,null),equals(select<[boolean]>(h,ov,java.lang.Object::),TRUE)))))) \heuristics(classAxiom) Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithAllFields (createdInHeapWithAllFields) ========================================= createdInHeapWithAllFields { \find(createdInHeap(allFields(o),h)) -\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::),TRUE))) +\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5178,14 +5178,14 @@ Choices: programRules:Java} createdInHeapWithAllFieldsEQ { \assumes ([equals(allFields(o),EQ)]==>[]) \find(createdInHeap(EQ,h)) -\sameUpdateLevel\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::),TRUE))) +\sameUpdateLevel\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithArrayRange (createdInHeapWithArrayRange) ========================================= createdInHeapWithArrayRange { \find(createdInHeap(arrayRange(o,lower,upper),h)) -\replacewith(or(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::),TRUE)),lt(upper,lower))) +\replacewith(or(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE)),lt(upper,lower))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5193,7 +5193,7 @@ Choices: programRules:Java} createdInHeapWithArrayRangeEQ { \assumes ([equals(arrayRange(o,lower,upper),EQ)]==>[]) \find(createdInHeap(EQ,h)) -\sameUpdateLevel\replacewith(or(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::),TRUE)),lt(upper,lower))) +\sameUpdateLevel\replacewith(or(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE)),lt(upper,lower))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5223,14 +5223,14 @@ Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithSelect (createdInHeapWithSelect) ========================================= createdInHeapWithSelect { -\find(==>createdInHeap(LocSet::select(h,o,f),h)) +\find(==>createdInHeap(select<[LocSet]>(h,o,f),h)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithSelectEQ (createdInHeapWithSelectEQ) ========================================= createdInHeapWithSelectEQ { -\assumes ([equals(LocSet::select(h,o,f),EQ)]==>[]) +\assumes ([equals(select<[LocSet]>(h,o,f),EQ)]==>[]) \find(==>createdInHeap(EQ,h)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) @@ -5254,7 +5254,7 @@ Choices: programRules:Java} == createdInHeapWithSingleton (createdInHeapWithSingleton) ========================================= createdInHeapWithSingleton { \find(createdInHeap(singleton(o,f),h)) -\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::),TRUE))) +\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5262,7 +5262,7 @@ Choices: programRules:Java} createdInHeapWithSingletonEQ { \assumes ([equals(singleton(o,f),EQ)]==>[]) \find(createdInHeap(EQ,h)) -\sameUpdateLevel\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::),TRUE))) +\sameUpdateLevel\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5335,7 +5335,7 @@ Choices: true} defInDomainImpliesCreated { \find(inDomainImpliesCreated(m)) \varcond(\notFreeIn(o (variable), m (Map term))) -\replacewith(all{o (variable)}(imp(inDomain(m,o),equals(boolean::select(heap,o,java.lang.Object::),TRUE)))) +\replacewith(all{o (variable)}(imp(inDomain(m,o),equals(select<[boolean]>(heap,o,java.lang.Object::),TRUE)))) \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- @@ -5343,7 +5343,7 @@ Choices: true} defIsFinite { \find(isFinite(m)) \varcond(\notFreeIn(s (variable), m (Map term)), \notFreeIn(vx (variable), m (Map term))) -\replacewith(exists{s (variable)}(all{vx (variable)}(equiv(inDomain(m,vx),exists{ix (variable)}(and(and(leq(Z(0(#)),ix),lt(ix,seqLen(s))),equals(any::seqGet(s,ix),vx))))))) +\replacewith(exists{s (variable)}(all{vx (variable)}(equiv(inDomain(m,vx),exists{ix (variable)}(and(and(leq(Z(0(#)),ix),lt(ix,seqLen(s))),equals(seqGet<[any]>(s,ix),vx))))))) Choices: true} ----------------------------------------------------- @@ -5382,7 +5382,7 @@ Choices: true} defMapSingleton { \find(mapSingleton(xa,y)) \varcond(\notFreeIn(vy (variable), y (any term)), \notFreeIn(vy (variable), xa (alpha term))) -\replacewith(mapForeach{vy (variable)}(if-then-else(equals(vy,any::cast(xa)),TRUE,FALSE),y)) +\replacewith(mapForeach{vy (variable)}(if-then-else(equals(vy,cast<[any]>(xa)),TRUE,FALSE),y)) Choices: true} ----------------------------------------------------- @@ -5406,7 +5406,7 @@ Choices: sequences:on} defOfSeqConcat { \find(seqConcat(seq1,seq2)) \varcond(\notFreeIn(uSub (variable), seq2 (Seq term)), \notFreeIn(uSub (variable), seq1 (Seq term))) -\replacewith(seqDef{uSub (variable)}(Z(0(#)),add(seqLen(seq1),seqLen(seq2)),if-then-else(lt(uSub,seqLen(seq1)),any::seqGet(seq1,uSub),any::seqGet(seq2,sub(uSub,seqLen(seq1)))))) +\replacewith(seqDef{uSub (variable)}(Z(0(#)),add(seqLen(seq1),seqLen(seq2)),if-then-else(lt(uSub,seqLen(seq1)),seqGet<[any]>(seq1,uSub),seqGet<[any]>(seq2,sub(uSub,seqLen(seq1)))))) Choices: sequences:on} ----------------------------------------------------- @@ -5414,7 +5414,7 @@ Choices: sequences:on} defOfSeqReverse { \find(seqReverse(seq)) \varcond(\notFreeIn(uSub (variable), seq (Seq term))) -\replacewith(seqDef{uSub (variable)}(Z(0(#)),seqLen(seq),any::seqGet(seq,sub(sub(seqLen(seq),uSub),Z(1(#)))))) +\replacewith(seqDef{uSub (variable)}(Z(0(#)),seqLen(seq),seqGet<[any]>(seq,sub(sub(seqLen(seq),uSub),Z(1(#)))))) Choices: sequences:on} ----------------------------------------------------- @@ -5430,7 +5430,7 @@ Choices: sequences:on} defOfSeqSub { \find(seqSub(seq,from,to)) \varcond(\notFreeIn(uSub (variable), to (int term)), \notFreeIn(uSub (variable), from (int term)), \notFreeIn(uSub (variable), seq (Seq term))) -\replacewith(seqDef{uSub (variable)}(from,to,any::seqGet(seq,uSub))) +\replacewith(seqDef{uSub (variable)}(from,to,seqGet<[any]>(seq,uSub))) Choices: sequences:on} ----------------------------------------------------- @@ -5438,7 +5438,7 @@ Choices: sequences:on} defOfSeqUpd { \find(seqUpd(seq,idx,value)) \varcond(\notFreeIn(uSub (variable), seq (Seq term)), \notFreeIn(uSub (variable), value (any term)), \notFreeIn(uSub (variable), idx (int term))) -\replacewith(seqDef{uSub (variable)}(Z(0(#)),seqLen(seq),if-then-else(equals(uSub,idx),value,any::seqGet(seq,uSub)))) +\replacewith(seqDef{uSub (variable)}(Z(0(#)),seqLen(seq),if-then-else(equals(uSub,idx),value,seqGet<[any]>(seq,uSub)))) Choices: sequences:on} ----------------------------------------------------- @@ -5446,7 +5446,7 @@ Choices: sequences:on} defSeq2Map { \find(seq2map(s)) \varcond(\notFreeIn(ix (variable), s (Seq term))) -\replacewith(mapForeach{ix (variable)}(if-then-else(and(leq(Z(0(#)),ix),lt(ix,seqLen(s))),TRUE,FALSE),any::seqGet(s,ix))) +\replacewith(mapForeach{ix (variable)}(if-then-else(and(leq(Z(0(#)),ix),lt(ix,seqLen(s))),TRUE,FALSE),seqGet<[any]>(s,ix))) Choices: true} ----------------------------------------------------- @@ -5461,7 +5461,7 @@ Choices: true} definitionAllElementsOfArray { \find(allElementsOfArray(h,array,singleton(o,f))) \varcond(\notFreeIn(j (variable), f (Field term)), \notFreeIn(j (variable), o (java.lang.Object term)), \notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),singleton(java.lang.Object::select(h,array,arr(j)),f),empty))) +\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),singleton(select<[java.lang.Object]>(h,array,arr(j)),f),empty))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -5469,7 +5469,7 @@ Choices: programRules:Java} definitionAllElementsOfArray2 { \find(allElementsOfArray(h,array,allFields(o))) \varcond(\notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),allFields(java.lang.Object::select(h,array,arr(j))),empty))) +\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),allFields(select<[java.lang.Object]>(h,array,arr(j))),empty))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -5477,7 +5477,7 @@ Choices: programRules:Java} definitionAllElementsOfArrayLocsets { \find(allElementsOfArrayLocsets(h,array,singleton(o,f))) \varcond(\notFreeIn(j (variable), f (Field term)), \notFreeIn(j (variable), o (java.lang.Object term)), \notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),LocSet::select(h,java.lang.Object::select(h,array,arr(j)),f),empty))) +\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),select<[LocSet]>(h,select<[java.lang.Object]>(h,array,arr(j)),f),empty))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -5495,7 +5495,7 @@ Choices: true} definitionOfNewOnHeap { \find(==>newOnHeap(h,s)) \varcond(\notFreeIn(i (variable), h (Heap term)), \notFreeIn(i (variable), s (Seq term))) -\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s))),and(imp(equals(java.lang.Object::instance(any::seqGet(s,i)),TRUE),equals(boolean::select(h,java.lang.Object::seqGet(s,i),java.lang.Object::),FALSE)),imp(equals(Seq::instance(any::seqGet(s,i)),TRUE),newOnHeap(h,Seq::seqGet(s,i))))))]) +\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s))),and(imp(equals(instance<[java.lang.Object]>(seqGet<[any]>(s,i)),TRUE),equals(select<[boolean]>(h,seqGet<[java.lang.Object]>(s,i),java.lang.Object::),FALSE)),imp(equals(instance<[Seq]>(seqGet<[any]>(s,i)),TRUE),newOnHeap(h,seqGet<[Seq]>(s,i))))))]) \heuristics(comprehensions) Choices: true} ----------------------------------------------------- @@ -5503,7 +5503,7 @@ Choices: true} definitionOfObjectIsomorphic { \find(==>objectIsomorphic(s1,o1,s2,o2)) \varcond(\notFreeIn(i (variable), o2 (java.lang.Object term)), \notFreeIn(i (variable), o1 (java.lang.Object term)), \notFreeIn(i (variable), s2 (Seq term)), \notFreeIn(i (variable), s1 (Seq term))) -\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s1))),and(imp(equals(java.lang.Object::instance(any::seqGet(s1,i)),TRUE),equiv(equals(java.lang.Object::seqGet(s1,i),o1),equals(java.lang.Object::seqGet(s2,i),o2))),imp(equals(Seq::instance(any::seqGet(s1,i)),TRUE),objectIsomorphic(Seq::seqGet(s1,i),o1,Seq::seqGet(s2,i),o2)))))]) +\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s1))),and(imp(equals(instance<[java.lang.Object]>(seqGet<[any]>(s1,i)),TRUE),equiv(equals(seqGet<[java.lang.Object]>(s1,i),o1),equals(seqGet<[java.lang.Object]>(s2,i),o2))),imp(equals(instance<[Seq]>(seqGet<[any]>(s1,i)),TRUE),objectIsomorphic(seqGet<[Seq]>(s1,i),o1,seqGet<[Seq]>(s2,i),o2)))))]) \heuristics(comprehensions) Choices: true} ----------------------------------------------------- @@ -5511,7 +5511,7 @@ Choices: true} definitionOfObjectsIsomorphic { \find(==>objectsIsomorphic(s1,t1,s2,t2)) \varcond(\notFreeIn(i (variable), t2 (Seq term)), \notFreeIn(i (variable), t1 (Seq term)), \notFreeIn(i (variable), s2 (Seq term)), \notFreeIn(i (variable), s1 (Seq term))) -\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(t1))),and(imp(equals(java.lang.Object::instance(any::seqGet(t1,i)),TRUE),objectIsomorphic(s1,java.lang.Object::seqGet(t1,i),s2,java.lang.Object::seqGet(t2,i))),imp(equals(Seq::instance(any::seqGet(t1,i)),TRUE),objectsIsomorphic(s1,Seq::seqGet(t1,i),s2,Seq::seqGet(t2,i))))))]) +\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(t1))),and(imp(equals(instance<[java.lang.Object]>(seqGet<[any]>(t1,i)),TRUE),objectIsomorphic(s1,seqGet<[java.lang.Object]>(t1,i),s2,seqGet<[java.lang.Object]>(t2,i))),imp(equals(instance<[Seq]>(seqGet<[any]>(t1,i)),TRUE),objectsIsomorphic(s1,seqGet<[Seq]>(t1,i),s2,seqGet<[Seq]>(t2,i))))))]) \heuristics(comprehensions) Choices: true} ----------------------------------------------------- @@ -5519,7 +5519,7 @@ Choices: true} definitionOfSameTypes { \find(==>sameTypes(s1,s2)) \varcond(\notFreeIn(i (variable), s2 (Seq term)), \notFreeIn(i (variable), s1 (Seq term))) -\replacewith([]==>[and(equals(seqLen(s1),seqLen(s2)),all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s1))),and(sameType(any::seqGet(s1,i),any::seqGet(s2,i)),imp(equals(Seq::instance(any::seqGet(s1,i)),TRUE),sameTypes(Seq::seqGet(s1,i),Seq::seqGet(s2,i)))))))]) +\replacewith([]==>[and(equals(seqLen(s1),seqLen(s2)),all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s1))),and(sameType(seqGet<[any]>(s1,i),seqGet<[any]>(s2,i)),imp(equals(instance<[Seq]>(seqGet<[any]>(s1,i)),TRUE),sameTypes(seqGet<[Seq]>(s1,i),seqGet<[Seq]>(s2,i)))))))]) \heuristics(comprehensions) Choices: true} ----------------------------------------------------- @@ -5527,7 +5527,7 @@ Choices: true} definitionSeqdefWorkaround { \find(seq_def_workaround(h,lower,upper,array)) \varcond(\notFreeIn(j (variable), upper (int term)), \notFreeIn(j (variable), lower (int term)), \notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(seqDef{j (variable)}(lower,upper,any::select(h,array,arr(j)))) +\replacewith(seqDef{j (variable)}(lower,upper,select<[any]>(h,array,arr(j)))) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- @@ -5535,7 +5535,7 @@ Choices: sequences:on} definitionSeqdefWorkaround2 { \find(seq_def_workaround2(h,lower,upper,array,singleton(o,f))) \varcond(\notFreeIn(j (variable), upper (int term)), \notFreeIn(j (variable), lower (int term)), \notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), f (Field term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(seqDef{j (variable)}(lower,upper,any::select(h,java.lang.Object::select(h,array,arr(j)),f))) +\replacewith(seqDef{j (variable)}(lower,upper,select<[any]>(h,select<[java.lang.Object]>(h,array,arr(j)),f))) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- @@ -5554,7 +5554,7 @@ delete_unnecessary_cast { #lhs = (#npit) #se; ... }}| (post)) \sameUpdateLevel\varcond(\hasSort(#npit (program NonPrimitiveType), G), \sub(\typeof(#se (program SimpleExpression)), G)) -\add [or(equals(#se,null),equals(G::instance(#se),TRUE))]==>[] \replacewith(update-application(elem-update(#lhs (program LeftHandSide))(#addCast(#se,#lhs)),#allmodal(post))) +\add [or(equals(#se,null),equals(instance<[G]>(#se),TRUE))]==>[] \replacewith(update-application(elem-update(#lhs (program LeftHandSide))(#addCast(#se,#lhs)),#allmodal(post))) \heuristics(simplify_prog) Choices: programRules:Java} ----------------------------------------------------- @@ -5817,18 +5817,18 @@ Choices: programRules:Java} ----------------------------------------------------- == dismissNonSelectedField (dismissNonSelectedField) ========================================= dismissNonSelectedField { -\find(alpha::select(store(h,o,f1,x),u,f2)) +\find(select<[alpha]>(store(h,o,f1,x),u,f2)) \varcond(\differentFields (f1 (Field term), f2 (Field term))) -\replacewith(alpha::select(h,u,f2)) +\replacewith(select<[alpha]>(h,u,f2)) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- == dismissNonSelectedFieldEQ (dismissNonSelectedFieldEQ) ========================================= dismissNonSelectedFieldEQ { \assumes ([equals(store(h,o,f1,x),EQ)]==>[]) -\find(alpha::select(EQ,u,f2)) +\find(select<[alpha]>(EQ,u,f2)) \sameUpdateLevel\varcond(\differentFields (f1 (Field term), f2 (Field term))) -\replacewith(alpha::select(h,u,f2)) +\replacewith(select<[alpha]>(h,u,f2)) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -6244,6 +6244,14 @@ dropEffectlessStores { \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- +== dynamic_type_for_null (dynamic_type_for_null) ========================================= +dynamic_type_for_null { +\find(exactInstance<[G]>(null)) +\varcond(\not\same(G, Null)) +\replacewith(FALSE) +\heuristics(concrete) +Choices: programRules:Java} +----------------------------------------------------- == elementOfAllFields (elementOfAllFields) ========================================= elementOfAllFields { \find(elementOf(o,f,allFields(o2))) @@ -6299,7 +6307,7 @@ Choices: programRules:Java} == elementOfFreshLocs (elementOfFreshLocs) ========================================= elementOfFreshLocs { \find(elementOf(o,f,freshLocs(h))) -\replacewith(and(not(equals(o,null)),not(equals(boolean::select(h,o,java.lang.Object::),TRUE)))) +\replacewith(and(not(equals(o,null)),not(equals(select<[boolean]>(h,o,java.lang.Object::),TRUE)))) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- @@ -6608,7 +6616,7 @@ Choices: true} elim_exists2 { \find(exists{Gvar (variable)}(equals(Gvar,Hterm))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(equals(G::instance(Hterm),TRUE)) +\replacewith(equals(instance<[G]>(Hterm),TRUE)) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6616,7 +6624,7 @@ Choices: true} elim_exists3 { \find(exists{Gvar (variable)}(equals(Hterm,Gvar))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(equals(G::instance(Hterm),TRUE)) +\replacewith(equals(instance<[G]>(Hterm),TRUE)) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6640,7 +6648,7 @@ Choices: true} elim_exists6 { \find(exists{Gvar (variable)}(and(phi,equals(Gvar,Hterm)))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(and(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),TRUE))) +\replacewith(and(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),TRUE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6648,7 +6656,7 @@ Choices: true} elim_exists7 { \find(exists{Gvar (variable)}(and(phi,equals(Hterm,Gvar)))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(and(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),TRUE))) +\replacewith(and(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),TRUE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6752,7 +6760,7 @@ Choices: true} elim_forall10 { \find(all{Gvar (variable)}(imp(equals(Gvar,Hterm),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6760,7 +6768,7 @@ Choices: true} elim_forall11 { \find(all{Gvar (variable)}(imp(equals(Hterm,Gvar),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6784,7 +6792,7 @@ Choices: true} elim_forall14 { \find(all{Gvar (variable)}(imp(and(psi,equals(Gvar,Hterm)),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),imp(psi,phi)),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),imp(psi,phi)),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6792,7 +6800,7 @@ Choices: true} elim_forall15 { \find(all{Gvar (variable)}(imp(and(psi,equals(Hterm,Gvar)),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),imp(psi,phi)),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),imp(psi,phi)),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6816,7 +6824,7 @@ Choices: true} elim_forall18 { \find(all{Gvar (variable)}(imp(and(equals(Gvar,Hterm),psi),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),imp(psi,phi)),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),imp(psi,phi)),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6824,7 +6832,7 @@ Choices: true} elim_forall19 { \find(all{Gvar (variable)}(imp(and(equals(Hterm,Gvar),psi),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),imp(psi,phi)),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),imp(psi,phi)),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6832,7 +6840,7 @@ Choices: true} elim_forall2 { \find(all{Gvar (variable)}(not(equals(Gvar,Hterm)))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(equals(G::instance(Hterm),FALSE)) +\replacewith(equals(instance<[G]>(Hterm),FALSE)) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6840,7 +6848,7 @@ Choices: true} elim_forall3 { \find(all{Gvar (variable)}(not(equals(Hterm,Gvar)))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(equals(G::instance(Hterm),FALSE)) +\replacewith(equals(instance<[G]>(Hterm),FALSE)) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6864,7 +6872,7 @@ Choices: true} elim_forall6 { \find(all{Gvar (variable)}(or(phi,not(equals(Gvar,Hterm))))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6872,7 +6880,7 @@ Choices: true} elim_forall7 { \find(all{Gvar (variable)}(or(phi,not(equals(Hterm,Gvar))))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -7312,7 +7320,7 @@ Choices: programRules:Java} equalityToSelect { \find(equals(h,h2)) \varcond(\notFreeIn(fv (variable), h2 (Heap term)), \notFreeIn(fv (variable), h (Heap term)), \notFreeIn(ov (variable), h2 (Heap term)), \notFreeIn(ov (variable), h (Heap term))) -\replacewith(all{ov (variable)}(all{fv (variable)}(equals(any::select(h,ov,fv),any::select(h2,ov,fv))))) +\replacewith(all{ov (variable)}(all{fv (variable)}(equals(select<[any]>(h,ov,fv),select<[any]>(h2,ov,fv))))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- @@ -7320,7 +7328,7 @@ Choices: programRules:Java} equalityToSeqGetAndSeqLen { \find(equals(left,right)) \varcond(\notFreeIn(iv (variable), right (Seq term)), \notFreeIn(iv (variable), left (Seq term))) -\replacewith(and(equals(seqLen(left),seqLen(right)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(left))),equals(any::seqGet(left,iv),any::seqGet(right,iv)))))) +\replacewith(and(equals(seqLen(left),seqLen(right)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(left))),equals(seqGet<[any]>(left,iv),seqGet<[any]>(right,iv)))))) \heuristics(defOpsSeqEquality) Choices: sequences:on} ----------------------------------------------------- @@ -7328,7 +7336,7 @@ Choices: sequences:on} equalityToSeqGetAndSeqLenLeft { \find(equals(s,s2)==>) \varcond(\notFreeIn(iv (variable), s2 (Seq term)), \notFreeIn(iv (variable), s (Seq term))) -\add [and(equals(seqLen(s),seqLen(s2)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(any::seqGet(s,iv),any::seqGet(s2,iv)))))]==>[] +\add [and(equals(seqLen(s),seqLen(s2)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(seqGet<[any]>(s,iv),seqGet<[any]>(s2,iv)))))]==>[] \heuristics(inReachableStateImplication) Choices: sequences:on} ----------------------------------------------------- @@ -7336,7 +7344,7 @@ Choices: sequences:on} equalityToSeqGetAndSeqLenRight { \find(==>equals(s,s2)) \varcond(\notFreeIn(iv (variable), s2 (Seq term)), \notFreeIn(iv (variable), s (Seq term))) -\replacewith([]==>[and(equals(seqLen(s),seqLen(s2)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(any::seqGet(s,iv),any::seqGet(s2,iv)))))]) +\replacewith([]==>[and(equals(seqLen(s),seqLen(s2)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(seqGet<[any]>(s,iv),seqGet<[any]>(s2,iv)))))]) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- @@ -7992,7 +8000,7 @@ Choices: true} ----------------------------------------------------- == exact_instance_definition_boolean (exact_instance_definition_boolean) ========================================= exact_instance_definition_boolean { -\find(equals(boolean::exactInstance(bool),TRUE)) +\find(equals(exactInstance<[boolean]>(bool),TRUE)) \varcond(\notFreeIn(bv (variable), bool (boolean term))) \replacewith(exists{bv (variable)}(equals(bool,bv))) \heuristics(simplify) @@ -8000,7 +8008,7 @@ Choices: programRules:Java} ----------------------------------------------------- == exact_instance_definition_int (exact_instance_definition_int) ========================================= exact_instance_definition_int { -\find(equals(int::exactInstance(idx0),TRUE)) +\find(equals(exactInstance<[int]>(idx0),TRUE)) \varcond(\notFreeIn(iv (variable), idx0 (int term))) \replacewith(exists{iv (variable)}(equals(idx0,iv))) \heuristics(simplify) @@ -8008,7 +8016,7 @@ Choices: programRules:Java} ----------------------------------------------------- == exact_instance_definition_null (exact_instance_definition_null) ========================================= exact_instance_definition_null { -\find(equals(Null::exactInstance(obj),TRUE)) +\find(equals(exactInstance<[Null]>(obj),TRUE)) \varcond(\notFreeIn(bv (variable), bool (boolean term))) \replacewith(equals(obj,null)) \heuristics(simplify) @@ -8016,7 +8024,7 @@ Choices: programRules:Java} ----------------------------------------------------- == exact_instance_for_interfaces_or_abstract_classes (interfaces or abstract classes have no exact instances) ========================================= exact_instance_for_interfaces_or_abstract_classes { -\find(G::exactInstance(obj)) +\find(exactInstance<[G]>(obj)) \varcond(\isAbstractOrInterface (G)) \replacewith(FALSE) \heuristics(simplify) @@ -8024,8 +8032,8 @@ Choices: programRules:Java} ----------------------------------------------------- == exact_instance_known_dynamic_type (exact_instance_known_dynamic_type) ========================================= exact_instance_known_dynamic_type { -\assumes ([equals(G::exactInstance(a),TRUE)]==>[]) -\find(H::exactInstance(a)) +\assumes ([equals(exactInstance<[G]>(a),TRUE)]==>[]) +\find(exactInstance<[H]>(a)) \sameUpdateLevel\varcond(\not\same(G, H)) \replacewith(FALSE) \heuristics(evaluate_instanceof, simplify) @@ -9580,9 +9588,9 @@ Choices: true} ----------------------------------------------------- == getAnyOfArray2seq (getAnyOfArray2seq) ========================================= getAnyOfArray2seq { -\find(any::seqGet(array2seq(h,a),idx)) +\find(seqGet<[any]>(array2seq(h,a),idx)) \add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; -\replacewith(any::select(h,a,arr(idx))) +\replacewith(select<[any]>(h,a,arr(idx))) Choices: sequences:on} ----------------------------------------------------- @@ -9594,15 +9602,15 @@ getJavaCardTransient { #jcsystemType.#getTransient(#se)@#jcsystemType; ... }}| (post)) \replacewith([]==>[not(equals(#se,null))]) ; -\replacewith([]==>[update-application(elem-update(#lhs (program LeftHandSide))(int::select(heap,#se,java.lang.Object::)),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#lhs (program LeftHandSide))(select<[int]>(heap,#se,java.lang.Object::)),#allmodal(post))]) \heuristics(simplify_prog) Choices: (programRules:Java & JavaCard:on)} ----------------------------------------------------- == getOfArray2seq (getOfArray2seq) ========================================= getOfArray2seq { -\find(alpha::seqGet(array2seq(h,a),idx)) +\find(seqGet<[alpha]>(array2seq(h,a),idx)) \add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; -\replacewith(alpha::select(h,a,arr(idx))) +\replacewith(select<[alpha]>(h,a,arr(idx))) Choices: sequences:on} ----------------------------------------------------- @@ -9616,7 +9624,7 @@ Choices: true} == getOfMapForeach (getOfMapForeach) ========================================= getOfMapForeach { \find(mapGet(mapForeach{v (variable)}(b,y),x)) -\sameUpdateLevel\replacewith(if-then-else(inDomain(mapForeach{v (variable)}(b,y),x),subst{v (variable)}(alpha::cast(x),y),mapUndef)) +\sameUpdateLevel\replacewith(if-then-else(inDomain(mapForeach{v (variable)}(b,y),x),subst{v (variable)}(cast<[alpha]>(x),y),mapUndef)) \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- @@ -9651,98 +9659,98 @@ Choices: true} == getOfSeq2Map (getOfSeq2Map) ========================================= getOfSeq2Map { \find(mapGet(seq2map(s),x)) -\sameUpdateLevel\replacewith(if-then-else(and(and(equals(int::instance(x),TRUE),leq(Z(0(#)),int::cast(x))),lt(int::cast(x),seqLen(s))),any::seqGet(s,int::cast(x)),mapUndef)) +\sameUpdateLevel\replacewith(if-then-else(and(and(equals(instance<[int]>(x),TRUE),leq(Z(0(#)),cast<[int]>(x))),lt(cast<[int]>(x),seqLen(s))),seqGet<[any]>(s,cast<[int]>(x)),mapUndef)) \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- == getOfSeqConcat (getOfSeqConcat) ========================================= getOfSeqConcat { -\find(alpha::seqGet(seqConcat(seq,seq2),idx)) -\replacewith(if-then-else(lt(idx,seqLen(seq)),alpha::seqGet(seq,idx),alpha::seqGet(seq2,sub(idx,seqLen(seq))))) +\find(seqGet<[alpha]>(seqConcat(seq,seq2),idx)) +\replacewith(if-then-else(lt(idx,seqLen(seq)),seqGet<[alpha]>(seq,idx),seqGet<[alpha]>(seq2,sub(idx,seqLen(seq))))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqConcatEQ (getOfSeqConcat) ========================================= getOfSeqConcatEQ { \assumes ([equals(seqConcat(seq,seq2),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) -\sameUpdateLevel\replacewith(if-then-else(lt(idx,seqLen(seq)),alpha::seqGet(seq,idx),alpha::seqGet(seq2,sub(idx,seqLen(seq))))) +\find(seqGet<[alpha]>(EQ,idx)) +\sameUpdateLevel\replacewith(if-then-else(lt(idx,seqLen(seq)),seqGet<[alpha]>(seq,idx),seqGet<[alpha]>(seq2,sub(idx,seqLen(seq))))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- == getOfSeqDef (getOfSeqDef) ========================================= getOfSeqDef { -\find(alpha::seqGet(seqDef{uSub (variable)}(from,to,t),idx)) +\find(seqGet<[alpha]>(seqDef{uSub (variable)}(from,to,t),idx)) \varcond(\notFreeIn(uSub (variable), to (int term)), \notFreeIn(uSub (variable), from (int term))) -\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),alpha::cast(subst{uSub (variable)}(add(idx,from),t)),alpha::cast(seqGetOutside))) +\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),cast<[alpha]>(subst{uSub (variable)}(add(idx,from),t)),cast<[alpha]>(seqGetOutside))) \heuristics(simplify) Choices: sequences:on} ----------------------------------------------------- == getOfSeqDefEQ (getOfSeqDef) ========================================= getOfSeqDefEQ { \assumes ([equals(seqDef{uSub (variable)}(from,to,t),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) +\find(seqGet<[alpha]>(EQ,idx)) \sameUpdateLevel\varcond(\notFreeIn(uSub (variable), to (int term)), \notFreeIn(uSub (variable), from (int term))) -\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),alpha::cast(subst{uSub (variable)}(add(idx,from),t)),alpha::cast(seqGetOutside))) +\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),cast<[alpha]>(subst{uSub (variable)}(add(idx,from),t)),cast<[alpha]>(seqGetOutside))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqReverse (getOfSeqReverse) ========================================= getOfSeqReverse { -\find(alpha::seqGet(seqReverse(seq),idx)) -\replacewith(alpha::seqGet(seq,sub(sub(seqLen(seq),Z(1(#))),idx))) +\find(seqGet<[alpha]>(seqReverse(seq),idx)) +\replacewith(seqGet<[alpha]>(seq,sub(sub(seqLen(seq),Z(1(#))),idx))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqReverseEQ (getOfSeqReverse) ========================================= getOfSeqReverseEQ { \assumes ([equals(seqReverse(seq),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) -\sameUpdateLevel\replacewith(alpha::seqGet(seq,sub(sub(seqLen(seq),Z(1(#))),idx))) +\find(seqGet<[alpha]>(EQ,idx)) +\sameUpdateLevel\replacewith(seqGet<[alpha]>(seq,sub(sub(seqLen(seq),Z(1(#))),idx))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSingleton (getOfSeqSingleton) ========================================= getOfSeqSingleton { -\find(alpha::seqGet(seqSingleton(x),idx)) -\replacewith(if-then-else(equals(idx,Z(0(#))),alpha::cast(x),alpha::cast(seqGetOutside))) +\find(seqGet<[alpha]>(seqSingleton(x),idx)) +\replacewith(if-then-else(equals(idx,Z(0(#))),cast<[alpha]>(x),cast<[alpha]>(seqGetOutside))) \heuristics(simplify) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSingletonConcrete (getOfSeqSingletonConcrete) ========================================= getOfSeqSingletonConcrete { -\find(alpha::seqGet(seqSingleton(x),Z(0(#)))) -\replacewith(alpha::cast(x)) +\find(seqGet<[alpha]>(seqSingleton(x),Z(0(#)))) +\replacewith(cast<[alpha]>(x)) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSingletonEQ (getOfSeqSingleton) ========================================= getOfSeqSingletonEQ { \assumes ([equals(seqSingleton(x),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) -\sameUpdateLevel\replacewith(if-then-else(equals(idx,Z(0(#))),alpha::cast(x),alpha::cast(seqGetOutside))) +\find(seqGet<[alpha]>(EQ,idx)) +\sameUpdateLevel\replacewith(if-then-else(equals(idx,Z(0(#))),cast<[alpha]>(x),cast<[alpha]>(seqGetOutside))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSub (getOfSeqSub) ========================================= getOfSeqSub { -\find(alpha::seqGet(seqSub(seq,from,to),idx)) -\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),alpha::seqGet(seq,add(idx,from)),alpha::cast(seqGetOutside))) +\find(seqGet<[alpha]>(seqSub(seq,from,to),idx)) +\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),seqGet<[alpha]>(seq,add(idx,from)),cast<[alpha]>(seqGetOutside))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSubEQ (getOfSeqSub) ========================================= getOfSeqSubEQ { \assumes ([equals(seqSub(seq,from,to),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) -\sameUpdateLevel\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),alpha::seqGet(seq,add(idx,from)),alpha::cast(seqGetOutside))) +\find(seqGet<[alpha]>(EQ,idx)) +\sameUpdateLevel\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),seqGet<[alpha]>(seq,add(idx,from)),cast<[alpha]>(seqGetOutside))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- == getOfSeqUpd (getOfSeqUpd) ========================================= getOfSeqUpd { -\find(alpha::seqGet(seqUpd(seq,idx,value),jdx)) -\replacewith(if-then-else(and(and(leq(Z(0(#)),jdx),lt(jdx,seqLen(seq))),equals(idx,jdx)),alpha::cast(value),alpha::seqGet(seq,jdx))) +\find(seqGet<[alpha]>(seqUpd(seq,idx,value),jdx)) +\replacewith(if-then-else(and(and(leq(Z(0(#)),jdx),lt(jdx,seqLen(seq))),equals(idx,jdx)),cast<[alpha]>(value),seqGet<[alpha]>(seq,jdx))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- @@ -10602,7 +10610,7 @@ Choices: true} == inDomainOfMapForeach (inDomainOfMapForeach) ========================================= inDomainOfMapForeach { \find(inDomain(mapForeach{v (variable)}(b,y),x)) -\replacewith(and(equals(subst{v (variable)}(alpha::cast(x),b),TRUE),equals(alpha::instance(x),TRUE))) +\replacewith(and(equals(subst{v (variable)}(cast<[alpha]>(x),b),TRUE),equals(instance<[alpha]>(x),TRUE))) \heuristics(simplify) Choices: true} ----------------------------------------------------- @@ -10637,7 +10645,7 @@ Choices: true} == inDomainOfSeq2Map (inDomainOfSeq2Map) ========================================= inDomainOfSeq2Map { \find(inDomain(seq2map(s),x)) -\replacewith(and(and(equals(int::instance(x),TRUE),leq(Z(0(#)),int::cast(x))),lt(int::cast(x),seqLen(s)))) +\replacewith(and(and(equals(instance<[int]>(x),TRUE),leq(Z(0(#)),cast<[int]>(x))),lt(cast<[int]>(x),seqLen(s)))) \heuristics(simplify) Choices: true} ----------------------------------------------------- @@ -11177,7 +11185,7 @@ Choices: true} indexOf { \find(clIndexOfChar(l,c,i)) \varcond(\notFreeIn(iv (variable), i (int term)), \notFreeIn(iv (variable), c (int term)), \notFreeIn(iv (variable), l (Seq term))) -\replacewith(ifExThenElse{iv (variable)}(and(and(and(geq(i,Z(0(#))),geq(iv,i)),lt(iv,seqLen(l))),equals(int::seqGet(l,iv),c)),iv,Z(neglit(1(#))))) +\replacewith(ifExThenElse{iv (variable)}(and(and(and(geq(i,Z(0(#))),geq(iv,i)),lt(iv,seqLen(l))),equals(seqGet<[int]>(l,iv),c)),iv,Z(neglit(1(#))))) \heuristics(stringsExpandDefNormalOp) Choices: Strings:on} ----------------------------------------------------- @@ -11185,7 +11193,7 @@ Choices: Strings:on} indexOfSeqConcatFirst { \find(seqIndexOf(seqConcat(s1,s2),x)) \sameUpdateLevel\varcond(\notFreeIn(idx (variable), x (any term)), \notFreeIn(idx (variable), s2 (Seq term)), \notFreeIn(idx (variable), s1 (Seq term))) -\add []==>[exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s1))),equals(any::seqGet(s1,idx),x)))] ; +\add []==>[exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s1))),equals(seqGet<[any]>(s1,idx),x)))] ; \replacewith(seqIndexOf(s1,x)) Choices: sequences:on} @@ -11194,7 +11202,7 @@ Choices: sequences:on} indexOfSeqConcatSecond { \find(seqIndexOf(seqConcat(s1,s2),x)) \sameUpdateLevel\varcond(\notFreeIn(idx (variable), x (any term)), \notFreeIn(idx (variable), s2 (Seq term)), \notFreeIn(idx (variable), s1 (Seq term))) -\add []==>[and(not(exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s1))),equals(any::seqGet(s1,idx),x)))),exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s2))),equals(any::seqGet(s2,idx),x))))] ; +\add []==>[and(not(exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s1))),equals(seqGet<[any]>(s1,idx),x)))),exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s2))),equals(seqGet<[any]>(s2,idx),x))))] ; \replacewith(add(seqIndexOf(s2,x),seqLen(s1))) Choices: sequences:on} @@ -11210,7 +11218,7 @@ Choices: sequences:on} indexOfSeqSub { \find(seqIndexOf(seqSub(s,from,to),x)) \sameUpdateLevel\varcond(\notFreeIn(nx (variable), to (int term)), \notFreeIn(nx (variable), from (int term)), \notFreeIn(nx (variable), x (any term)), \notFreeIn(nx (variable), s (Seq term))) -\add []==>[and(and(and(leq(from,seqIndexOf(s,x)),lt(seqIndexOf(s,x),to)),leq(Z(0(#)),from)),exists{nx (variable)}(and(and(leq(Z(0(#)),nx),lt(nx,seqLen(s))),equals(any::seqGet(s,nx),x))))] ; +\add []==>[and(and(and(leq(from,seqIndexOf(s,x)),lt(seqIndexOf(s,x),to)),leq(Z(0(#)),from)),exists{nx (variable)}(and(and(leq(Z(0(#)),nx),lt(nx,seqLen(s))),equals(seqGet<[any]>(s,nx),x))))] ; \replacewith(sub(seqIndexOf(s,x),from)) Choices: sequences:on} @@ -11225,25 +11233,25 @@ Choices: Strings:on} ----------------------------------------------------- == ineffectiveCast (ineffectiveCast) ========================================= ineffectiveCast { -\assumes ([equals(H::instance(t),TRUE)]==>[]) -\find(H::cast(t)) -\sameUpdateLevel\add [equals(H::cast(t),t)]==>[] +\assumes ([equals(instance<[H]>(t),TRUE)]==>[]) +\find(cast<[H]>(t)) +\sameUpdateLevel\add [equals(cast<[H]>(t),t)]==>[] \heuristics(inReachableStateImplication) Choices: true} ----------------------------------------------------- == ineffectiveCast2 (ineffectiveCast2) ========================================= ineffectiveCast2 { \assumes ([equals(cs,gt)]==>[]) -\find(C::cast(gt)) -\sameUpdateLevel\add [equals(C::cast(gt),gt)]==>[] +\find(cast<[C]>(gt)) +\sameUpdateLevel\add [equals(cast<[C]>(gt),gt)]==>[] \heuristics(inReachableStateImplication) Choices: true} ----------------------------------------------------- == ineffectiveCast3 (ineffectiveCast3) ========================================= ineffectiveCast3 { -\assumes ([equals(H::exactInstance(t),TRUE)]==>[]) -\find(H::cast(t)) -\sameUpdateLevel\add [equals(H::cast(t),t)]==>[] +\assumes ([equals(exactInstance<[H]>(t),TRUE)]==>[]) +\find(cast<[H]>(t)) +\sameUpdateLevel\add [equals(cast<[H]>(t),t)]==>[] \heuristics(inReachableStateImplication) Choices: true} ----------------------------------------------------- @@ -11299,7 +11307,7 @@ Choices: programRules:Java} insert_constant_string_value { \assumes ([wellFormed(heap)]==>[]) \find(#csv) -\sameUpdateLevel\replacewith(if-then-else(equals(#constantvalue(#csv),null),null,strPool(Seq::cast(#constantvalue(#csv))))) +\sameUpdateLevel\replacewith(if-then-else(equals(#constantvalue(#csv),null),null,strPool(cast<[Seq]>(#constantvalue(#csv))))) \heuristics(concrete) Choices: true} ----------------------------------------------------- @@ -11434,8 +11442,8 @@ Choices: programRules:Java} ----------------------------------------------------- == instance_for_final_types (instance_for_final_types) ========================================= instance_for_final_types { -\assumes ([]==>[equals(J::exactInstance(a),TRUE)]) -\find(equals(J::instance(a),TRUE)==>) +\assumes ([]==>[equals(exactInstance<[J]>(a),TRUE)]) +\find(equals(instance<[J]>(a),TRUE)==>) \varcond(\isFinal (J)) \replacewith([equals(a,null)]==>[]) \heuristics(simplify) @@ -11456,8 +11464,8 @@ Choices: programRules:Java} ----------------------------------------------------- == instanceof_known_dynamic_type (instanceof_known_dynamic_type) ========================================= instanceof_known_dynamic_type { -\assumes ([equals(G::exactInstance(a),TRUE)]==>[]) -\find(H::instance(a)) +\assumes ([equals(exactInstance<[G]>(a),TRUE)]==>[]) +\find(instance<[H]>(a)) \sameUpdateLevel\varcond(\sub(G, H)) \replacewith(TRUE) \heuristics(evaluate_instanceof, simplify) @@ -11465,8 +11473,8 @@ Choices: true} ----------------------------------------------------- == instanceof_known_dynamic_type_2 (instanceof_known_dynamic_type_2) ========================================= instanceof_known_dynamic_type_2 { -\assumes ([equals(G::exactInstance(a),TRUE)]==>[]) -\find(H::instance(a)) +\assumes ([equals(exactInstance<[G]>(a),TRUE)]==>[]) +\find(instance<[H]>(a)) \sameUpdateLevel\varcond(\not\sub(G, H)) \replacewith(FALSE) \heuristics(evaluate_instanceof, simplify) @@ -11474,7 +11482,7 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible (instanceof disjoint type) ========================================= instanceof_not_compatible { -\find(equals(G::instance(a),TRUE)) +\find(equals(instance<[G]>(a),TRUE)) \varcond(\sub(Null, G), \disjointModuloNull(G, \typeof(a (any term)))) \replacewith(equals(a,null)) \heuristics(evaluate_instanceof, concrete) @@ -11482,7 +11490,7 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible_2 (instanceof disjoint type) ========================================= instanceof_not_compatible_2 { -\find(equals(G::instance(a),FALSE)) +\find(equals(instance<[G]>(a),FALSE)) \varcond(\sub(Null, G), \disjointModuloNull(G, \typeof(a (any term)))) \replacewith(not(equals(a,null))) \heuristics(evaluate_instanceof, concrete) @@ -11490,7 +11498,7 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible_3 (instanceof disjoint type) ========================================= instanceof_not_compatible_3 { -\find(equals(G::instance(a),TRUE)) +\find(equals(instance<[G]>(a),TRUE)) \varcond(\not\sub(Null, G), \disjointModuloNull(G, \typeof(a (any term)))) \replacewith(false) \heuristics(evaluate_instanceof, concrete) @@ -11498,7 +11506,7 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible_4 (instanceof disjoint type) ========================================= instanceof_not_compatible_4 { -\find(equals(G::instance(a),FALSE)) +\find(equals(instance<[G]>(a),FALSE)) \varcond(\not\sub(Null, G), \disjointModuloNull(G, \typeof(a (any term)))) \replacewith(true) \heuristics(evaluate_instanceof, concrete) @@ -11506,8 +11514,8 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible_5 (instanceof disjoint type) ========================================= instanceof_not_compatible_5 { -\assumes ([equals(H::instance(a),TRUE)]==>[]) -\find(equals(G::instance(a),TRUE)) +\assumes ([equals(instance<[H]>(a),TRUE)]==>[]) +\find(equals(instance<[G]>(a),TRUE)) \varcond(\sub(Null, G), \disjointModuloNull(G, H)) \replacewith(equals(a,null)) \heuristics(evaluate_instanceof, concrete) @@ -11515,7 +11523,7 @@ Choices: true} ----------------------------------------------------- == instanceof_static_type (instanceof static supertype) ========================================= instanceof_static_type { -\find(G::instance(a)) +\find(instance<[G]>(a)) \varcond(\sub(\typeof(a (any term)), G)) \replacewith(TRUE) \heuristics(evaluate_instanceof, concrete) @@ -11524,7 +11532,7 @@ Choices: true} == instanceof_static_type_2 (instanceof static supertype) ========================================= instanceof_static_type_2 { \assumes ([equals(a2,a)]==>[]) -\find(G::instance(a)) +\find(instance<[G]>(a)) \sameUpdateLevel\varcond(\sub(\typeof(a2 (any term)), G)) \replacewith(TRUE) \heuristics(evaluate_instanceof, concrete) @@ -11542,7 +11550,7 @@ intLongToFloatAddition1 { \find(#normalassign ((modal operator))|{{ .. #loc = #seLong + #seFloat; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(float::cast(#seLong),#seFloat)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(cast<[float]>(#seLong),#seFloat)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -11551,7 +11559,7 @@ intToFloatAddition { \find(#normalassign ((modal operator))|{{ .. #loc = #seCharByteShortInt + #seFloat; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(float::cast(#seCharByteShortInt),#seFloat)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(cast<[float]>(#seCharByteShortInt),#seFloat)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -11573,7 +11581,7 @@ Choices: true} == intersectAllFieldsFreshLocs (intersectAllFieldsFreshLocs) ========================================= intersectAllFieldsFreshLocs { \find(equals(intersect(allFields(o),freshLocs(h)),empty)) -\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::),TRUE))) +\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -11633,12 +11641,6 @@ intersectionSetMinusItself_2 { \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- -== introduceAxiom (introduceAxiom) ========================================= -introduceAxiom { -\add [cutFormula]==>[] - -Choices: true} ------------------------------------------------------ == irrflConcrete1 (irrflConcrete1) ========================================= irrflConcrete1 { \find(lt(i,i)==>) @@ -12056,7 +12058,7 @@ Choices: true} lastIndexOf { \find(clLastIndexOfChar(sourceStr,c,i)) \varcond(\notFreeIn(iv (variable), sourceStr (Seq term)), \notFreeIn(iv (variable), i (int term)), \notFreeIn(iv (variable), c (int term))) -\replacewith(ifExThenElse{iv (variable)}(and(and(and(gt(iv,Z(0(#))),geq(i,iv)),lt(sub(i,iv),seqLen(sourceStr))),equals(int::seqGet(sourceStr,sub(i,iv)),c)),sub(i,iv),Z(neglit(1(#))))) +\replacewith(ifExThenElse{iv (variable)}(and(and(and(gt(iv,Z(0(#))),geq(i,iv)),lt(sub(i,iv),seqLen(sourceStr))),equals(seqGet<[int]>(sourceStr,sub(i,iv)),c)),sub(i,iv),Z(neglit(1(#))))) \heuristics(stringsExpandDefNormalOp) Choices: Strings:on} ----------------------------------------------------- @@ -13543,35 +13545,35 @@ Choices: integerSimplificationRules:full} == narrowFinalArrayType (narrowFinalArrayType) ========================================= narrowFinalArrayType { \assumes ([]==>[equals(o,null)]) -\find(beta::final(o,arr(idx))) +\find(final<[beta]>(o,arr(idx))) \sameUpdateLevel\varcond(\hasSort(\elemSort(o (java.lang.Object term)), alpha), \strict\sub(alpha, beta)) -\replacewith(alpha::final(o,arr(idx))) +\replacewith(final<[alpha]>(o,arr(idx))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- == narrowSelectArrayType (narrowSelectArrayType) ========================================= narrowSelectArrayType { \assumes ([wellFormed(h)]==>[equals(o,null)]) -\find(beta::select(h,o,arr(idx))) +\find(select<[beta]>(h,o,arr(idx))) \sameUpdateLevel\varcond(\hasSort(\elemSort(o (java.lang.Object term)), alpha), \strict\sub(alpha, beta)) -\replacewith(alpha::select(h,o,arr(idx))) +\replacewith(select<[alpha]>(h,o,arr(idx))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- == narrowSelectType (narrowSelectType) ========================================= narrowSelectType { \assumes ([wellFormed(h)]==>[]) -\find(beta::select(h,o,f)) +\find(select<[beta]>(h,o,f)) \varcond(\fieldType(f (Field term), alpha), \strict\sub(alpha, beta)) -\replacewith(alpha::select(h,o,f)) +\replacewith(select<[alpha]>(h,o,f)) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- == narrowTypeFinal (narrowTypeFinal) ========================================= narrowTypeFinal { -\find(beta::final(o,f)) +\find(final<[beta]>(o,f)) \varcond(\fieldType(f (Field term), alpha), \strict\sub(alpha, beta)) -\replacewith(alpha::final(o,f)) +\replacewith(final<[alpha]>(o,f)) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -13616,7 +13618,7 @@ narrowingCastFloatToInt { \find(#normalassign ((modal operator))|{{ .. #loc = (int) #seFloat; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(int::cast(#seFloat)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(cast<[int]>(#seFloat)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -13625,7 +13627,7 @@ narrowingCastFloatToLong { \find(#normalassign ((modal operator))|{{ .. #loc = (long) #seFloat; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(int::cast(#seFloat)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(cast<[int]>(#seFloat)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -13873,7 +13875,7 @@ Choices: programRules:Java} nonNull { \find(nonNull(heapSV,o,depth)) \varcond(\notFreeIn(i (variable), depth (int term)), \notFreeIn(i (variable), heapSV (Heap term)), \notFreeIn(i (variable), o (java.lang.Object term)), \isReferenceArray(o (java.lang.Object term))) -\replacewith(and(not(equals(o,null)),imp(gt(depth,Z(0(#))),all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,length(o))),nonNull(heapSV,java.lang.Object::select(heapSV,o,arr(i)),sub(depth,Z(1(#))))))))) +\replacewith(and(not(equals(o,null)),imp(gt(depth,Z(0(#))),all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,length(o))),nonNull(heapSV,select<[java.lang.Object]>(heapSV,o,arr(i)),sub(depth,Z(1(#))))))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -13907,7 +13909,7 @@ Choices: true} ----------------------------------------------------- == nullCreated (nullCreated) ========================================= nullCreated { -\add [or(all{h (variable)}(equals(boolean::select(h,null,java.lang.Object::),TRUE)),all{h (variable)}(equals(boolean::select(h,null,java.lang.Object::),FALSE)))]==>[] +\add [or(all{h (variable)}(equals(select<[boolean]>(h,null,java.lang.Object::),TRUE)),all{h (variable)}(equals(select<[boolean]>(h,null,java.lang.Object::),FALSE)))]==>[] Choices: programRules:Java} ----------------------------------------------------- @@ -13973,32 +13975,32 @@ Choices: programRules:Java} == onlyCreatedObjectsAreInLocSets (onlyCreatedObjectsAreInLocSets) ========================================= onlyCreatedObjectsAreInLocSets { \assumes ([wellFormed(h)]==>[]) -\find(elementOf(o2,f2,LocSet::select(h,o,f))==>) -\add [or(equals(o2,null),equals(boolean::select(h,o2,java.lang.Object::),TRUE))]==>[] +\find(elementOf(o2,f2,select<[LocSet]>(h,o,f))==>) +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreInLocSetsEQ (onlyCreatedObjectsAreInLocSetsEQ) ========================================= onlyCreatedObjectsAreInLocSetsEQ { -\assumes ([wellFormed(h),equals(LocSet::select(h,o,f),EQ)]==>[]) +\assumes ([wellFormed(h),equals(select<[LocSet]>(h,o,f),EQ)]==>[]) \find(elementOf(o2,f2,EQ)==>) -\add [or(equals(o2,null),equals(boolean::select(h,o2,java.lang.Object::),TRUE))]==>[] +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreInLocSetsEQFinal (onlyCreatedObjectsAreInLocSetsEQFinal) ========================================= onlyCreatedObjectsAreInLocSetsEQFinal { -\assumes ([wellFormed(h),equals(LocSet::final(o,f),EQ)]==>[]) +\assumes ([wellFormed(h),equals(final<[LocSet]>(o,f),EQ)]==>[]) \find(elementOf(o2,f2,EQ)==>) -\add [or(equals(o2,null),equals(boolean::select(h,o2,java.lang.Object::),TRUE))]==>[] +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreInLocSetsFinal (onlyCreatedObjectsAreInLocSetsFinal) ========================================= onlyCreatedObjectsAreInLocSetsFinal { \assumes ([wellFormed(h)]==>[]) -\find(elementOf(o2,f2,LocSet::final(o,f))==>) -\add [or(equals(o2,null),equals(boolean::select(h,o2,java.lang.Object::),TRUE))]==>[] +\find(elementOf(o2,f2,final<[LocSet]>(o,f))==>) +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14006,7 +14008,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreObserved { \find(obs) \sameUpdateLevel\varcond(\isObserver (obs (deltaObject term), h (Heap term))) -\add [or(equals(obs,null),equals(boolean::select(h,obs,java.lang.Object::),TRUE))]==>[] +\add [or(equals(obs,null),equals(select<[boolean]>(h,obs,java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14014,7 +14016,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreObservedInLocSets { \find(elementOf(o,f,obs)==>) \varcond(\isObserver (obs (LocSet term), h (Heap term))) -\add [or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::),TRUE))]==>[] +\add [or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14023,23 +14025,23 @@ onlyCreatedObjectsAreObservedInLocSetsEQ { \assumes ([equals(obs,EQ)]==>[]) \find(elementOf(o,f,EQ)==>) \varcond(\isObserver (obs (LocSet term), h (Heap term))) -\add [or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::),TRUE))]==>[] +\add [or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreReferenced (onlyCreatedObjectsAreReferenced) ========================================= onlyCreatedObjectsAreReferenced { \assumes ([wellFormed(h)]==>[]) -\find(deltaObject::select(h,o,f)) -\sameUpdateLevel\add [or(equals(deltaObject::select(h,o,f),null),equals(boolean::select(h,deltaObject::select(h,o,f),java.lang.Object::),TRUE))]==>[] +\find(select<[deltaObject]>(h,o,f)) +\sameUpdateLevel\add [or(equals(select<[deltaObject]>(h,o,f),null),equals(select<[boolean]>(h,select<[deltaObject]>(h,o,f),java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreReferencedFinal (onlyCreatedObjectsAreReferencedFinal) ========================================= onlyCreatedObjectsAreReferencedFinal { -\assumes ([wellFormed(h),equals(boolean::select(h,o,java.lang.Object::),TRUE)]==>[]) -\find(deltaObject::final(o,f)) -\sameUpdateLevel\add [or(equals(deltaObject::final(o,f),null),equals(boolean::select(h,deltaObject::final(o,f),java.lang.Object::),TRUE))]==>[] +\assumes ([wellFormed(h),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE)]==>[]) +\find(final<[deltaObject]>(o,f)) +\sameUpdateLevel\add [or(equals(final<[deltaObject]>(o,f),null),equals(select<[boolean]>(h,final<[deltaObject]>(o,f),java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14047,7 +14049,7 @@ Choices: programRules:Java} only_created_objects_are_reachable { \assumes ([wellFormed(h)]==>[equals(o,null)]) \find(reach(h,s,o,o2,n)==>) -\add [or(not(equals(boolean::select(h,o,java.lang.Object::),TRUE)),equals(boolean::select(h,o2,java.lang.Object::),TRUE))]==>[] +\add [or(not(equals(select<[boolean]>(h,o,java.lang.Object::),TRUE)),equals(select<[boolean]>(h,o2,java.lang.Object::),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: reach:on} ----------------------------------------------------- @@ -14125,7 +14127,7 @@ Choices: true} ----------------------------------------------------- == permissionDefaultValue (permissionDefaultValue) ========================================= permissionDefaultValue { -\find(Permission::defaultValue) +\find(defaultValue<[Permission]>) \replacewith(initFullPermission) \heuristics(simplify) Choices: true} @@ -14768,7 +14770,7 @@ Choices: true} precOfSeq { \find(prec(s1,s2)) \varcond(\notFreeIn(jv (variable), s2 (Seq term)), \notFreeIn(jv (variable), s1 (Seq term)), \notFreeIn(iv (variable), s2 (Seq term)), \notFreeIn(iv (variable), s1 (Seq term))) -\replacewith(or(and(equals(seqLen(s1),seqLen(s2)),exists{iv (variable)}(and(and(and(leq(Z(0(#)),iv),lt(iv,seqLen(s1))),prec(any::seqGet(s1,iv),any::seqGet(s2,iv))),all{jv (variable)}(imp(and(leq(Z(0(#)),jv),lt(jv,iv)),equals(any::seqGet(s1,jv),any::seqGet(s2,jv))))))),lt(seqLen(s1),seqLen(s2)))) +\replacewith(or(and(equals(seqLen(s1),seqLen(s2)),exists{iv (variable)}(and(and(and(leq(Z(0(#)),iv),lt(iv,seqLen(s1))),prec(seqGet<[any]>(s1,iv),seqGet<[any]>(s2,iv))),all{jv (variable)}(imp(and(leq(Z(0(#)),jv),lt(jv,iv)),equals(seqGet<[any]>(s1,jv),seqGet<[any]>(s2,jv))))))),lt(seqLen(s1),seqLen(s2)))) Choices: true} ----------------------------------------------------- @@ -14957,8 +14959,8 @@ Choices: true} ----------------------------------------------------- == pullOutSelect (pullOutSelect) ========================================= pullOutSelect { -\find(beta::select(h,o,f)) -\sameUpdateLevel\add [equals(beta::select(h,o,f),selectSK<>)]==>[] \replacewith(selectSK<>) +\find(select<[beta]>(h,o,f)) +\sameUpdateLevel\add [equals(select<[beta]>(h,o,f),selectSK<>)]==>[] \replacewith(selectSK<>) \heuristics(pull_out_select) Choices: programRules:Java} ----------------------------------------------------- @@ -15084,7 +15086,7 @@ Choices: reach:on} ----------------------------------------------------- == reachEndOfUniquePath (reachEndOfUniquePath) ========================================= reachEndOfUniquePath { -\assumes ([reach(h,allObjects(f),o,o2,n),equals(alpha::select(h,o2,f),null),equals(alpha::select(h,o3,f),null)]==>[]) +\assumes ([reach(h,allObjects(f),o,o2,n),equals(select<[alpha]>(h,o2,f),null),equals(select<[alpha]>(h,o3,f),null)]==>[]) \find(reach(h,allObjects(f),o,o3,n2)==>) \varcond(\different (n (int term), n2 (int term))) \add [and(equals(o2,o3),equals(n,n2))]==>[] @@ -15093,7 +15095,7 @@ Choices: reach:on} ----------------------------------------------------- == reachEndOfUniquePath2 (reachEndOfUniquePath2) ========================================= reachEndOfUniquePath2 { -\assumes ([reach(h,allObjects(f),o,o2,n),equals(alpha::select(h,o2,f),null)]==>[]) +\assumes ([reach(h,allObjects(f),o,o2,n),equals(select<[alpha]>(h,o2,f),null)]==>[]) \find(reach(h,allObjects(f),o,o3,n2)==>) \varcond(\different (o (java.lang.Object term), o2 (java.lang.Object term)), \different (n (int term), n2 (int term))) \add [or(lt(n2,n),and(equals(o2,o3),equals(n,n2)))]==>[] @@ -15141,7 +15143,7 @@ Choices: reach:on} reach_does_not_depend_on_fresh_locs { \assumes ([]==>[equals(o,null)]) \find(reach(anon(h,empty,h2),s,o,o2,n)) -\add []==>[and(wellFormed(h),equals(boolean::select(h,o,java.lang.Object::),TRUE))] ; +\add []==>[and(wellFormed(h),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE))] ; \replacewith(reach(h,s,o,o2,n)) \heuristics(simplify) Choices: reach:on} @@ -15150,7 +15152,7 @@ Choices: reach:on} reach_does_not_depend_on_fresh_locs_EQ { \assumes ([equals(anon(h,empty,h2),EQ)]==>[equals(o,null)]) \find(reach(EQ,s,o,o2,n)) -\add []==>[and(wellFormed(h),equals(boolean::select(h,o,java.lang.Object::),TRUE))] ; +\add []==>[and(wellFormed(h),equals(select<[boolean]>(h,o,java.lang.Object::),TRUE))] ; \replacewith(reach(h,s,o,o2,n)) \heuristics(simplify) Choices: reach:on} @@ -15175,40 +15177,40 @@ reference_type_cast { #lhs = (#npit) #se; ... }}| (post)) \varcond(\hasSort(#npit (program NonPrimitiveType), G), \not\sub(\typeof(#se (program SimpleExpression)), G)) -\add []==>[or(equals(#se,null),equals(G::instance(#se),TRUE))] \replacewith([]==>[false]) ; +\add []==>[or(equals(#se,null),equals(instance<[G]>(#se),TRUE))] \replacewith([]==>[false]) ; \replacewith([]==>[update-application(elem-update(#lhs (program LeftHandSide))(#addCast(#se,#lhs)),#allmodal(post))]) \heuristics(simplify_prog) Choices: (programRules:Java & runtimeExceptions:ban)} ----------------------------------------------------- == referencedObjectIsCreatedRighFinalEQ (referencedObjectIsCreatedRighFinalEQ) ========================================= referencedObjectIsCreatedRighFinalEQ { -\assumes ([equals(deltaObject::final(o,f),EQ)]==>[equals(EQ,null)]) -\find(==>equals(boolean::select(h,EQ,java.lang.Object::),TRUE)) -\add []==>[or(equals(boolean::select(h,o,java.lang.Object::),TRUE),equals(o,null))] +\assumes ([equals(final<[deltaObject]>(o,f),EQ)]==>[equals(EQ,null)]) +\find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::),TRUE)) +\add []==>[or(equals(select<[boolean]>(h,o,java.lang.Object::),TRUE),equals(o,null))] \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == referencedObjectIsCreatedRight (referencedObjectIsCreatedRight) ========================================= referencedObjectIsCreatedRight { -\assumes ([]==>[equals(deltaObject::select(h,o,f),null)]) -\find(==>equals(boolean::select(h,deltaObject::select(h,o,f),java.lang.Object::),TRUE)) +\assumes ([]==>[equals(select<[deltaObject]>(h,o,f),null)]) +\find(==>equals(select<[boolean]>(h,select<[deltaObject]>(h,o,f),java.lang.Object::),TRUE)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == referencedObjectIsCreatedRightEQ (referencedObjectIsCreatedRightEQ) ========================================= referencedObjectIsCreatedRightEQ { -\assumes ([equals(deltaObject::select(h,o,f),EQ)]==>[equals(EQ,null)]) -\find(==>equals(boolean::select(h,EQ,java.lang.Object::),TRUE)) +\assumes ([equals(select<[deltaObject]>(h,o,f),EQ)]==>[equals(EQ,null)]) +\find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::),TRUE)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == referencedObjectIsCreatedRightFinal (referencedObjectIsCreatedRightFinal) ========================================= referencedObjectIsCreatedRightFinal { -\assumes ([]==>[equals(deltaObject::final(o,f),null)]) -\find(==>equals(boolean::select(h,deltaObject::final(o,f),java.lang.Object::),TRUE)) -\replacewith([]==>[or(equals(boolean::select(h,o,java.lang.Object::),TRUE),equals(o,null))]) +\assumes ([]==>[equals(final<[deltaObject]>(o,f),null)]) +\find(==>equals(select<[boolean]>(h,final<[deltaObject]>(o,f),java.lang.Object::),TRUE)) +\replacewith([]==>[or(equals(select<[boolean]>(h,o,java.lang.Object::),TRUE),equals(o,null))]) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -15288,7 +15290,7 @@ Choices: Strings:on} == removeZeros (removeZeros) ========================================= removeZeros { \find(clRemoveZeros(l)) -\replacewith(if-then-else(or(equals(l,seqEmpty),equals(int::seqGet(l,Z(0(#))),C(8(4(#))))),l,clRemoveZeros(seqSub(l,Z(1(#)),seqLen(l))))) +\replacewith(if-then-else(or(equals(l,seqEmpty),equals(seqGet<[int]>(l,Z(0(#))),C(8(4(#))))),l,clRemoveZeros(seqSub(l,Z(1(#)),seqLen(l))))) \heuristics(integerToString) Choices: Strings:on} ----------------------------------------------------- @@ -15388,7 +15390,7 @@ Choices: Strings:on} replaceDef { \find(clReplace(str,searchChar,replChar)) \sameUpdateLevel\varcond(\notFreeIn(pos (variable), replChar (int term)), \notFreeIn(pos (variable), searchChar (int term)), \notFreeIn(pos (variable), str (Seq term))) -\add [and(equals(clReplace(str,searchChar,replChar),newSym),equals(seqDef{pos (variable)}(Z(0(#)),seqLen(str),if-then-else(equals(int::seqGet(str,pos),searchChar),replChar,int::seqGet(str,pos))),newSym))]==>[] +\add [and(equals(clReplace(str,searchChar,replChar),newSym),equals(seqDef{pos (variable)}(Z(0(#)),seqLen(str),if-then-else(equals(seqGet<[int]>(str,pos),searchChar),replChar,seqGet<[int]>(str,pos))),newSym))]==>[] \heuristics(stringsIntroduceNewSym, defOpsReplace) Choices: Strings:on} ----------------------------------------------------- @@ -15599,7 +15601,7 @@ Choices: true} ----------------------------------------------------- == sameTypeFalse (sameTypeFalse) ========================================= sameTypeFalse { -\assumes ([equals(G::exactInstance(x1),TRUE),equals(H::exactInstance(x2),TRUE)]==>[]) +\assumes ([equals(exactInstance<[G]>(x1),TRUE),equals(exactInstance<[H]>(x2),TRUE)]==>[]) \find(sameType(x1,x2)) \varcond(\not\same(G, H)) \replacewith(false) @@ -15608,7 +15610,7 @@ Choices: true} ----------------------------------------------------- == sameTypeTrue (sameTypeTrue) ========================================= sameTypeTrue { -\assumes ([equals(G::exactInstance(x1),TRUE),equals(G::exactInstance(x2),TRUE)]==>[]) +\assumes ([equals(exactInstance<[G]>(x1),TRUE),equals(exactInstance<[G]>(x2),TRUE)]==>[]) \find(sameType(x1,x2)) \replacewith(true) \heuristics(concrete) @@ -15674,7 +15676,7 @@ Choices: programRules:Java} schiffl_lemma_2 { \find(seqPerm(s,t)==>) \varcond(\notFreeIn(y (variable), t (Seq term)), \notFreeIn(y (variable), s (Seq term)), \notFreeIn(x (variable), t (Seq term)), \notFreeIn(x (variable), s (Seq term)), \notFreeIn(r (variable), t (Seq term)), \notFreeIn(r (variable), s (Seq term)), \notFreeIn(iv (variable), t (Seq term)), \notFreeIn(iv (variable), s (Seq term))) -\add [all{x (variable)}(all{y (variable)}(imp(and(and(and(and(and(equals(any::seqGet(s,x),any::seqGet(t,x)),equals(any::seqGet(s,y),any::seqGet(t,y))),leq(Z(0(#)),x)),lt(x,seqLen(s))),leq(Z(0(#)),y)),lt(y,seqLen(s))),exists{r (variable)}(and(and(and(and(equals(seqLen(r),seqLen(s)),seqNPerm(r)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(any::seqGet(s,iv),any::seqGet(t,int::seqGet(r,iv)))))),equals(int::seqGet(r,x),x)),equals(int::seqGet(r,y),y))))))]==>[] +\add [all{x (variable)}(all{y (variable)}(imp(and(and(and(and(and(equals(seqGet<[any]>(s,x),seqGet<[any]>(t,x)),equals(seqGet<[any]>(s,y),seqGet<[any]>(t,y))),leq(Z(0(#)),x)),lt(x,seqLen(s))),leq(Z(0(#)),y)),lt(y,seqLen(s))),exists{r (variable)}(and(and(and(and(equals(seqLen(r),seqLen(s)),seqNPerm(r)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(seqGet<[any]>(s,iv),seqGet<[any]>(t,seqGet<[int]>(r,iv)))))),equals(seqGet<[int]>(r,x),x)),equals(seqGet<[int]>(r,y),y))))))]==>[] Choices: true} ----------------------------------------------------- @@ -15682,7 +15684,7 @@ Choices: true} schiffl_thm_1 { \find(seqPerm(s,t)==>) \varcond(\notFreeIn(idx (variable), t (Seq term)), \notFreeIn(idx (variable), s (Seq term)), \notFreeIn(idx (variable), b (any term)), \notFreeIn(idx (variable), a (any term)), \notFreeIn(idx (variable), y (int term)), \notFreeIn(idx (variable), x (int term))) -\add [imp(and(and(and(and(and(and(seqPerm(s,t),equals(any::seqGet(s,x),any::seqGet(t,x))),equals(any::seqGet(s,y),any::seqGet(t,y))),leq(Z(0(#)),x)),lt(x,seqLen(s))),leq(Z(0(#)),y)),lt(y,seqLen(s))),seqPerm(seqDef{idx (variable)}(Z(0(#)),seqLen(s),if-then-else(equals(idx,y),b,if-then-else(equals(idx,x),a,any::seqGet(s,idx)))),seqDef{idx (variable)}(Z(0(#)),seqLen(s),if-then-else(equals(idx,y),b,if-then-else(equals(idx,x),a,any::seqGet(t,idx))))))]==>[] +\add [imp(and(and(and(and(and(and(seqPerm(s,t),equals(seqGet<[any]>(s,x),seqGet<[any]>(t,x))),equals(seqGet<[any]>(s,y),seqGet<[any]>(t,y))),leq(Z(0(#)),x)),lt(x,seqLen(s))),leq(Z(0(#)),y)),lt(y,seqLen(s))),seqPerm(seqDef{idx (variable)}(Z(0(#)),seqLen(s),if-then-else(equals(idx,y),b,if-then-else(equals(idx,x),a,seqGet<[any]>(s,idx)))),seqDef{idx (variable)}(Z(0(#)),seqLen(s),if-then-else(equals(idx,y),b,if-then-else(equals(idx,x),a,seqGet<[any]>(t,idx))))))]==>[] Choices: true} ----------------------------------------------------- @@ -15695,91 +15697,91 @@ Choices: true} ----------------------------------------------------- == selectCreatedOfAnon (selectCreatedOfAnon) ========================================= selectCreatedOfAnon { -\find(boolean::select(anon(h,s,h2),o,java.lang.Object::)) -\replacewith(if-then-else(equals(boolean::select(h,o,java.lang.Object::),TRUE),TRUE,boolean::select(h2,o,java.lang.Object::))) +\find(select<[boolean]>(anon(h,s,h2),o,java.lang.Object::)) +\replacewith(if-then-else(equals(select<[boolean]>(h,o,java.lang.Object::),TRUE),TRUE,select<[boolean]>(h2,o,java.lang.Object::))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectCreatedOfAnonAsFormula (selectCreatedOfAnonAsFormula) ========================================= selectCreatedOfAnonAsFormula { -\find(equals(boolean::select(anon(h,s,h2),o,java.lang.Object::),TRUE)) -\replacewith(or(equals(boolean::select(h,o,java.lang.Object::),TRUE),equals(boolean::select(h2,o,java.lang.Object::),TRUE))) +\find(equals(select<[boolean]>(anon(h,s,h2),o,java.lang.Object::),TRUE)) +\replacewith(or(equals(select<[boolean]>(h,o,java.lang.Object::),TRUE),equals(select<[boolean]>(h2,o,java.lang.Object::),TRUE))) \heuristics(simplify_ENLARGING) Choices: programRules:Java} ----------------------------------------------------- == selectCreatedOfAnonAsFormulaEQ (selectCreatedOfAnonAsFormulaEQ) ========================================= selectCreatedOfAnonAsFormulaEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) -\find(equals(boolean::select(EQ,o,java.lang.Object::),TRUE)) -\sameUpdateLevel\replacewith(or(equals(boolean::select(h,o,java.lang.Object::),TRUE),equals(boolean::select(h2,o,java.lang.Object::),TRUE))) +\find(equals(select<[boolean]>(EQ,o,java.lang.Object::),TRUE)) +\sameUpdateLevel\replacewith(or(equals(select<[boolean]>(h,o,java.lang.Object::),TRUE),equals(select<[boolean]>(h2,o,java.lang.Object::),TRUE))) \heuristics(simplify_ENLARGING) Choices: programRules:Java} ----------------------------------------------------- == selectCreatedOfAnonEQ (selectCreatedOfAnonEQ) ========================================= selectCreatedOfAnonEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) -\find(boolean::select(EQ,o,java.lang.Object::)) -\sameUpdateLevel\replacewith(if-then-else(equals(boolean::select(h,o,java.lang.Object::),TRUE),TRUE,boolean::select(h2,o,java.lang.Object::))) +\find(select<[boolean]>(EQ,o,java.lang.Object::)) +\sameUpdateLevel\replacewith(if-then-else(equals(select<[boolean]>(h,o,java.lang.Object::),TRUE),TRUE,select<[boolean]>(h2,o,java.lang.Object::))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectOfAnon (selectOfAnon) ========================================= selectOfAnon { -\find(beta::select(anon(h,s,h2),o,f)) -\replacewith(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),elementOf(o,f,freshLocs(h))),beta::select(h2,o,f),beta::select(h,o,f))) +\find(select<[beta]>(anon(h,s,h2),o,f)) +\replacewith(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),elementOf(o,f,freshLocs(h))),select<[beta]>(h2,o,f),select<[beta]>(h,o,f))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- == selectOfAnonEQ (selectOfAnonEQ) ========================================= selectOfAnonEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) -\find(beta::select(EQ,o,f)) -\sameUpdateLevel\replacewith(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),elementOf(o,f,freshLocs(h))),beta::select(h2,o,f),beta::select(h,o,f))) +\find(select<[beta]>(EQ,o,f)) +\sameUpdateLevel\replacewith(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),elementOf(o,f,freshLocs(h))),select<[beta]>(h2,o,f),select<[beta]>(h,o,f))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectOfCreate (selectOfCreate) ========================================= selectOfCreate { -\find(beta::select(create(h,o),o2,f)) -\replacewith(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::)),beta::cast(TRUE),beta::select(h,o2,f))) +\find(select<[beta]>(create(h,o),o2,f)) +\replacewith(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::)),cast<[beta]>(TRUE),select<[beta]>(h,o2,f))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- == selectOfCreateEQ (selectOfCreateEQ) ========================================= selectOfCreateEQ { \assumes ([equals(create(h,o),EQ)]==>[]) -\find(beta::select(EQ,o2,f)) -\sameUpdateLevel\replacewith(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::)),beta::cast(TRUE),beta::select(h,o2,f))) +\find(select<[beta]>(EQ,o2,f)) +\sameUpdateLevel\replacewith(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::)),cast<[beta]>(TRUE),select<[beta]>(h,o2,f))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectOfMemset (selectOfMemset) ========================================= selectOfMemset { -\find(beta::select(memset(h,s,x),o,f)) -\replacewith(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),beta::cast(x),beta::select(h,o,f))) +\find(select<[beta]>(memset(h,s,x),o,f)) +\replacewith(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),cast<[beta]>(x),select<[beta]>(h,o,f))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- == selectOfMemsetEQ (selectOfMemsetEQ) ========================================= selectOfMemsetEQ { \assumes ([equals(memset(h,s,x),EQ)]==>[]) -\find(beta::select(EQ,o,f)) -\sameUpdateLevel\replacewith(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),beta::cast(x),beta::select(h,o,f))) +\find(select<[beta]>(EQ,o,f)) +\sameUpdateLevel\replacewith(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),cast<[beta]>(x),select<[beta]>(h,o,f))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectOfStore (selectOfStore) ========================================= selectOfStore { -\find(beta::select(store(h,o,f,x),o2,f2)) -\replacewith(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::))),beta::cast(x),beta::select(h,o2,f2))) +\find(select<[beta]>(store(h,o,f,x),o2,f2)) +\replacewith(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::))),cast<[beta]>(x),select<[beta]>(h,o2,f2))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- == selectOfStoreEQ (selectOfStoreEQ) ========================================= selectOfStoreEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) -\find(beta::select(EQ,o2,f2)) -\sameUpdateLevel\replacewith(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::))),beta::cast(x),beta::select(h,o2,f2))) +\find(select<[beta]>(EQ,o2,f2)) +\sameUpdateLevel\replacewith(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::))),cast<[beta]>(x),select<[beta]>(h,o2,f2))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- @@ -15825,7 +15827,7 @@ Choices: sequences:on} ----------------------------------------------------- == seqDefOfSeq (seqDefOfSeq) ========================================= seqDefOfSeq { -\find(seqDef{u (variable)}(Z(0(#)),x,any::seqGet(s,u))) +\find(seqDef{u (variable)}(Z(0(#)),x,seqGet<[any]>(s,u))) \varcond(\notFreeIn(v (variable), s (Seq term)), \notFreeIn(v (variable), x (int term)), \notFreeIn(u (variable), s (Seq term)), \notFreeIn(u (variable), x (int term))) \replacewith(if-then-else(equals(seqLen(s),x),s,if-then-else(gt(seqLen(s),x),seqSub(s,Z(0(#)),x),seqConcat(s,seqDef{v (variable)}(seqLen(s),x,seqGetOutside))))) \heuristics(simplify_enlarging) @@ -15907,8 +15909,8 @@ Choices: sequences:on} ----------------------------------------------------- == seqGetAlphaCast (seqGetAlphaCast) ========================================= seqGetAlphaCast { -\find(alpha::seqGet(seq,at)) -\add [equals(alpha::cast(any::seqGet(seq,at)),alpha::seqGet(seq,at))]==>[] +\find(seqGet<[alpha]>(seq,at)) +\add [equals(cast<[alpha]>(seqGet<[any]>(seq,at)),seqGet<[alpha]>(seq,at))]==>[] \heuristics(inReachableStateImplication) Choices: sequences:on} ----------------------------------------------------- @@ -15942,7 +15944,7 @@ Choices: programRules:Java} seqIndexOf { \find(seqIndexOf(s,t)) \varcond(\notFreeIn(m (variable), t (any term)), \notFreeIn(m (variable), s (Seq term)), \notFreeIn(n (variable), t (any term)), \notFreeIn(n (variable), s (Seq term))) -\add [imp(exists{n (variable)}(and(and(leq(Z(0(#)),n),lt(n,seqLen(s))),equals(any::seqGet(s,n),t))),and(and(and(leq(Z(0(#)),seqIndexOf(s,t)),lt(seqIndexOf(s,t),seqLen(s))),equals(any::seqGet(s,seqIndexOf(s,t)),t)),all{m (variable)}(imp(and(leq(Z(0(#)),m),lt(m,seqIndexOf(s,t))),not(equals(any::seqGet(s,m),t))))))]==>[] +\add [imp(exists{n (variable)}(and(and(leq(Z(0(#)),n),lt(n,seqLen(s))),equals(seqGet<[any]>(s,n),t))),and(and(and(leq(Z(0(#)),seqIndexOf(s,t)),lt(seqIndexOf(s,t),seqLen(s))),equals(seqGet<[any]>(s,seqIndexOf(s,t)),t)),all{m (variable)}(imp(and(leq(Z(0(#)),m),lt(m,seqIndexOf(s,t))),not(equals(seqGet<[any]>(s,m),t))))))]==>[] Choices: sequences:on} ----------------------------------------------------- @@ -15988,7 +15990,7 @@ Choices: programRules:Java} == seqOutsideValue (seqOutsideValue) ========================================= seqOutsideValue { \find(seqGetOutside) -\add [all{s (variable)}(all{iv (variable)}(imp(or(lt(iv,Z(0(#))),leq(seqLen(s),iv)),equals(any::seqGet(s,iv),seqGetOutside))))]==>[] +\add [all{s (variable)}(all{iv (variable)}(imp(or(lt(iv,Z(0(#))),leq(seqLen(s),iv)),equals(seqGet<[any]>(s,iv),seqGetOutside))))]==>[] Choices: sequences:on} ----------------------------------------------------- @@ -16015,14 +16017,14 @@ Choices: programRules:Java} == seqSelfDefinition (seqSelfDefinition) ========================================= seqSelfDefinition { \find(seq) -\add [all{s (variable)}(equals(s,seqDef{u (variable)}(Z(0(#)),seqLen(s),any::seqGet(s,u))))]==>[] +\add [all{s (variable)}(equals(s,seqDef{u (variable)}(Z(0(#)),seqLen(s),seqGet<[any]>(s,u))))]==>[] Choices: sequences:on} ----------------------------------------------------- == seqSelfDefinitionEQ2 (seqSelfDefinition) ========================================= seqSelfDefinitionEQ2 { \assumes ([equals(seqLen(s),x)]==>[]) -\find(seqDef{u (variable)}(Z(0(#)),x,any::seqGet(s,u))) +\find(seqDef{u (variable)}(Z(0(#)),x,seqGet<[any]>(s,u))) \sameUpdateLevel\varcond(\notFreeIn(u (variable), s (Seq term)), \notFreeIn(u (variable), x (int term))) \replacewith(s) \heuristics(simplify) @@ -16338,93 +16340,93 @@ Choices: true} ----------------------------------------------------- == simplifySelectOfAnon (simplifySelectOfAnon) ========================================= simplifySelectOfAnon { -\find(equals(beta::select(anon(h,s,h2),o,f),sk)==>) +\find(equals(select<[beta]>(anon(h,s,h2),o,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(anon(h,s,h2),o,f)) +\find(select<[beta]>(anon(h,s,h2),o,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),elementOf(o,f,freshLocs(h))),beta::select(h2,o,f),beta::select(h,o,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),elementOf(o,f,freshLocs(h))),select<[beta]>(h2,o,f),select<[beta]>(h,o,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfAnonEQ (simplifySelectOfAnonEQ) ========================================= simplifySelectOfAnonEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) -\find(equals(beta::select(EQ,o,f),sk)==>) +\find(equals(select<[beta]>(EQ,o,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(EQ,o,f)) +\find(select<[beta]>(EQ,o,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),elementOf(o,f,freshLocs(h))),beta::select(h2,o,f),beta::select(h,o,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),elementOf(o,f,freshLocs(h))),select<[beta]>(h2,o,f),select<[beta]>(h,o,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfCreate (simplifySelectOfCreate) ========================================= simplifySelectOfCreate { -\find(equals(beta::select(create(h,o),o2,f),sk)==>) +\find(equals(select<[beta]>(create(h,o),o2,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(create(h,o),o2,f)) +\find(select<[beta]>(create(h,o),o2,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::)),beta::cast(TRUE),beta::select(h,o2,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::)),cast<[beta]>(TRUE),select<[beta]>(h,o2,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfCreateEQ (simplifySelectOfCreateEQ) ========================================= simplifySelectOfCreateEQ { \assumes ([equals(create(h,o),EQ)]==>[]) -\find(equals(beta::select(EQ,o2,f),sk)==>) +\find(equals(select<[beta]>(EQ,o2,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(EQ,o2,f)) +\find(select<[beta]>(EQ,o2,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::)),beta::cast(TRUE),beta::select(h,o2,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::)),cast<[beta]>(TRUE),select<[beta]>(h,o2,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfMemset (simplifySelectOfMemset) ========================================= simplifySelectOfMemset { -\find(equals(beta::select(memset(h,s,x),o,f),sk)==>) +\find(equals(select<[beta]>(memset(h,s,x),o,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(memset(h,s,x),o,f)) +\find(select<[beta]>(memset(h,s,x),o,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),x,beta::select(h,o,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),x,select<[beta]>(h,o,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfMemsetEQ (simplifySelectOfMemsetEQ) ========================================= simplifySelectOfMemsetEQ { \assumes ([equals(memset(h,s,x),EQ)]==>[]) -\find(equals(beta::select(EQ,o,f),sk)==>) +\find(equals(select<[beta]>(EQ,o,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(EQ,o,f)) +\find(select<[beta]>(EQ,o,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),x,beta::select(h,o,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::))),x,select<[beta]>(h,o,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfStore (simplifySelectOfStore) ========================================= simplifySelectOfStore { -\find(equals(beta::select(store(h,o,f,x),o2,f2),sk)==>) +\find(equals(select<[beta]>(store(h,o,f,x),o2,f2),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(store(h,o,f,x),o2,f2)) +\find(select<[beta]>(store(h,o,f,x),o2,f2)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::))),beta::cast(x),beta::select(h,o2,f2)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::))),cast<[beta]>(x),select<[beta]>(h,o2,f2)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfStoreEQ (simplifySelectOfStoreEQ) ========================================= simplifySelectOfStoreEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) -\find(equals(beta::select(EQ,o2,f2),sk)==>) +\find(equals(select<[beta]>(EQ,o2,f2),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(EQ,o2,f2)) +\find(select<[beta]>(EQ,o2,f2)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::))),beta::cast(x),beta::select(h,o2,f2)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::))),cast<[beta]>(x),select<[beta]>(h,o2,f2)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- @@ -16674,14 +16676,14 @@ Choices: true} ----------------------------------------------------- == ssubsortDirect (ssubsortDirect) ========================================= ssubsortDirect { -\find(ssubsort(alphSub::ssort,alph::ssort)) +\find(ssubsort(ssort<[alphSub]>,ssort<[alph]>)) \replacewith(true) \heuristics(simplify) Choices: true} ----------------------------------------------------- == ssubsortSup (ssubsortSup) ========================================= ssubsortSup { -\find(ssubsort(alph::ssort,alphSub::ssort)) +\find(ssubsort(ssort<[alph]>,ssort<[alphSub]>)) \varcond(\not\same(alphSub, alph)) \replacewith(false) \heuristics(simplify) @@ -16757,7 +16759,7 @@ stringAssignment { \find(#normalassign ((modal operator))|{{ .. #v = #slit; ... }}| (post)) -\sameUpdateLevel\add [not(equals(strPool(#slit),null)),equals(boolean::select(heap,strPool(#slit),java.lang.Object::),TRUE)]==>[] \replacewith(update-application(elem-update(#v (program Variable))(strPool(#slit)),#normalassign(post))) +\sameUpdateLevel\add [not(equals(strPool(#slit),null)),equals(select<[boolean]>(heap,strPool(#slit),java.lang.Object::),TRUE)]==>[] \replacewith(update-application(elem-update(#v (program Variable))(strPool(#slit)),#normalassign(post))) \heuristics(simplify_prog_subset, simplify_prog) Choices: true} ----------------------------------------------------- @@ -18270,14 +18272,14 @@ Choices: programRules:Java} == typeEq (typeEq) ========================================= typeEq { \find(equals(s,t1)==>) -\add [equals(H::instance(s),TRUE),equals(G::instance(t1),TRUE)]==>[] +\add [equals(instance<[H]>(s),TRUE),equals(instance<[G]>(t1),TRUE)]==>[] Choices: true} ----------------------------------------------------- == typeEqDerived (typeEq) ========================================= typeEqDerived { \assumes ([equals(s,t1)]==>[]) -\find(H::instance(s)) +\find(instance<[H]>(s)) \sameUpdateLevel\replacewith(TRUE) \heuristics(concrete, simplify) Choices: true} @@ -18285,7 +18287,7 @@ Choices: true} == typeEqDerived2 (typeEq) ========================================= typeEqDerived2 { \assumes ([equals(s,t1)]==>[]) -\find(G::instance(t1)) +\find(instance<[G]>(t1)) \sameUpdateLevel\replacewith(TRUE) \heuristics(concrete, simplify) Choices: true} @@ -18293,7 +18295,7 @@ Choices: true} == typeStatic (typeStatic) ========================================= typeStatic { \find(s) -\sameUpdateLevel\add [equals(G::instance(s),TRUE)]==>[] +\sameUpdateLevel\add [equals(instance<[G]>(s),TRUE)]==>[] Choices: true} ----------------------------------------------------- @@ -18597,7 +18599,7 @@ Choices: programRules:Java} wellFormedMemsetArrayObject { \find(wellFormed(memset(h,arrayRange(ar,lo,up),x))) \succedentPolarity\varcond(\hasSort(\elemSort(ar (java.lang.Object term)), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(boolean::select(h,x,java.lang.Object::),TRUE),arrayStoreValid(ar,x))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::),TRUE),arrayStoreValid(ar,x))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18613,7 +18615,7 @@ Choices: programRules:Java} wellFormedStoreArray { \find(wellFormed(store(h,o,arr(idx),x))) \succedentPolarity\varcond(\hasSort(\elemSort(o (java.lang.Object term)), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(boolean::select(h,x,java.lang.Object::),TRUE),arrayStoreValid(o,x))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::),TRUE),arrayStoreValid(o,x))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18637,7 +18639,7 @@ Choices: programRules:Java} wellFormedStoreObject { \find(wellFormed(store(h,o,f,x))) \succedentPolarity\varcond(\fieldType(f (Field term), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(boolean::select(h,x,java.lang.Object::),TRUE),equals(alpha::instance(x),TRUE))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::),TRUE),equals(instance<[alpha]>(x),TRUE))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18646,7 +18648,7 @@ wellFormedStoreObjectEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) \find(wellFormed(EQ)) \sameUpdateLevel\succedentPolarity\varcond(\fieldType(f (Field term), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(boolean::select(h,x,java.lang.Object::),TRUE),equals(alpha::instance(x),TRUE))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::),TRUE),equals(instance<[alpha]>(x),TRUE))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18680,7 +18682,7 @@ wideningCastIntToFloat { \find(#normalassign ((modal operator))|{{ .. #loc = (float) #seCharByteShortInt; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(float::cast(#seCharByteShortInt)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(cast<[float]>(#seCharByteShortInt)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -18689,7 +18691,7 @@ wideningCastLongToFloat { \find(#normalassign ((modal operator))|{{ .. #loc = (float) #seLong; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(float::cast(#seLong)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(cast<[float]>(#seLong)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/SMT_lemma_seqGet.dl.proof b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/SMT_lemma_seqGet.dl.proof index 2212baae4bd..9377c3b0cec 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/SMT_lemma_seqGet.dl.proof +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/SMT_lemma_seqGet.dl.proof @@ -47,7 +47,7 @@ \forall Seq s; ( lt(i, Z(0(#))) | geq(i, seqLen(s)) - -> any::seqGet(s, i)<> = seqGetOutside) + -> seqGet<[any]>(s, i)<> = seqGetOutside) } diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/SMT_lemma_seqGetOutside.dl.proof b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/SMT_lemma_seqGetOutside.dl.proof index 234303f5915..8c5d0a40f1e 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/SMT_lemma_seqGetOutside.dl.proof +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/SMT_lemma_seqGetOutside.dl.proof @@ -45,7 +45,7 @@ \forall Seq s; ( lt(i, Z(0(#))) | geq(i, seqLen(s)) - -> any::seqGet(s, i)<> = seqGetOutside) + -> seqGet<[any]>(s, i)<> = seqGetOutside) } @@ -60,7 +60,7 @@ (rule "cut" (inst "cutFormula=( s_0 = seqDef{int i;}(Z(0(#)), seqLen(s_0), - any::seqGet(s_0, i)))<>") (userinteraction)) + seqGet<[any]>(s_0, i)))<>") (userinteraction)) (branch "CUT: s_0 = seqDef{int i;}(0, s_0.length, s_0[i]) TRUE" (rule "applyEqRigid" (formula "2") (term "0,0,1") (ifseqformula "1") (userinteraction)) (rule "getOfSeqDef" (formula "2") (term "0,1") (userinteraction)) diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/cast2.yml b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/cast2.yml index 1828b337dce..f16b83d805a 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/cast2.yml +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/cast2.yml @@ -5,4 +5,4 @@ expected: IRRELEVANT keySrc: |- \functions { Field FF; Seq s; java.lang.Object o; } - \problem { int::select(heap, o, FF) = int::seqGet(s, 42) } + \problem { select<[int]>(heap, o, FF) = seqGet<[int]>(s, 42) } diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/heap1.yml b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/heap1.yml index 460a556279c..ecc7e5e8ecd 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/heap1.yml +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/heap1.yml @@ -6,4 +6,4 @@ state: EXTENDED keySrc: |- \functions { Field FF; java.lang.Object o; } - \problem { FF != java.lang.Object:: -> any::select(store(heap, o, FF, 42), o, FF) = 42 } + \problem { FF != java.lang.Object:: -> select<[any]>(store(heap, o, FF, 42), o, FF) = 42 } diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/quant2.yml b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/quant2.yml index 580312e5cca..2ac39f54ea4 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/quant2.yml +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/quant2.yml @@ -10,5 +10,5 @@ contains: expected: VALID keySrc: |- \problem { - \forall Object o; (String::instance(o) = TRUE -> (String)o = o) + \forall Object o; (instance<[String]>(o) = TRUE -> (String)o = o) } diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/subtypes3738.yml b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/subtypes3738.yml index 50eb69ccf41..a511e03979b 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/subtypes3738.yml +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/subtypes3738.yml @@ -1,10 +1,10 @@ # Modelled after a bugfix for #3738 -# can be proved before the fix but not afterwards +# can be proved before the fix but not afterward javaSrc: | interface X {} class Y extends Object implements X { } keySrc: | - \problem { !\exists Object o; (X::instance(o) = TRUE & Y::instance(o) = TRUE) } + \problem { !\exists Object o; (instance<[X]>(o) = TRUE & instance<[Y]>(o) = TRUE) } contains: - (assert (subtype sort_Y sort_X)) - (assert (not (subtype sort_X sort_Y))) diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/types1.yml b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/types1.yml index 37098529951..47a82806013 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/types1.yml +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/types1.yml @@ -3,5 +3,5 @@ contains: expected: VALID keySrc: |- \problem { - any::instance(42) = TRUE + instance<[any]>(42) = TRUE } diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/types2.yml b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/types2.yml index ee1778a6927..0b01e4f4333 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/types2.yml +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/types2.yml @@ -3,5 +3,5 @@ contains: expected: VALID keySrc: |- \problem { - any::instance(FALSE) = TRUE + instance<[any]>(FALSE) = TRUE } diff --git a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/unknownQuantified.yml b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/unknownQuantified.yml index 7cdde00de49..86ac131a39c 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/unknownQuantified.yml +++ b/key.core/src/test/resources/de/uka/ilkd/key/smt/newsmt2/cases/unknownQuantified.yml @@ -9,7 +9,7 @@ keySrc: |- } \problem { - \forall Seq s; (s = (seqDef{int u;}(0, s.length, any::seqGet(s, u)))) + \forall Seq s; (s = (seqDef{int u;}(0, s.length, seqGet<[any]>(s, u)))) & seqLen(seqSub(s1, 0, maxx - 1)) = maxx - 1 -> s1.length = maxx - 1 diff --git a/key.core/src/test/resources/testcase/merge/A.differentVarsWithSameName.MPS.cut.closed.proof b/key.core/src/test/resources/testcase/merge/A.differentVarsWithSameName.MPS.cut.closed.proof index 1e848f03b62..c19b6f71b81 100644 --- a/key.core/src/test/resources/testcase/merge/A.differentVarsWithSameName.MPS.cut.closed.proof +++ b/key.core/src/test/resources/testcase/merge/A.differentVarsWithSameName.MPS.cut.closed.proof @@ -310,11 +310,11 @@ & ( !b = TRUE & ( !result_0_1 = null & ( wellFormed(heap) - & ( boolean::select(heap, + & ( select<[boolean]>(heap, self, java.lang.Object::) = TRUE - & ( A::exactInstance(self) = TRUE + & ( exactInstance<[A]>(self) = TRUE & ( measuredByEmpty & ( wellFormed(anon_heap_g<>) & ( anon(heap, @@ -322,21 +322,21 @@ anon_heap_g<>) = heapAfter_g & ( exc_0_1 = null - & ( boolean::select(heap, + & ( select<[boolean]>(heap, result_0_1, java.lang.Object::) = TRUE - | boolean::select(anon_heap_g<>, + | select<[boolean]>(anon_heap_g<>, result_0_1, java.lang.Object::) = TRUE)))))))))) -> !self = null & wellFormed(heap) - & boolean::select(heap, + & select<[boolean]>(heap, self, java.lang.Object::) = TRUE - & A::exactInstance(self) = TRUE + & exactInstance<[A]>(self) = TRUE & measuredByEmpty & ( b = TRUE & wellFormed(anon_heap_f<>) @@ -354,15 +354,15 @@ anon_heap_g<>) = heapAfter_g & exc_0_1 = null - & ( boolean::select(heap, + & ( select<[boolean]>(heap, result_0_1, java.lang.Object::) = TRUE - | boolean::select(anon_heap_g<>, + | select<[boolean]>(anon_heap_g<>, result_0_1, java.lang.Object::) = TRUE))") (userinteraction)) - (branch "CUT: !self = null & ( !b = TRUE & ( !result_0_1 = null & ( wellFormed(heap) & ( self. = TRUE & ( A::exactInstance(self) = TRUE & ( measuredByEmpty & ( wellFormed(anon_heap_g<>) & ( heap[anon(allLocs, anon_heap_g<>)] = heapAfter_g & ( exc_0_1 = null & ( result_0_1. = TRUE | result_0_1.@anon_heap_g<> = TRUE)))))))))) -> !self = null & wellFormed(heap) & self. = TRUE & A::exactInstance(self) = TRUE & measuredByEmpty & ( b = TRUE & wellFormed(anon_heap_f<>) & heap[anon(allLocs, anon_heap_f<>)] = heapAfter_f & exc_0_0 = null & result_0_0 >= 1 | !b = TRUE & !result_0_1 = null & wellFormed(anon_heap_g<>) & heap[anon(allLocs, anon_heap_g<>)] = heapAfter_g & exc_0_1 = null & ( result_0_1. = TRUE | result_0_1.@anon_heap_g<> = TRUE)) TRUE" + (branch "CUT: !self = null & ( !b = TRUE & ( !result_0_1 = null & ( wellFormed(heap) & ( self. = TRUE & ( exactInstance<[A]>(self) = TRUE & ( measuredByEmpty & ( wellFormed(anon_heap_g<>) & ( heap[anon(allLocs, anon_heap_g<>)] = heapAfter_g & ( exc_0_1 = null & ( result_0_1. = TRUE | result_0_1.@anon_heap_g<> = TRUE)))))))))) -> !self = null & wellFormed(heap) & self. = TRUE & exactInstance<[A]>(self) = TRUE & measuredByEmpty & ( b = TRUE & wellFormed(anon_heap_f<>) & heap[anon(allLocs, anon_heap_f<>)] = heapAfter_f & exc_0_0 = null & result_0_0 >= 1 | !b = TRUE & !result_0_1 = null & wellFormed(anon_heap_g<>) & heap[anon(allLocs, anon_heap_g<>)] = heapAfter_g & exc_0_1 = null & ( result_0_1. = TRUE | result_0_1.@anon_heap_g<> = TRUE)) TRUE" (builtin "One Step Simplification" (formula "2")) (rule "impRight" (formula "2")) (rule "impRight" (formula "3")) @@ -383,7 +383,7 @@ (builtin "One Step Simplification" (formula "9") (ifInst "" (formula "13")) (ifInst "" (formula "1")) (ifInst "" (formula "2")) (ifInst "" (formula "4")) (ifInst "" (formula "12")) (ifInst "" (formula "12")) (ifInst "" (formula "11")) (ifInst "" (formula "5")) (ifInst "" (formula "6")) (ifInst "" (formula "7")) (ifInst "" (formula "8")) (ifInst "" (formula "12")) (ifInst "" (formula "12")) (ifInst "" (formula "14"))) (rule "closeFalse" (formula "9")) ) - (branch "CUT: !self = null & ( !b = TRUE & ( !result_0_1 = null & ( wellFormed(heap) & ( self. = TRUE & ( A::exactInstance(self) = TRUE & ( measuredByEmpty & ( wellFormed(anon_heap_g<>) & ( heap[anon(allLocs, anon_heap_g<>)] = heapAfter_g & ( exc_0_1 = null & ( result_0_1. = TRUE | result_0_1.@anon_heap_g<> = TRUE)))))))))) -> !self = null & wellFormed(heap) & self. = TRUE & A::exactInstance(self) = TRUE & measuredByEmpty & ( b = TRUE & wellFormed(anon_heap_f<>) & heap[anon(allLocs, anon_heap_f<>)] = heapAfter_f & exc_0_0 = null & result_0_0 >= 1 | !b = TRUE & !result_0_1 = null & wellFormed(anon_heap_g<>) & heap[anon(allLocs, anon_heap_g<>)] = heapAfter_g & exc_0_1 = null & ( result_0_1. = TRUE | result_0_1.@anon_heap_g<> = TRUE)) FALSE" + (branch "CUT: !self = null & ( !b = TRUE & ( !result_0_1 = null & ( wellFormed(heap) & ( self. = TRUE & ( exactInstance<[A]>(self) = TRUE & ( measuredByEmpty & ( wellFormed(anon_heap_g<>) & ( heap[anon(allLocs, anon_heap_g<>)] = heapAfter_g & ( exc_0_1 = null & ( result_0_1. = TRUE | result_0_1.@anon_heap_g<> = TRUE)))))))))) -> !self = null & wellFormed(heap) & self. = TRUE & exactInstance<[A]>(self) = TRUE & measuredByEmpty & ( b = TRUE & wellFormed(anon_heap_f<>) & heap[anon(allLocs, anon_heap_f<>)] = heapAfter_f & exc_0_0 = null & result_0_0 >= 1 | !b = TRUE & !result_0_1 = null & wellFormed(anon_heap_g<>) & heap[anon(allLocs, anon_heap_g<>)] = heapAfter_g & exc_0_1 = null & ( result_0_1. = TRUE | result_0_1.@anon_heap_g<> = TRUE)) FALSE" (rule "hide_right" (formula "2") (userinteraction)) (rule "impRight" (formula "1")) (rule "andLeft" (formula "1")) From 79991739a9675df14561e6517bbe6666ddb017fa Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 09:23:42 +0100 Subject: [PATCH 09/37] Fix SMT translation --- .../de/uka/ilkd/key/smt/newsmt2/CastingFunctionsHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastingFunctionsHandler.java b/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastingFunctionsHandler.java index f19b34c1248..3eaf2129ece 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastingFunctionsHandler.java +++ b/key.core/src/main/java/de/uka/ilkd/key/smt/newsmt2/CastingFunctionsHandler.java @@ -54,7 +54,7 @@ public boolean canHandle(Operator op) { public SExpr handle(MasterHandler trans, Term term) throws SMTTranslationException { Operator op = term.op(); var sdf = (ParametricFunctionInstance) op; - String name = sdf.getBase().toString(); + String name = sdf.getBase().name().toString(); String prefixedName = DefinedSymbolsHandler.PREFIX + name; trans.introduceSymbol(name); SExpr result = trans.handleAsFunctionCall(prefixedName, term); From 7a53e5daa5c341210e39196477a5df465c7d928e Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 09:33:15 +0100 Subject: [PATCH 10/37] Try to fix SMT lemma parsing --- key.core/src/main/antlr4/KeYLexer.g4 | 4 ++-- .../key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/key.core/src/main/antlr4/KeYLexer.g4 b/key.core/src/main/antlr4/KeYLexer.g4 index 37e4ecaff27..ed7aab3d7c7 100644 --- a/key.core/src/main/antlr4/KeYLexer.g4 +++ b/key.core/src/main/antlr4/KeYLexer.g4 @@ -381,8 +381,8 @@ GREATEREQUAL : '>' '=' | '\u2265' ; -OPENTYPEPARAMS : '<['; -CLOSETYPEPARAMS : ']>'; +OPENTYPEPARAMS : '<' '['; +CLOSETYPEPARAMS : ']' '>'; WS: [ \t\n\r\u00a0]+ -> channel(HIDDEN); //U+00A0 = non breakable whitespace STRING_LITERAL:'"' ('\\' . | ~( '"' | '\\') )* '"' ; diff --git a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml index 1b49617213e..48fb52b6664 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml +++ b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml @@ -14,7 +14,7 @@ (h,o,java.lang.Object::<created>)=TRUE ) + o != null & !select<[boolean]>(h,o,java.lang.Object::<created>)=TRUE ) ]]> From ebbd1d7a825a85c51b9e8e4fb2951716ef57c612 Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 09:38:54 +0100 Subject: [PATCH 11/37] Fix LogicPrinter when services == null --- key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java index f4c8a465876..27527b273cd 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/LogicPrinter.java @@ -942,7 +942,7 @@ && getNotationInfo().isHidePackagePrefix()) { layouter.startTerm(t.arity()); boolean alreadyPrinted = false; if (t.op() instanceof ParametricFunctionInstance op) { - if (op.getBase() == services.getJavaDLTheory().getExactInstanceofSymbol(services)) { + if (op.getBase().name().compareTo(JavaDLTheory.EXACT_INSTANCE_NAME) == 0) { layouter.keyWord(op.getBase().name().toString()); layouter.print("<["); layouter.print(op.getArgs().head().sort().declarationString()); From 70607d7818f7e16eefc5a9162509de171cb6b4d5 Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 16:10:46 +0100 Subject: [PATCH 12/37] Fix oracle translation --- .../java/de/uka/ilkd/key/testgen/oracle/OracleGenerator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/oracle/OracleGenerator.java b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/oracle/OracleGenerator.java index 90840c69f98..ed3e68c1987 100644 --- a/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/oracle/OracleGenerator.java +++ b/key.core.testgen/src/main/java/de/uka/ilkd/key/testgen/oracle/OracleGenerator.java @@ -319,7 +319,8 @@ private OracleTerm translateFunction(Term term, boolean initialSelect) { return OracleConstant.FALSE; } else if (term.arity() == 0) { return new OracleConstant(name, term.sort()); - } else if (name.endsWith("select")) { + } else if (op instanceof ParametricFunctionInstance pfi + && pfi.getBase() == services.getTypeConverter().getHeapLDT().getSelect()) { return translateSelect(term, initialSelect); } else if (name.equals("arr")) { OracleTerm index = generateOracle(term.sub(0), initialSelect); From 46212b55d0bdb870da3f77a4cddea324e4d317d2 Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 16:28:58 +0100 Subject: [PATCH 13/37] Fix some tests --- .../ilkd/key/java/Recoder2KeYConverter.java | 11 ++++++++- .../recoderext/RecoderModelTransformer.java | 2 +- .../objectOfErroneousClass.key | 24 +++++++++---------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java index 02cb218f130..702486330ac 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/Recoder2KeYConverter.java @@ -31,6 +31,7 @@ import de.uka.ilkd.key.java.statement.*; import de.uka.ilkd.key.ldt.HeapLDT; import de.uka.ilkd.key.ldt.JavaDLTheory; +import de.uka.ilkd.key.logic.GenericArgument; import de.uka.ilkd.key.logic.NamespaceSet; import de.uka.ilkd.key.logic.ProgramElementName; import de.uka.ilkd.key.logic.VariableNamer; @@ -794,7 +795,15 @@ public DLEmbeddedExpression convert(EscapeExpression e) { } - final Function named = namespaceSet.functions().lookup(new Name(name)); + Function named = namespaceSet.functions().lookup(new Name(name)); + + if (named == null && name.contains("<[")) { + int index = name.indexOf("<"); + name = name.substring(0, index); + ParametricFunctionDecl base = namespaceSet.parametricFunctions().lookup(name); + named = ParametricFunctionInstance.get(base, + ImmutableList.of(new GenericArgument(JavaDLTheory.ANY)), services); + } if (named == null) { // TODO provide position information?! diff --git a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/RecoderModelTransformer.java b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/RecoderModelTransformer.java index 7aae7cf4448..eb0bb922c1d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/RecoderModelTransformer.java +++ b/key.core/src/main/java/de/uka/ilkd/key/java/recoderext/RecoderModelTransformer.java @@ -78,7 +78,7 @@ public Expression getDefaultValue(Type type) { case "\\locset" -> EmptySetLiteral.INSTANCE; case "\\seq" -> EmptySeqLiteral.INSTANCE; case "\\set" -> new DLEmbeddedExpression("emptySet", Collections.emptyList()); - case "\\TYPE" -> new DLEmbeddedExpression("any::ssort", Collections.emptyList()); + case "\\TYPE" -> new DLEmbeddedExpression("ssort<[any]>", Collections.emptyList()); case "\\free" -> new DLEmbeddedExpression("atom", Collections.emptyList()); case "\\map" -> EmptyMapLiteral.INSTANCE; default -> { diff --git a/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key b/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key index 8abb86a56fe..c19191dd84b 100644 --- a/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key +++ b/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key @@ -44,43 +44,43 @@ wellFormed(heap) & select<[boolean]>(heap, null, - java.lang.NoClassDefFoundError::) + <[java.lang.NoClassDefFoundError]>) = TRUE & select<[boolean]>(heap, null, - java.lang.ArithmeticException::) + <[java.lang.ArithmeticException]>) = TRUE & select<[boolean]>(heap, null, - java.lang.NullPointerException::) + <[java.lang.NullPointerException]>) = TRUE & select<[boolean]>(heap, null, - A::) + <[A]>) = FALSE - & select<[boolean]>(heap, null, A::) + & select<[boolean]>(heap, null, <[A]>) = FALSE & select<[boolean]>(heap, null, - A::) + <[A]>) = FALSE - & select<[boolean]>(heap, null, A::) + & select<[boolean]>(heap, null, <[A]>) = FALSE & select<[boolean]>(heap, null, - FailedStaticInit::) + <[FailedStaticInit]>) = FALSE & select<[boolean]>(heap, null, - FailedStaticInit::) + <[FailedStaticInit]>) = FALSE & select<[boolean]>(heap, null, - FailedStaticInit::) + <[FailedStaticInit]>) = FALSE & select<[boolean]>(heap, null, - FailedStaticInit::) + <[FailedStaticInit]>) = FALSE -> \<{ errorWhileProcessingMethod=false;try { @@ -92,7 +92,7 @@ } }\> ( select<[boolean]>(heap, null, - FailedStaticInit::) + <[FailedStaticInit]>) = TRUE & select<[int]>(heap, fsi, From 1852859d94f485bb709ba43df7777e78e1b29422 Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 16:38:59 +0100 Subject: [PATCH 14/37] Fix some tests --- key.ui/examples/heap/permutedSum/perm.proof | 66 +++++++++---------- .../heap/verifyThis15_3_DLL/doUndo.proof | 6 +- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/key.ui/examples/heap/permutedSum/perm.proof b/key.ui/examples/heap/permutedSum/perm.proof index 1ec588e4f0d..84ab5e1cde0 100644 --- a/key.ui/examples/heap/permutedSum/perm.proof +++ b/key.ui/examples/heap/permutedSum/perm.proof @@ -407,8 +407,8 @@ (rule "polySimp_elimOne" (formula "16") (term "1,1")) (rule "polySimp_mulComm0" (formula "16") (term "0,1")) (rule "newSym_eq" (formula "16") (inst "newSymDef=add(mul(result_next, Z(0(#))), - mul(int::seqGet(Seq::select(heap, self, Perm::$c), - int::select(anon_heap_LOOP_0<>, + mul(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$c), + select<[int]>(anon_heap_LOOP_0<>, self, Perm::$pIdx)), Z(0(#))))") (inst "l=l_0")) @@ -1004,10 +1004,10 @@ (builtin "One Step Simplification" (formula "1")) (builtin "One Step Simplification" (formula "15")) (rule "eqTermCut" (formula "2") (term "0") (inst "s=bsum{int i;}(Z(0(#)), - int::select(anon_heap_LOOP_0<>, + select<[int]>(anon_heap_LOOP_0<>, self, Perm::$pIdx), - (int)(any::seqGet(Seq::select(heap, + (int)(seqGet<[any]>(select<[Seq]>(heap, self, Perm::$c), i)))") (userinteraction)) @@ -3065,7 +3065,7 @@ (rule "closeFalse" (formula "1")) ) (branch "Case 2" - (rule "eqTermCut" (formula "32") (term "1,0,1") (inst "s=int::select(anon_heap_LOOP_0<>, + (rule "eqTermCut" (formula "32") (term "1,0,1") (inst "s=select<[int]>(anon_heap_LOOP_0<>, self, Perm::$pIdx)") (userinteraction)) (branch "Assume self.a@heap[anon({(self, Perm::$pIdx)}, anon_heap_LOOP_0<>)].length = self.pIdx@anon_heap_LOOP_0<>" @@ -6723,9 +6723,9 @@ (rule "polySimp_mulLiterals" (formula "28") (term "0")) (rule "mul_literals" (formula "28") (term "1")) (rule "elimGcdEq" (formula "28") (inst "elimGcdRightDiv=Z(0(#))") (inst "elimGcdLeftDiv=bsum{int i;}(Z(0(#)), - length(int[]::select(heap, self, Perm::$a)), + length(select<[int[]]>(heap, self, Perm::$a)), div(add(Z(8(4(6(3(8(4(7(4(1(2(#))))))))))), - int::seqGet(Seq::select(heap, + seqGet<[int]>(select<[Seq]>(heap, self, Perm::$c), i)), @@ -6766,9 +6766,9 @@ (rule "replace_known_left" (formula "29") (term "0") (ifseqformula "13")) (builtin "One Step Simplification" (formula "29")) (rule "elimGcdEq" (formula "29") (inst "elimGcdRightDiv=Z(0(#))") (inst "elimGcdLeftDiv=bsum{int i;}(Z(0(#)), - length(int[]::select(heap, self, Perm::$a)), + length(select<[int[]]>(heap, self, Perm::$a)), div(add(Z(8(4(6(3(8(4(7(4(1(2(#))))))))))), - int::seqGet(Seq::select(heap, + seqGet<[int]>(select<[Seq]>(heap, self, Perm::$c), i)), @@ -6806,7 +6806,7 @@ (rule "polySimp_mulLiterals" (formula "2") (term "0")) (rule "polySimp_elimOne" (formula "2") (term "0")) (rule "elimGcdEq" (formula "31") (inst "elimGcdRightDiv=Z(0(#))") (inst "elimGcdLeftDiv=div(add(Z(8(4(6(3(8(4(7(4(1(2(#))))))))))), - int::seqGet(Seq::select(heap, self, Perm::$c), + seqGet<[int]>(select<[Seq]>(heap, self, Perm::$c), i_1)), Z(6(9(2(7(6(9(4(9(2(4(#))))))))))))") (inst "elimGcd=Z(6(9(2(7(6(9(4(9(2(4(#)))))))))))")) (builtin "One Step Simplification" (formula "31")) @@ -7111,29 +7111,29 @@ (rule "qeq_literals" (formula "38") (term "0,0")) (builtin "One Step Simplification" (formula "38")) (rule "newSym_eq" (formula "38") (inst "l=l_0") (inst "newSymDef=add(add(quotient_2, - mul(int::seqGet(Seq::select(heap, + mul(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$c), j_0), Z(0(#)))), - mul(\\if ( geq(int::seqGet(Seq::select(heap, + mul(\\if ( geq(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$perm), j_0), Z(0(#))) - & leq(int::seqGet(Seq::select(heap, + & leq(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$perm), j_0), add(Z(neglit(1(#))), - length(int[]::select(heap, + length(select<[int[]]>(heap, self, Perm::$a))))) - \\then (int::select(heap, - int[]::select(heap, + \\then (select<[int]>(heap, + select<[int[]]>(heap, self, Perm::$a), - arr(int::seqGet(Seq::select(heap, + arr(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$perm), j_0)))) @@ -7261,29 +7261,29 @@ (rule "qeq_literals" (formula "36") (term "0,0")) (builtin "One Step Simplification" (formula "36")) (rule "newSym_eq" (formula "36") (inst "l=l_1") (inst "newSymDef=add(add(quotient_0, - mul(int::seqGet(Seq::select(heap, + mul(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$c), i_0), Z(0(#)))), - mul(\\if ( geq(int::seqGet(Seq::select(heap, + mul(\\if ( geq(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$perm), i_0), Z(0(#))) - & leq(int::seqGet(Seq::select(heap, + & leq(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$perm), i_0), add(Z(neglit(1(#))), - length(int[]::select(heap, + length(select<[int[]]>(heap, self, Perm::$a))))) - \\then (int::select(heap, - int[]::select(heap, + \\then (select<[int]>(heap, + select<[int[]]>(heap, self, Perm::$a), - arr(int::seqGet(Seq::select(heap, + arr(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$perm), i_0)))) @@ -7455,11 +7455,11 @@ (rule "add_literals" (formula "20") (term "0,0,0")) (rule "leq_literals" (formula "20") (term "0,0")) (builtin "One Step Simplification" (formula "20")) - (rule "newSym_eq" (formula "20") (inst "l=l_2") (inst "newSymDef=add(mul(int::seqGet(Seq::select(heap, self, Perm::$c), + (rule "newSym_eq" (formula "20") (inst "l=l_2") (inst "newSymDef=add(mul(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$c), j_0), Z(0(#))), - mul(int::seqGet(Seq::select(heap, self, Perm::$b), - int::seqGet(Seq::select(heap, + mul(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$b), + seqGet<[int]>(select<[Seq]>(heap, self, Perm::$perm), j_0)), @@ -7537,11 +7537,11 @@ (rule "add_literals" (formula "21") (term "0,0,0")) (rule "leq_literals" (formula "21") (term "0,0")) (builtin "One Step Simplification" (formula "21")) - (rule "newSym_eq" (formula "21") (inst "l=l_3") (inst "newSymDef=add(mul(int::seqGet(Seq::select(heap, self, Perm::$c), + (rule "newSym_eq" (formula "21") (inst "l=l_3") (inst "newSymDef=add(mul(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$c), i_0), Z(0(#))), - mul(int::seqGet(Seq::select(heap, self, Perm::$b), - int::seqGet(Seq::select(heap, + mul(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$b), + seqGet<[int]>(select<[Seq]>(heap, self, Perm::$perm), i_0)), @@ -7603,13 +7603,13 @@ (rule "qeq_literals" (formula "22") (term "0,0")) (builtin "One Step Simplification" (formula "22")) (rule "newSym_eq" (formula "22") (inst "l=l_4") (inst "newSymDef=add(add(quotient_1, - mul(int::seqGet(Seq::select(heap, + mul(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$c), i_1), Z(0(#)))), - mul(int::seqGet(Seq::select(heap, self, Perm::$b), - int::seqGet(Seq::select(heap, + mul(seqGet<[int]>(select<[Seq]>(heap, self, Perm::$b), + seqGet<[int]>(select<[Seq]>(heap, self, Perm::$perm), i_1)), diff --git a/key.ui/examples/heap/verifyThis15_3_DLL/doUndo.proof b/key.ui/examples/heap/verifyThis15_3_DLL/doUndo.proof index ad9dadf2124..3d75b71c9af 100644 --- a/key.ui/examples/heap/verifyThis15_3_DLL/doUndo.proof +++ b/key.ui/examples/heap/verifyThis15_3_DLL/doUndo.proof @@ -742,16 +742,16 @@ (rule "closeTrue" (formula "44")) ) (branch "Case 2" - (rule "eqTermCut" (formula "44") (term "2,0,0,0,1,0") (inst "s=seqLen(seqSub(seqConcat(seqSub(Seq::select(heap, + (rule "eqTermCut" (formula "44") (term "2,0,0,0,1,0") (inst "s=seqLen(seqSub(seqConcat(seqSub(select<[Seq]>(heap, self, DoubleLinkedList::$s), Z(0(#)), k), - seqSub(Seq::select(heap, + seqSub(select<[Seq]>(heap, self, DoubleLinkedList::$s), add(k, Z(1(#))), - int::select(heap, + select<[int]>(heap, self, DoubleLinkedList::$len))), Z(0(#)), From 00accc733ab35cf6c604691e739beba9bacb8bb6 Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 16:41:30 +0100 Subject: [PATCH 15/37] Fix quicksort --- key.ui/examples/heap/quicksort/sort.script | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/key.ui/examples/heap/quicksort/sort.script b/key.ui/examples/heap/quicksort/sort.script index c2f8153fa2d..4c5dab4f16f 100644 --- a/key.ui/examples/heap/quicksort/sort.script +++ b/key.ui/examples/heap/quicksort/sort.script @@ -3,15 +3,15 @@ macro "autopilot-prep"; // proof obligation for seqPerm after 3 method calls select formula="{heapAtPre:=heap || exc:=null || heap:=heapAfter_sort_0} - seqPerm(seqDef{int u;}(0, array.length, any::select(heap, array, arr(u))), - seqDef{int u;}(0, array.length, any::select(heapAtPre, array, arr(u))))"; + seqPerm(seqDef{int u;}(0, array.length, select<[any]>(heap, array, arr(u))), + seqDef{int u;}(0, array.length, select<[any]>(heapAtPre, array, arr(u))))"; macro "simp-upd"; let @seqPre="seqDef{int u;}(0, array.length, array[u])" - @seqSplit="seqDef{int u;}(0, array.length, any::select(heapAfter_split, array, arr(u)))" - @seqSort="seqDef{int u;}(0, array.length, any::select(heapAfter_sort, array, arr(u)))" - @seqSort0="seqDef{int u;}(0, array.length, any::select(heapAfter_sort_0, array, arr(u)))"; + @seqSplit="seqDef{int u;}(0, array.length, select<[any]>(heapAfter_split, array, arr(u)))" + @seqSort="seqDef{int u;}(0, array.length, select<[any]>(heapAfter_sort, array, arr(u)))" + @seqSort0="seqDef{int u;}(0, array.length, select<[any]>(heapAfter_sort_0, array, arr(u)))"; rule seqPermSym formula="seqPerm(@seqSplit, @seqPre)"; From 3acb86836f29a333313bfa8e11f25a4e25ca9fcb Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 16:48:10 +0100 Subject: [PATCH 16/37] Fix BM --- ...bm((I)).JML normal_behavior operation contract.0.proof | 8 ++++---- ...unt((I,_bigint,_bigint)).JML accessible clause.0.proof | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof b/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof index 9a0d0a5b6c5..77099472eb0 100644 --- a/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof +++ b/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof @@ -1937,8 +1937,8 @@ (rule "arrayLengthIsAShort" (formula "19") (term "0")) (builtin "One Step Simplification" (formula "19")) (rule "true_left" (formula "19")) - (rule "allLeft" (formula "22") (inst "t=int::select(heap, - IntOpt::final(null, IntOpt::$NONE), + (rule "allLeft" (formula "22") (inst "t=select<[int]>(heap, + final<[IntOpt]>(null, IntOpt::$NONE), IntOpt::$value)")) (rule "cut_direct" (formula "22") (term "1")) (branch "CUT: self.count(a, k_0, IntOpt.NONE.value) * 2 <= k_0 TRUE" @@ -4211,8 +4211,8 @@ (rule "arrayLengthIsAShort" (formula "15") (term "0")) (builtin "One Step Simplification" (formula "15")) (rule "true_left" (formula "15")) - (rule "allLeft" (formula "19") (inst "t=int::select(heap, - IntOpt::final(null, IntOpt::$NONE), + (rule "allLeft" (formula "19") (inst "t=select<[int]>(heap, + final<[IntOpt]>(null, IntOpt::$NONE), IntOpt::$value)")) (rule "cut_direct" (formula "19") (term "1")) (branch "CUT: self.count(a, k_0, IntOpt.NONE.value) * 2 <= k_0 + mc_0 * -1 TRUE" diff --git a/key.ui/examples/heap/BoyerMoore/BM(BM__count((I,_bigint,_bigint)).JML accessible clause.0.proof b/key.ui/examples/heap/BoyerMoore/BM(BM__count((I,_bigint,_bigint)).JML accessible clause.0.proof index a935d14e417..3773d9d3e50 100644 --- a/key.ui/examples/heap/BoyerMoore/BM(BM__count((I,_bigint,_bigint)).JML accessible clause.0.proof +++ b/key.ui/examples/heap/BoyerMoore/BM(BM__count((I,_bigint,_bigint)).JML accessible clause.0.proof @@ -164,7 +164,7 @@ (rule "close" (formula "16") (ifseqformula "1")) ) (branch "k = 0 FALSE" - (rule "eqTermCut" (formula "16") (term "0,0,0") (inst "s=int::select(heap, a, arr(sub(k, Z(1(#)))))") (userinteraction)) + (rule "eqTermCut" (formula "16") (term "0,0,0") (inst "s=select<[int]>(heap, a, arr(sub(k, Z(1(#)))))") (userinteraction)) (branch "Assume a[k - 1]@heap[anon(allLocs setMinus a.*, anon_heap<>)] = a[k - 1]" (rule "polySimp_elimSub" (formula "17") (term "3,1,1,1")) (rule "mul_literals" (formula "17") (term "1,3,1,1,1")) From 19daf1c1814a9faf50b66f0e5bf4e96bd42e7af5 Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 17:05:31 +0100 Subject: [PATCH 17/37] Fix Observer functions --- .../de/uka/ilkd/key/logic/op/ParametricFunctionDecl.java | 5 +++++ .../de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/logic/op/ParametricFunctionDecl.java b/key.core/src/main/java/de/uka/ilkd/key/logic/op/ParametricFunctionDecl.java index 78b7a6a1c49..4b35f043001 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/logic/op/ParametricFunctionDecl.java +++ b/key.core/src/main/java/de/uka/ilkd/key/logic/op/ParametricFunctionDecl.java @@ -76,4 +76,9 @@ public ImmutableList getParameters() { public @NonNull Name name() { return name; } + + @Override + public String toString() { + return name().toString(); + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java index f79bd17173a..7856a393a65 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/ExpressionBuilder.java @@ -1493,7 +1493,7 @@ public JTerm visitAccessterm(KeYParser.AccesstermContext ctx) { op = UpdateJunctor.SKIP; } else if (firstName.endsWith(LIMIT_SUFFIX)) { firstName = firstName.substring(0, firstName.length() - 5); - op = lookupVarfuncId(ctx, firstName, + op = lookupVarfuncId(ctx, sortId.name().toString() + "::" + firstName, null); if (ObserverFunction.class.isAssignableFrom(op.getClass())) { op = getServices().getSpecificationRepository() From b214f1e24e2958b18f155737d345c6139794d31f Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 17 Mar 2026 17:16:05 +0100 Subject: [PATCH 18/37] Fix permission translation --- .../main/java/de/uka/ilkd/key/speclang/njml/Translator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/speclang/njml/Translator.java b/key.core/src/main/java/de/uka/ilkd/key/speclang/njml/Translator.java index bf5635ee7c4..bb6a955d0d1 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/speclang/njml/Translator.java +++ b/key.core/src/main/java/de/uka/ilkd/key/speclang/njml/Translator.java @@ -228,7 +228,8 @@ private JTerm convertToPermission(JTerm term, ParserRuleContext ctx) { raiseError("\\permission expression used in a non-permission" + " context and permissions not enabled.", ctx); } - if (!term.op().name().toString().endsWith("::select")) { + if (!(term.op() instanceof ParametricFunctionInstance pfi) + || pfi.getBase() != services.getTypeConverter().getHeapLDT().getSelect()) { raiseError("\\permission expression used with non store-ref" + " expression.", ctx); } return tb.select(services.getTypeConverter().getPermissionLDT().targetSort(), From 03a468880de9d43ce744190f0a2d4f619183562e Mon Sep 17 00:00:00 2001 From: Drodt Date: Wed, 18 Mar 2026 11:05:32 +0100 Subject: [PATCH 19/37] Fix proof --- key.core/tacletProofs/seqPerm2/Taclet_schiffl_lemma_2.proof | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key.core/tacletProofs/seqPerm2/Taclet_schiffl_lemma_2.proof b/key.core/tacletProofs/seqPerm2/Taclet_schiffl_lemma_2.proof index bef3d72c971..f44457aefb4 100644 --- a/key.core/tacletProofs/seqPerm2/Taclet_schiffl_lemma_2.proof +++ b/key.core/tacletProofs/seqPerm2/Taclet_schiffl_lemma_2.proof @@ -370,7 +370,7 @@ tryclose branch; // established: r3 fixes v_y_0 // from now on v_x_0 != v_y_0 and s_0[v_x_0]!= v_x_0 and // s_0[v_y_0]!= v_y_0 and s_0[v_x_0]!= v_y_0 -cut (int::seqGet(s_0, v_y_0)=v_x_0); +cut (seqGet<[int]>(s_0, v_y_0)=v_x_0); // This corresponds to case B4ii in the Notes. // in the following r4 refers to this instantion tryclose branch; From a7d24d22a2e88eb669e66e28bc90de6bd4cb3123 Mon Sep 17 00:00:00 2001 From: Drodt Date: Wed, 18 Mar 2026 11:56:43 +0100 Subject: [PATCH 20/37] Fix field name splitting --- key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java index 56b58e3518f..bf67e55c150 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java @@ -170,6 +170,11 @@ public record SplitFieldName(String className, String attributeName) { * @return the split field name */ public static @Nullable SplitFieldName trySplitFieldName(Named symbol) { + if (symbol instanceof ParametricFunctionInstance pfi) { + // e.g., <[A]> + return new SplitFieldName(pfi.getArgs().head().sort().toString(), + pfi.getBase().name().toString()); + } var name = symbol.name().toString(); // check for normal attribute int endOfClassName = name.indexOf("::$"); From 8c2b4e9a7385815a932e3a5b64df81afba351271 Mon Sep 17 00:00:00 2001 From: Drodt Date: Wed, 18 Mar 2026 13:16:34 +0100 Subject: [PATCH 21/37] Fix rule --- .../main/resources/de/uka/ilkd/key/proof/rules/javaRules.key | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key index 0018ca5de79..892f207daa1 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key @@ -4099,7 +4099,7 @@ erroneous_class_has_no_initialized_sub_class { \assumes(select<[boolean]>(heap, null, <[alphaObj]>) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, <[alphaObj]>)) + \find(select<[boolean]>(heap, null, <[betaObj]>)) \sameUpdateLevel \varcond(\sub(betaObj, alphaObj)) \replacewith(FALSE) From e9fc5604b89c9c43003f4e4b45047118f17db936 Mon Sep 17 00:00:00 2001 From: Drodt Date: Wed, 18 Mar 2026 13:25:02 +0100 Subject: [PATCH 22/37] Fix same update level --- .../de/uka/ilkd/key/proof/rules/seqRules.key | 11 ++++++----- .../uka/ilkd/key/proof/proverules/ProveRulesTest.java | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqRules.key index f7a6d79b2aa..859e9bf83db 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/seqRules.key @@ -675,7 +675,7 @@ \assumes(seqSingleton(x) = EQ ==>) \find(seqSub(EQ, 0, 1)) - + \sameUpdateLevel \replacewith(seqSingleton(x)) \heuristics(concrete) @@ -741,7 +741,7 @@ \assumes(seqSingleton(x) = EQ ==>) \find(seqSub(EQ, l, u)) - + \sameUpdateLevel \replacewith(seqConcat(seqSub(seqEmpty, \if(l < 0) \then(l) \else(0), \if(u < 0) \then(u) \else(0)), @@ -775,7 +775,7 @@ \assumes(seqConcat(s1, s2) = EQ ==>) \find(seqSub(EQ, l, u)) - + \sameUpdateLevel \replacewith(seqConcat(seqSub(s1, l, \if(seqLen(s1) < u) \then(seqLen(s1)) \else(u)), seqSub(s2, \if(l < seqLen(s1)) \then(0) \else(l - seqLen(s1)), u - seqLen(s1)))) @@ -802,7 +802,7 @@ \assumes(seqDef{i;}(0, u, a) = EQ ==>) \find(seqSub(seqConcat(EQ, seq), 0, u)) - + \sameUpdateLevel \replacewith(seqDef{i;}(0, u, a)) \heuristics(concrete) @@ -942,7 +942,6 @@ \schemaVar \variables int uSub, uSub1, uSub2; \find(seqDef{uSub;}(from, idx, t)) - \sameUpdateLevel \varcond(\notFreeIn(uSub, from), \notFreeIn(uSub, idx)) \replacewith(\if(from + 1 = idx) @@ -1172,6 +1171,7 @@ \schemaVar \term int idx; \schemaVar \term Heap h; \find(seqGet<[any]>(array2seq(h, a), idx)) + \sameUpdateLevel \replacewith(select<[any]>(h, a, arr(idx))); \add( ==> 0 <= idx & idx < length(a)) }; @@ -1182,6 +1182,7 @@ \schemaVar \term int idx; \schemaVar \term Heap h; \find(seqGet<[alpha]>(array2seq(h, a), idx)) + \sameUpdateLevel \replacewith(select<[alpha]>(h, a, arr(idx))); \add( ==> 0 <= idx & idx < length(a)) }; diff --git a/key.core/src/test/java/de/uka/ilkd/key/proof/proverules/ProveRulesTest.java b/key.core/src/test/java/de/uka/ilkd/key/proof/proverules/ProveRulesTest.java index f46b1133ff9..7fc5873766e 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/proof/proverules/ProveRulesTest.java +++ b/key.core/src/test/java/de/uka/ilkd/key/proof/proverules/ProveRulesTest.java @@ -136,7 +136,7 @@ public Stream data() throws ProblemLoaderException, IOException { } /* - * Create list of constructor parameters containig one entry for each taclet name. (that + * Create list of constructor parameters containing one entry for each taclet name. (that * means there will be one test case for each taclet) */ return tacletNames.stream() From abda47f964bb856d225963f1b783a2dc10e9d5d9 Mon Sep 17 00:00:00 2001 From: Drodt Date: Wed, 18 Mar 2026 15:18:23 +0100 Subject: [PATCH 23/37] Fix taclet proofs --- .../seqPerm/Taclet_seqNPermRange.proof | 12 ++++---- .../seqPerm/Taclet_seqNPermRange.txt | 6 ++-- .../seqPerm/Taclet_seqPermExists.proof | 2 +- .../seqPerm/Taclet_seqPermForall.proof | 2 +- .../seqPerm/Taclet_seqPermFromSwap.proof | 6 ++-- .../seqPerm/Taclet_seqPermTrans.proof | 4 +-- .../seqRules/Taclet_getOfArray2seq.proof | 6 ++-- .../seqRules/Taclet_seqNPermRight.proof | 28 +++++++++---------- .../seqRules/Taclet_seqNPermRight.proof.old | 28 +++++++++---------- 9 files changed, 47 insertions(+), 47 deletions(-) diff --git a/key.core/tacletProofs/seqPerm/Taclet_seqNPermRange.proof b/key.core/tacletProofs/seqPerm/Taclet_seqNPermRange.proof index 74602500ab0..ec10b18deb3 100644 --- a/key.core/tacletProofs/seqPerm/Taclet_seqNPermRange.proof +++ b/key.core/tacletProofs/seqPerm/Taclet_seqNPermRange.proof @@ -62,12 +62,12 @@ -> \\forall int idx; ( leq(Z(0(#)), idx) & lt(idx, v_iv) -> leq(Z(0(#)), - (int)(any::seqGet(s, idx))) - & lt((int)(any::seqGet(s, idx)), + (int)(seqGet<[any]>(s, idx))) + & lt((int)(seqGet<[any]>(s, idx)), seqLen(s)) - & int::instance(any::seqGet(s, idx)) + & instance<[int]>(seqGet<[any]>(s, idx)) = TRUE))")) -(branch "CUT: forall int v_iv; forall Seq s; ( seqNPerm(s) & s.length = v_iv -> forall int idx; ( 0 <= idx & idx < v_iv -> 0 <= (int)(s[idx]) & (int)(s[idx]) < s.length & int::instance(s[idx]) = TRUE)) TRUE" +(branch "CUT: forall int v_iv; forall Seq s; ( seqNPerm(s) & s.length = v_iv -> forall int idx; ( 0 <= idx & idx < v_iv -> 0 <= (int)(s[idx]) & (int)(s[idx]) < s.length & instance<[int]>(s[idx]) = TRUE)) TRUE" (rule "allRight" (formula "3") (inst "sk=v_iv_0")) (rule "impRight" (formula "3")) (rule "andLeft" (formula "1")) @@ -93,7 +93,7 @@ (rule "close" (formula "7") (ifseqformula "4")) ) ) -(branch "CUT: forall int v_iv; forall Seq s; ( seqNPerm(s) & s.length = v_iv -> forall int idx; ( 0 <= idx & idx < v_iv -> 0 <= (int)(s[idx]) & (int)(s[idx]) < s.length & int::instance(s[idx]) = TRUE)) FALSE" +(branch "CUT: forall int v_iv; forall Seq s; ( seqNPerm(s) & s.length = v_iv -> forall int idx; ( 0 <= idx & idx < v_iv -> 0 <= (int)(s[idx]) & (int)(s[idx]) < s.length & instance<[int]>(s[idx]) = TRUE)) FALSE" (rule "auto_int_induction_geqZero" (formula "2") (inst "sk=v_iv_1")) (branch "Base Case" (rule "allRight" (formula "2") (inst "sk=s_0")) @@ -1373,7 +1373,7 @@ (branch (rule "andRight" (formula "15")) (branch - (rule "cut" (inst "cutFormula=leq(Z(0(#)), (int)(any::seqGet(s_1, jv_0)))")) + (rule "cut" (inst "cutFormula=leq(Z(0(#)), (int)(seqGet<[any]>(s_1, jv_0)))")) (branch "CUT: 0 <= (int)(s_1[jv_0]) TRUE" (rule "eqSymm" (formula "2")) (rule "castedGetAny" (formula "16") (term "1")) diff --git a/key.core/tacletProofs/seqPerm/Taclet_seqNPermRange.txt b/key.core/tacletProofs/seqPerm/Taclet_seqNPermRange.txt index c62ed340eb4..0e550f6af00 100644 --- a/key.core/tacletProofs/seqPerm/Taclet_seqNPermRange.txt +++ b/key.core/tacletProofs/seqPerm/Taclet_seqNPermRange.txt @@ -51,7 +51,7 @@ cut '\forall int v_iv; \forall Seq s; (\forall int idx; (0 <= idx & idx < v_iv       ->   0 <= (int)s[idx]        & (int)s[idx] < seqLen(s) -       & int::instance(s[idx]) = TRUE)))'; +       & instance<[int]>(s[idx]) = TRUE)))'; rule allRight; rule impRight; rule andLeft; @@ -128,7 +128,7 @@ rule impLeft; rule hide_right formula='   0 <= (int)(s_1[idx_2])  & (int)(s_1[idx_2]) < s_1.length - & int::instance(s_1[idx_2]) = TRUE'; + & instance<[int]>(s_1[idx_2]) = TRUE'; rule andRight; tryclose branch; tryclose branch; @@ -163,7 +163,7 @@ rule hide_left formula='    (   0 <= idx & idx < v_iv_1     ->   0 <= (int)(seqRemove(s_1, jv_0)[idx])        & (int)(seqRemove(s_1, jv_0)[idx]) < seqRemove(s_1, jv_0).length -       & int::instance(seqRemove(s_1, jv_0)[idx]) = TRUE)'; +       & instance<[int]>(seqRemove(s_1, jv_0)[idx]) = TRUE)'; cut 'idx_2!=jv_0'; tryclose branch; rule hide_right formula='jv_0 < idx_2'; diff --git a/key.core/tacletProofs/seqPerm/Taclet_seqPermExists.proof b/key.core/tacletProofs/seqPerm/Taclet_seqPermExists.proof index 9cf2911607d..65aed6cb07c 100644 --- a/key.core/tacletProofs/seqPerm/Taclet_seqPermExists.proof +++ b/key.core/tacletProofs/seqPerm/Taclet_seqPermExists.proof @@ -217,7 +217,7 @@ (rule "inEqSimp_contradInEq1" (formula "10") (term "0") (ifseqformula "2")) (rule "qeq_literals" (formula "10") (term "0,0")) (builtin "One Step Simplification" (formula "10")) - (rule "allLeft" (formula "1") (inst "t=int::seqGet(s_0, v_iv_0)")) + (rule "allLeft" (formula "1") (inst "t=seqGet<[int]>(s_0, v_iv_0)")) (rule "applyEq" (formula "1") (term "0,0,0,0") (ifseqformula "14")) (rule "replace_known_left" (formula "1") (term "0,0,0") (ifseqformula "5")) (builtin "One Step Simplification" (formula "1")) diff --git a/key.core/tacletProofs/seqPerm/Taclet_seqPermForall.proof b/key.core/tacletProofs/seqPerm/Taclet_seqPermForall.proof index 5ca063ed0a7..42b3f176619 100644 --- a/key.core/tacletProofs/seqPerm/Taclet_seqPermForall.proof +++ b/key.core/tacletProofs/seqPerm/Taclet_seqPermForall.proof @@ -331,7 +331,7 @@ (rule "inEqSimp_contradInEq1" (formula "8") (term "0") (ifseqformula "1")) (rule "qeq_literals" (formula "8") (term "0,0")) (builtin "One Step Simplification" (formula "8")) - (rule "allLeft" (formula "3") (inst "t=int::seqGet(s_0, v_iv_0)")) + (rule "allLeft" (formula "3") (inst "t=seqGet<[int]>(s_0, v_iv_0)")) (rule "applyEqRigid" (formula "3") (term "0,0,0") (ifseqformula "13")) (rule "replace_known_right" (formula "3") (term "0,0") (ifseqformula "15")) (builtin "One Step Simplification" (formula "3")) diff --git a/key.core/tacletProofs/seqPerm/Taclet_seqPermFromSwap.proof b/key.core/tacletProofs/seqPerm/Taclet_seqPermFromSwap.proof index 7b2eb8e4a2f..44149780597 100644 --- a/key.core/tacletProofs/seqPerm/Taclet_seqPermFromSwap.proof +++ b/key.core/tacletProofs/seqPerm/Taclet_seqPermFromSwap.proof @@ -132,11 +132,11 @@ (rule "exRightHide" (formula "12") (inst "t=seqDef{int u;}(Z(0(#)), seqLen(s_1), \\if (u = v_iv_1) - \\then (any::seqGet(s_1, v_jv_1)) + \\then (seqGet<[any]>(s_1, v_jv_1)) \\else (\\if (u = v_jv_1) - \\then (any::seqGet(s_1, + \\then (seqGet<[any]>(s_1, v_iv_1)) - \\else (any::seqGet(s_1, + \\else (seqGet<[any]>(s_1, u))))") (userinteraction)) (rule "andRight" (formula "12") (userinteraction)) (branch diff --git a/key.core/tacletProofs/seqPerm/Taclet_seqPermTrans.proof b/key.core/tacletProofs/seqPerm/Taclet_seqPermTrans.proof index ed674597d6e..d304c4266a9 100644 --- a/key.core/tacletProofs/seqPerm/Taclet_seqPermTrans.proof +++ b/key.core/tacletProofs/seqPerm/Taclet_seqPermTrans.proof @@ -76,7 +76,7 @@ (rule "exLeft" (formula "4") (inst "sk=s_1") (userinteraction)) (rule "exRightHide" (formula "5") (inst "t=seqDef{int i;}(Z(0(#)), seqLen(s_1), - int::seqGet(s_0, int::seqGet(s_1, i)))") (userinteraction)) + seqGet<[int]>(s_0, seqGet<[int]>(s_1, i)))") (userinteraction)) (rule "andRight" (formula "5") (userinteraction)) (branch (rule "andRight" (formula "5") (userinteraction)) @@ -310,7 +310,7 @@ (rule "andLeft" (formula "4")) (rule "add_zero_right" (formula "15") (term "1,1,0,0") (userinteraction)) (rule "castDel" (formula "15") (term "0") (userinteraction)) - (rule "eqTermCut" (formula "15") (term "1,0") (inst "s=any::seqGet(s_1, jv_1)") (userinteraction)) + (rule "eqTermCut" (formula "15") (term "1,0") (inst "s=seqGet<[any]>(s_1, jv_1)") (userinteraction)) (branch "Assume (int)s_1[jv_1] = s_1[jv_1]" (rule "applyEqRigid" (formula "16") (term "1,0") (ifseqformula "1") (userinteraction)) (rule "applyEqRigid" (formula "16") (term "0,1,0") (ifseqformula "4") (userinteraction)) diff --git a/key.core/tacletProofs/seqRules/Taclet_getOfArray2seq.proof b/key.core/tacletProofs/seqRules/Taclet_getOfArray2seq.proof index b26336f8cc4..d5a6a8da742 100644 --- a/key.core/tacletProofs/seqRules/Taclet_getOfArray2seq.proof +++ b/key.core/tacletProofs/seqRules/Taclet_getOfArray2seq.proof @@ -60,8 +60,8 @@ = store(f_h, f_a, arr(f_idx), - any::select(f_h, f_a, arr(f_idx)))") (userinteraction)) -(branch "CUT: f_h = f_h[f_a[f_idx] := any::select(f_h, f_a, arr(f_idx))] TRUE" + select<[any]>(f_h, f_a, arr(f_idx)))") (userinteraction)) +(branch "CUT: f_h = f_h[f_a[f_idx] := select<[any]>(f_h, f_a, arr(f_idx))] TRUE" (rule "applyEqRigid" (formula "3") (term "0,0,0") (ifseqformula "1") (userinteraction)) (rule "applyEqRigid" (formula "3") (term "0,1") (ifseqformula "1") (userinteraction)) (rule "selectOfStore" (formula "3") (term "1") (userinteraction)) @@ -83,7 +83,7 @@ (builtin "One Step Simplification" (formula "4")) (rule "closeTrue" (formula "4")) ) -(branch "CUT: f_h = f_h[f_a[f_idx] := any::select(f_h, f_a, arr(f_idx))] FALSE" +(branch "CUT: f_h = f_h[f_a[f_idx] := select<[any]>(f_h, f_a, arr(f_idx))] FALSE" (rule "equalityToSelect" (formula "2") (inst "ov=ov") (inst "fv=fv") (userinteraction)) (rule "allRight" (formula "2") (inst "sk=ov_0") (userinteraction)) (rule "allRight" (formula "2") (inst "sk=fv_0") (userinteraction)) diff --git a/key.core/tacletProofs/seqRules/Taclet_seqNPermRight.proof b/key.core/tacletProofs/seqRules/Taclet_seqNPermRight.proof index 71911daf3f7..369502af2df 100644 --- a/key.core/tacletProofs/seqRules/Taclet_seqNPermRight.proof +++ b/key.core/tacletProofs/seqRules/Taclet_seqNPermRight.proof @@ -65,25 +65,25 @@ ( leq(Z(0(#)), v_iv) & lt(v_iv, v_jv) & lt(v_jv, seqLen(s)) - -> ! int::seqGet(s, v_iv) - = int::seqGet(s, v_jv)) + -> ! seqGet<[int]>(s, v_iv) + = seqGet<[int]>(s, v_jv)) & \\forall int v_iv; ( leq(Z(0(#)), v_iv) & lt(v_iv, seqLen(s)) - -> leq(Z(0(#)), int::seqGet(s, v_iv)) - & lt(int::seqGet(s, v_iv), seqLen(s))) + -> leq(Z(0(#)), seqGet<[int]>(s, v_iv)) + & lt(seqGet<[int]>(s, v_iv), seqLen(s))) & \\forall int v_iv; ( leq(Z(0(#)), v_iv) & lt(v_iv, seqLen(s)) - -> int::instance(any::seqGet(s, v_iv)) + -> instance<[int]>(seqGet<[any]>(s, v_iv)) = TRUE) -> \\forall int iv; ( leq(Z(0(#)), iv) & lt(iv, seqLen(s)) -> \\exists int jv; ( leq(Z(0(#)), jv) & lt(jv, seqLen(s)) - & int::seqGet(s, jv) = iv)))") (userinteraction)) -(branch "CUT: forall int N; forall Seq s; ( s.length = N -> forall int v_iv; forall int v_jv; ( 0 <= v_iv & v_iv < v_jv & v_jv < s.length -> !(int)s[v_iv] = (int)s[v_jv]) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> 0 <= (int)s[v_iv] & (int)s[v_iv] < s.length) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> int::instance(s[v_iv]) = TRUE) -> forall int iv; ( 0 <= iv & iv < s.length -> exists int jv; ( 0 <= jv & jv < s.length & (int)s[jv] = iv))) TRUE" + & seqGet<[int]>(s, jv) = iv)))") (userinteraction)) +(branch "CUT: forall int N; forall Seq s; ( s.length = N -> forall int v_iv; forall int v_jv; ( 0 <= v_iv & v_iv < v_jv & v_jv < s.length -> !(int)s[v_iv] = (int)s[v_jv]) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> 0 <= (int)s[v_iv] & (int)s[v_iv] < s.length) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> instance<[int]>(s[v_iv]) = TRUE) -> forall int iv; ( 0 <= iv & iv < s.length -> exists int jv; ( 0 <= jv & jv < s.length & (int)s[jv] = iv))) TRUE" (rule "allLeftHide" (formula "1") (inst "t=seqLen(f_s)") (userinteraction)) (rule "allLeftHide" (formula "1") (inst "t=f_s") (userinteraction)) (rule "impLeft" (formula "1") (userinteraction)) @@ -341,7 +341,7 @@ ) ) ) -(branch "CUT: forall int N; forall Seq s; ( s.length = N -> forall int v_iv; forall int v_jv; ( 0 <= v_iv & v_iv < v_jv & v_jv < s.length -> !(int)s[v_iv] = (int)s[v_jv]) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> 0 <= (int)s[v_iv] & (int)s[v_iv] < s.length) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> int::instance(s[v_iv]) = TRUE) -> forall int iv; ( 0 <= iv & iv < s.length -> exists int jv; ( 0 <= jv & jv < s.length & (int)s[jv] = iv))) FALSE" +(branch "CUT: forall int N; forall Seq s; ( s.length = N -> forall int v_iv; forall int v_jv; ( 0 <= v_iv & v_iv < v_jv & v_jv < s.length -> !(int)s[v_iv] = (int)s[v_jv]) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> 0 <= (int)s[v_iv] & (int)s[v_iv] < s.length) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> instance<[int]>(s[v_iv]) = TRUE) -> forall int iv; ( 0 <= iv & iv < s.length -> exists int jv; ( 0 <= jv & jv < s.length & (int)s[jv] = iv))) FALSE" (rule "auto_int_induction_geqZero" (formula "4") (inst "sk=N_0") (userinteraction)) (branch "Base Case" (rule "allRight" (formula "4") (inst "sk=s_0")) @@ -375,18 +375,18 @@ (rule "cut" (inst "cutFormula=\\exists int j; ( leq(Z(0(#)), j) & lt(j, seqLen(s_1)) - & int::seqGet(s_1, j) = N_0)") (userinteraction)) + & seqGet<[int]>(s_1, j) = N_0)") (userinteraction)) (branch "CUT: exists int j; (0 <= j & j < s_1.length & (int)s_1[j] = N_0) TRUE" (rule "exLeft" (formula "1") (inst "sk=j_0") (userinteraction)) (rule "cut" (inst "cutFormula=\\forall int j; ( leq(Z(0(#)), j) & lt(j, seqLen(s_1)) & !j = j_0 - -> !int::seqGet(s_1, j) = N_0)") (userinteraction)) + -> !seqGet<[int]>(s_1, j) = N_0)") (userinteraction)) (branch "CUT: forall int j; ( 0 <= j & j < s_1.length & !j = j_0 -> !(int)s_1[j] = N_0) TRUE" (rule "allLeftHide" (formula "8") (inst "t=seqDef{int i;}(Z(0(#)), N_0, \\if (i = j_0) - \\then (int::seqGet(s_1, N_0)) - \\else (int::seqGet(s_1, i)))") (userinteraction)) + \\then (seqGet<[int]>(s_1, N_0)) + \\else (seqGet<[int]>(s_1, i)))") (userinteraction)) (rule "impLeft" (formula "8") (userinteraction)) (branch (rule "lenOfSeqDef" (formula "11") (term "0")) @@ -2004,7 +2004,7 @@ ) ) (branch "CUT: exists int j; (0 <= j & j < s_1.length & (int)s_1[j] = N_0) FALSE" - (rule "allLeftHide" (formula "6") (inst "t=seqDef{int i;}(Z(0(#)), N_0, int::seqGet(s_1, i))") (userinteraction)) + (rule "allLeftHide" (formula "6") (inst "t=seqDef{int i;}(Z(0(#)), N_0, seqGet<[int]>(s_1, i))") (userinteraction)) (rule "impLeft" (formula "6") (userinteraction)) (branch (rule "lenOfSeqDef" (formula "9") (term "0")) @@ -2724,7 +2724,7 @@ ) ) (branch - (rule "allLeftHide" (formula "6") (inst "t=int::seqGet(s_1, N_0)") (userinteraction)) + (rule "allLeftHide" (formula "6") (inst "t=seqGet<[int]>(s_1, N_0)") (userinteraction)) (rule "impLeft" (formula "6") (userinteraction)) (branch (rule "inEqSimp_ltToLeq" (formula "9") (term "1")) diff --git a/key.core/tacletProofs/seqRules/Taclet_seqNPermRight.proof.old b/key.core/tacletProofs/seqRules/Taclet_seqNPermRight.proof.old index d39886843e8..fb1d8dcf884 100644 --- a/key.core/tacletProofs/seqRules/Taclet_seqNPermRight.proof.old +++ b/key.core/tacletProofs/seqRules/Taclet_seqNPermRight.proof.old @@ -68,25 +68,25 @@ ( leq(Z(0(#)), v_iv) & lt(v_iv, v_jv) & lt(v_jv, seqLen(s)) - -> ! int::seqGet(s, v_iv) - = int::seqGet(s, v_jv)) + -> ! seqGet<[int]>(s, v_iv) + = seqGet<[int]>(s, v_jv)) & \\forall int v_iv; ( leq(Z(0(#)), v_iv) & lt(v_iv, seqLen(s)) - -> leq(Z(0(#)), int::seqGet(s, v_iv)) - & lt(int::seqGet(s, v_iv), seqLen(s))) + -> leq(Z(0(#)), seqGet<[int]>(s, v_iv)) + & lt(seqGet<[int]>(s, v_iv), seqLen(s))) & \\forall int v_iv; ( leq(Z(0(#)), v_iv) & lt(v_iv, seqLen(s)) - -> int::instance(any::seqGet(s, v_iv)) + -> instance<[int]>(seqGet<[any]>(s, v_iv)) = TRUE) -> \\forall int iv; ( leq(Z(0(#)), iv) & lt(iv, seqLen(s)) -> \\exists int jv; ( leq(Z(0(#)), jv) & lt(jv, seqLen(s)) - & int::seqGet(s, jv) = iv)))") (userinteraction)) -(branch "CUT: forall int N; forall Seq s; ( s.length = N -> forall int v_iv; forall int v_jv; ( 0 <= v_iv & v_iv < v_jv & v_jv < s.length -> !(int)s[v_iv] = (int)s[v_jv]) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> 0 <= (int)s[v_iv] & (int)s[v_iv] < s.length) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> int::instance(s[v_iv]) = TRUE) -> forall int iv; ( 0 <= iv & iv < s.length -> exists int jv; ( 0 <= jv & jv < s.length & (int)s[jv] = iv))) TRUE" + & seqGet<[int]>(s, jv) = iv)))") (userinteraction)) +(branch "CUT: forall int N; forall Seq s; ( s.length = N -> forall int v_iv; forall int v_jv; ( 0 <= v_iv & v_iv < v_jv & v_jv < s.length -> !(int)s[v_iv] = (int)s[v_jv]) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> 0 <= (int)s[v_iv] & (int)s[v_iv] < s.length) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> instance<[int]>(s[v_iv]) = TRUE) -> forall int iv; ( 0 <= iv & iv < s.length -> exists int jv; ( 0 <= jv & jv < s.length & (int)s[jv] = iv))) TRUE" (rule "allLeftHide" (formula "1") (inst "t=seqLen(f_s)") (userinteraction)) (rule "allLeftHide" (formula "1") (inst "t=f_s") (userinteraction)) (rule "impLeft" (formula "1") (userinteraction)) @@ -485,7 +485,7 @@ ) ) ) -(branch "CUT: forall int N; forall Seq s; ( s.length = N -> forall int v_iv; forall int v_jv; ( 0 <= v_iv & v_iv < v_jv & v_jv < s.length -> !(int)s[v_iv] = (int)s[v_jv]) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> 0 <= (int)s[v_iv] & (int)s[v_iv] < s.length) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> int::instance(s[v_iv]) = TRUE) -> forall int iv; ( 0 <= iv & iv < s.length -> exists int jv; ( 0 <= jv & jv < s.length & (int)s[jv] = iv))) FALSE" +(branch "CUT: forall int N; forall Seq s; ( s.length = N -> forall int v_iv; forall int v_jv; ( 0 <= v_iv & v_iv < v_jv & v_jv < s.length -> !(int)s[v_iv] = (int)s[v_jv]) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> 0 <= (int)s[v_iv] & (int)s[v_iv] < s.length) & forall int v_iv; ( 0 <= v_iv & v_iv < s.length -> instance<[int]>(s[v_iv]) = TRUE) -> forall int iv; ( 0 <= iv & iv < s.length -> exists int jv; ( 0 <= jv & jv < s.length & (int)s[jv] = iv))) FALSE" (rule "hide_right" (formula "5") (userinteraction)) (rule "hide_left" (formula "2") (userinteraction)) (rule "hide_left" (formula "2") (userinteraction)) @@ -572,18 +572,18 @@ (rule "cut" (inst "cutFormula=\\exists int j; ( leq(Z(0(#)), j) & lt(j, seqLen(s_1)) - & int::seqGet(s_1, j) = N_0)") (userinteraction)) + & seqGet<[int]>(s_1, j) = N_0)") (userinteraction)) (branch "CUT: exists int j; (0 <= j & j < s_1.length & (int)s_1[j] = N_0) TRUE" (rule "exLeft" (formula "1") (inst "sk=j_0") (userinteraction)) (rule "cut" (inst "cutFormula=\\forall int j; ( leq(Z(0(#)), j) & lt(j, seqLen(s_1)) & !j = j_0 - -> !int::seqGet(s_1, j) = N_0)") (userinteraction)) + -> !seqGet<[int]>(s_1, j) = N_0)") (userinteraction)) (branch "CUT: forall int j; ( 0 <= j & j < s_1.length & !j = j_0 -> !(int)s_1[j] = N_0) TRUE" (rule "allLeftHide" (formula "8") (inst "t=seqDef{int i;}(Z(0(#)), N_0, \\if (i = j_0) - \\then (int::seqGet(s_1, N_0)) - \\else (int::seqGet(s_1, i)))") (userinteraction)) + \\then (seqGet<[int]>(s_1, N_0)) + \\else (seqGet<[int]>(s_1, i)))") (userinteraction)) (rule "impLeft" (formula "8") (userinteraction)) (branch "Case 1" (rule "andLeft" (formula "2")) @@ -4451,7 +4451,7 @@ ) (branch "CUT: exists int j; (0 <= j & j < s_1.length & (int)s_1[j] = N_0) FALSE" (rule "hide_right" (formula "8") (userinteraction)) - (rule "allLeftHide" (formula "6") (inst "t=seqDef{int i;}(Z(0(#)), N_0, int::seqGet(s_1, i))") (userinteraction)) + (rule "allLeftHide" (formula "6") (inst "t=seqDef{int i;}(Z(0(#)), N_0, seqGet<[int]>(s_1, i))") (userinteraction)) (rule "impLeft" (formula "6") (userinteraction)) (branch "Case 1" (rule "eqSymm" (formula "1") (term "0,1,0,0")) @@ -5428,7 +5428,7 @@ ) ) (branch "Case 2" - (rule "allLeftHide" (formula "6") (inst "t=int::seqGet(s_1, N_0)") (userinteraction)) + (rule "allLeftHide" (formula "6") (inst "t=seqGet<[int]>(s_1, N_0)") (userinteraction)) (rule "impLeft" (formula "6") (userinteraction)) (branch "Case 1" (rule "eqSymm" (formula "1") (term "0,1,0,0")) From 45fec3d33123438a9622a89afa43727c8bf1f63c Mon Sep 17 00:00:00 2001 From: Drodt Date: Wed, 18 Mar 2026 15:22:16 +0100 Subject: [PATCH 24/37] Update taclet oracle (same update level follow-up) --- .../de/uka/ilkd/key/nparser/taclets.old.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt index 76cc8c4b980..8710221e64e 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt @@ -1,5 +1,5 @@ # This files contains representation of taclets, which are accepted and revised. -# Date: Tue Mar 17 08:13:22 CET 2026 +# Date: Wed Mar 18 15:21:04 CET 2026 == abortJavaCardTransactionAPI (abortJavaCardTransactionAPI) ========================================= abortJavaCardTransactionAPI { @@ -9589,7 +9589,7 @@ Choices: true} == getAnyOfArray2seq (getAnyOfArray2seq) ========================================= getAnyOfArray2seq { \find(seqGet<[any]>(array2seq(h,a),idx)) -\add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; +\sameUpdateLevel\add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; \replacewith(select<[any]>(h,a,arr(idx))) Choices: sequences:on} @@ -9609,7 +9609,7 @@ Choices: (programRules:Java & JavaCard:on)} == getOfArray2seq (getOfArray2seq) ========================================= getOfArray2seq { \find(seqGet<[alpha]>(array2seq(h,a),idx)) -\add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; +\sameUpdateLevel\add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; \replacewith(select<[alpha]>(h,a,arr(idx))) Choices: sequences:on} @@ -15885,7 +15885,7 @@ Choices: sequences:on} == seqDef_one_summand (seqDef_one_summand) ========================================= seqDef_one_summand { \find(seqDef{uSub (variable)}(from,idx,t)) -\sameUpdateLevel\varcond(\notFreeIn(uSub (variable), idx (int term)), \notFreeIn(uSub (variable), from (int term))) +\varcond(\notFreeIn(uSub (variable), idx (int term)), \notFreeIn(uSub (variable), from (int term))) \replacewith(if-then-else(equals(add(from,Z(1(#))),idx),seqSingleton(subst{uSub (variable)}(from,t)),seqDef{uSub (variable)}(from,idx,t))) Choices: sequences:on} @@ -16890,7 +16890,7 @@ Choices: sequences:on} subSeqConcatEQ { \assumes ([equals(seqConcat(s1,s2),EQ)]==>[]) \find(seqSub(EQ,l,u)) -\replacewith(seqConcat(seqSub(s1,l,if-then-else(lt(seqLen(s1),u),seqLen(s1),u)),seqSub(s2,if-then-else(lt(l,seqLen(s1)),Z(0(#)),sub(l,seqLen(s1))),sub(u,seqLen(s1))))) +\sameUpdateLevel\replacewith(seqConcat(seqSub(s1,l,if-then-else(lt(seqLen(s1),u),seqLen(s1),u)),seqSub(s2,if-then-else(lt(l,seqLen(s1)),Z(0(#)),sub(l,seqLen(s1))),sub(u,seqLen(s1))))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- @@ -16912,7 +16912,7 @@ Choices: sequences:on} subSeqHeadSeqDefEQ { \assumes ([equals(seqDef{i (variable)}(Z(0(#)),u,a),EQ)]==>[]) \find(seqSub(seqConcat(EQ,seq),Z(0(#)),u)) -\replacewith(seqDef{i (variable)}(Z(0(#)),u,a)) +\sameUpdateLevel\replacewith(seqDef{i (variable)}(Z(0(#)),u,a)) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- @@ -16934,7 +16934,7 @@ Choices: sequences:on} subSeqSingleton2EQ { \assumes ([equals(seqSingleton(x),EQ)]==>[]) \find(seqSub(EQ,l,u)) -\replacewith(seqConcat(seqSub(seqEmpty,if-then-else(lt(l,Z(0(#))),l,Z(0(#))),if-then-else(lt(u,Z(0(#))),u,Z(0(#)))),seqConcat(if-then-else(and(leq(l,Z(0(#))),geq(u,Z(1(#)))),seqSingleton(x),seqEmpty),seqSub(seqEmpty,if-then-else(gt(l,Z(0(#))),l,Z(1(#))),if-then-else(gt(u,Z(0(#))),u,Z(1(#))))))) +\sameUpdateLevel\replacewith(seqConcat(seqSub(seqEmpty,if-then-else(lt(l,Z(0(#))),l,Z(0(#))),if-then-else(lt(u,Z(0(#))),u,Z(0(#)))),seqConcat(if-then-else(and(leq(l,Z(0(#))),geq(u,Z(1(#)))),seqSingleton(x),seqEmpty),seqSub(seqEmpty,if-then-else(gt(l,Z(0(#))),l,Z(1(#))),if-then-else(gt(u,Z(0(#))),u,Z(1(#))))))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- @@ -16942,7 +16942,7 @@ Choices: sequences:on} subSeqSingletonEQ { \assumes ([equals(seqSingleton(x),EQ)]==>[]) \find(seqSub(EQ,Z(0(#)),Z(1(#)))) -\replacewith(seqSingleton(x)) +\sameUpdateLevel\replacewith(seqSingleton(x)) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- From 0e6cd4404d5c29281c29d194bb2b9b11994cb7ef Mon Sep 17 00:00:00 2001 From: Drodt Date: Wed, 18 Mar 2026 15:41:18 +0100 Subject: [PATCH 25/37] Fix escaping in XML --- .../key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml index 48fb52b6664..e6776027b41 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml +++ b/key.core/src/main/resources/de/uka/ilkd/key/smt/newsmt2/LocSet.DefinedSymbolsHandler.preamble.xml @@ -13,8 +13,8 @@ > <-> + o != null & !select<[boolean]>(h,o,java.lang.Object::)=TRUE ) ]]> From dc42f0e539e8fd8388751a29e914fc5c3ce81bd1 Mon Sep 17 00:00:00 2001 From: Drodt Date: Sun, 29 Mar 2026 21:03:08 +0200 Subject: [PATCH 26/37] Fix select w/ old syntax --- .../src/main/resources/de/uka/ilkd/key/proof/rules/String.key | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/String.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/String.key index 76cb78aa61d..821764b7648 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/String.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/String.key @@ -27,7 +27,7 @@ \replacewith(\if (#constantvalue(#csv) = null) \then (null) \else (strPool((Seq)#constantvalue(#csv))) ) \add(#constantvalue(#csv) = null | ( strPool((Seq)#constantvalue(#csv) ) != null & - boolean::select(heap, strPool((Seq)#constantvalue(#csv)), java.lang.Object::#$created) = TRUE) ==>) + select<[boolean]>(heap, strPool((Seq)#constantvalue(#csv)), java.lang.Object::#$created) = TRUE) ==>) \heuristics(concrete) }; From 7e4eff06785b5839910aac625d44faa7fb4c4ce9 Mon Sep 17 00:00:00 2001 From: Drodt Date: Sun, 29 Mar 2026 21:17:33 +0200 Subject: [PATCH 27/37] Fix field name splitting --- key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java index 019a643e729..3b9fb200544 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java @@ -180,9 +180,9 @@ public record SplitFieldName(String className, String attributeName) { */ public static @Nullable SplitFieldName trySplitFieldName(Named symbol) { if (symbol instanceof ParametricFunctionInstance pfi) { - // e.g., <[A]> + // e.g., #$classErroneous<[A]> return new SplitFieldName(pfi.getArgs().head().sort().toString(), - pfi.getBase().name().toString()); + pfi.getBase().name().toString().substring(1)); } var name = symbol.name().toString(); From 20927559065abb44de2561ce1b8ab550f1abe182 Mon Sep 17 00:00:00 2001 From: Drodt Date: Sun, 29 Mar 2026 21:29:48 +0200 Subject: [PATCH 28/37] Fix more .key and proof files --- ...iomAndInvariantProofReferencesAnalyst.java | 6 +- .../testcase/TestConditionalVariables.java | 10 +- .../oracle/AliasTest_main_immediately.xml | 14 +- .../aliasTest/oracle/AliasTest_main_never.xml | 10 +- .../test/AllNodeTypesTest.proof | 4 +- ...AllNodeTypesTest_VerificationProfile.proof | 2 +- ...ationProfile_NoOneStepSimplification.proof | 2 +- .../BlockContractModifiableEverything.xml | 12 +- ...ContractModifiableLocationNotRequested.xml | 10 +- ...ockContractModifiableRequestedLocation.xml | 12 +- .../oracle/BlockContractParamRemaned.xml | 12 +- .../BlockContractPreconditionNotVerified.xml | 10 +- ...conditionNotVerified_symbolicExecution.xml | 8 +- .../oracle/BlockContractThisTest.xml | 10 +- .../oracle/BlockContractVarRenamedLater.xml | 10 +- .../oracle/BlockContractWithException.xml | 14 +- ...ontractWithException_symbolicExecution.xml | 8 +- .../test/BlockContractWithException.proof | 4 +- ...tWithExceptionPostconditionNotVerified.xml | 14 +- ...conditionNotVerified_symbolicExecution.xml | 8 +- ...ithExceptionPostconditionNotVerified.proof | 4 +- .../oracle/BlockContractWithReturn.xml | 10 +- ...ckContractWithReturn_symbolicExecution.xml | 8 +- ...ractWithReturnPostconditionNotVerified.xml | 12 +- ...conditionNotVerified_symbolicExecution.xml | 8 +- .../conditionalVariables/oracle/Number.xml | 20 +- .../oracle/ArrayIndexReadAccess.xml | 28 +- .../testArrayIndexWriteAccess_initial0.xml | 2 +- .../testExistsQuantifierTest_current0.xml | 6 +- .../testExistsQuantifierTest_current1.xml | 4 +- .../testExistsQuantifierTest_initial0.xml | 6 +- .../testExistsQuantifierTest_initial1.xml | 4 +- .../oracle/IsInstanceTest.xml | 58 +-- .../oracle/MultiArrayIndexReadWriteAccess.xml | 34 +- .../oracle/testMyInteger_current0.xml | 2 +- .../oracle/testMyInteger_current1.xml | 2 +- .../oracle/testMyInteger_initial0.xml | 2 +- .../oracle/testMyInteger_initial1.xml | 2 +- .../oracle/ObjectArrayIndexReadAccess.xml | 28 +- .../oracle/ObjectConditionTest.xml | 200 ++++----- .../testSimpleLinkedArrays_initial0.xml | 2 +- .../testSimpleLinkedArrays_initial1.xml | 2 +- .../testSimpleLinkedArrays_initial2.xml | 2 +- .../testSimpleLinkedArrays_initial3.xml | 2 +- .../testSimpleLinkedArrays_initial4.xml | 2 +- ...mpleLinkedOjbectsPreCondition_initial0.xml | 2 +- ...mpleLinkedOjbectsPreCondition_initial1.xml | 2 +- ...mpleLinkedOjbectsPreCondition_initial2.xml | 2 +- ...mpleLinkedOjbectsPreCondition_initial3.xml | 2 +- .../testSimpleLinkedOjbects_initial0.xml | 2 +- .../testSimpleLinkedOjbects_initial1.xml | 2 +- .../testSimpleLinkedOjbects_initial2.xml | 2 +- .../testSimpleLinkedOjbects_initial3.xml | 2 +- ...LinkedOjbectsInstanceVariable_initial0.xml | 2 +- ...LinkedOjbectsInstanceVariable_initial1.xml | 2 +- ...LinkedOjbectsInstanceVariable_initial2.xml | 2 +- ...LinkedOjbectsInstanceVariable_initial3.xml | 2 +- .../oracle/StaticMember.xml | 46 +- ...anceCreationTest_staticMember_current0.xml | 6 +- ...anceCreationTest_staticMember_current1.xml | 6 +- ...anceCreationTest_staticMember_initial0.xml | 4 +- ...anceCreationTest_staticMember_initial1.xml | 4 +- .../oracle/StaticMember.xml | 14 +- .../testVariableArrayIndex_current0.xml | 4 +- .../testVariableArrayIndex_initial0.xml | 4 +- .../testWithOperationContracts_initial0.xml | 2 +- .../testWithOperationContracts_initial1.xml | 2 +- .../oracle/E_Loop.xml | 270 ++++++------ .../oracle/MethodContract.xml | 162 +++---- .../ClassCastAndNullpointerExceptions_2.xml | 8 +- .../ClassCastAndNullpointerExceptions_3.xml | 48 +-- .../ClassCastAndNullpointerExceptions_4.xml | 68 +-- .../ClassCastAndNullpointerExceptions_2.xml | 50 +-- .../ClassCastAndNullpointerExceptions_3.xml | 62 +-- .../ClassCastAndNullpointerExceptions_4.xml | 66 +-- .../ClassCastAndNullpointerExceptions_2.xml | 8 +- .../ClassCastAndNullpointerExceptions_3.xml | 34 +- .../ClassCastAndNullpointerExceptions_4.xml | 50 +-- .../ClassCastAndNullpointerExceptions_5.xml | 62 +-- .../ClassCastAndNullpointerExceptions_6.xml | 66 +-- .../ClassCastAndNullpointerExceptions_7.xml | 66 +-- .../oracle/ExceptionalMethodReturnTest.xml | 12 +- .../oracle/Loop.xml | 46 +- .../oracle/Number.xml | 24 +- .../oracle/GlobalVariablesOnSatisfiable_3.xml | 8 +- .../oracle/GlobalVariablesOnSatisfiable_4.xml | 16 +- .../oracle/GlobalVariablesOnSatisfiable_5.xml | 20 +- .../oracle/GlobalVariablesOnSatisfiable_6.xml | 32 +- .../oracle/GlobalVariablesOnSatisfiable_7.xml | 36 +- .../oracle/MethodsOnSatisfiable_3.xml | 8 +- .../oracle/MethodsOnSatisfiable_4.xml | 16 +- .../oracle/MethodsOnSatisfiable_5.xml | 20 +- .../oracle/MethodsOnSatisfiable_6.xml | 32 +- .../oracle/MethodsOnSatisfiable_7.xml | 36 +- .../oracle/MethodCallReturnTests.xml | 10 +- .../oracle/QueryWithFields_hiding_off.xml | 26 +- .../QueryWithFields_hiding_side_proof.xml | 12 +- .../oracle/ImmutableList.xml | 18 +- .../oracle/BlockContractMagic42.xml | 8 +- .../oracle/MagicProofNoOSS.xml | 44 +- .../test/MagicProofNoOSS.proof | 4 +- .../oracle/ArrayUtil.xml | 10 +- .../test/Calendar.proof | 4 +- .../oracle/ArrayAverage.xml | 32 +- .../oracle/ArraySumFor.xml | 18 +- .../oracle/ArraySumForEach.xml | 14 +- .../oracle/ArraySumWhile.xml | 18 +- .../oracle/ArraySumWhileInitiallyInvalid.xml | 18 +- .../oracle/ArraySumWhileWithContinue.xml | 22 +- .../oracle/ArraySumWhileWithException.xml | 30 +- .../oracle/LoopInvArrayExample.xml | 18 +- ...ntractStatementsInImpliciteConstructor.xml | 14 +- .../oracle/VariableMethodContractTest.xml | 6 +- .../oracle/VariablesArrayTest.xml | 2 +- .../oracle/ArrayAssignmentTest.xml | 18 +- .../oracle/ArrayAssignmentTest_Sequent.xml | 8 +- .../oracle/VariablesConditionalCycle.xml | 4 +- .../oracle/ConditionalValuesTest.xml | 2 +- .../oracle/ConditionalValuesTest_next.xml | 2 +- .../oracle/VariablesInstanceVariableTest.xml | 26 +- .../oracle/NonSimpleArrayAssignmentTest.xml | 80 ++-- .../NonSimpleArrayAssignmentTest_Sequent.xml | 96 ++--- .../NonSimpleArrayCreationTest_Sequent.xml | 2 +- .../oracle/UpdateVariablesTest.xml | 14 +- .../oracle/VariableArrayIndex.xml | 96 ++--- .../oracle/EnoughInfoReturn.xml | 282 ++++++------- .../oracle/VerifyNumberNormal.xml | 20 +- .../ArrayIndexAsVariableFieldTest.proof | 8 +- .../testcases/binarysearch/attempt.proof | 10 +- .../uka/ilkd/key/proof/rules/wdHeapRules.key | 2 +- .../de/uka/ilkd/key/pp/SelectPrinter.java | 2 +- .../key/java/JavaRedux/java/lang/String.java | 12 +- .../de/uka/ilkd/key/nparser/taclets.old.txt | 108 ++--- ...normal_behavior operation contract.0.proof | 8 +- ...java.lang.Object___inv_ for Account).proof | 8 +- ...ration contract (id_ 6 - Main__main).proof | 36 +- ....JML normal_behavior loop contract.0.proof | 394 +++++++++--------- ...normal_behavior operation contract.0.proof | 128 +++--- ...normal_behavior operation contract.0.proof | 136 +++--- ...normal_behavior operation contract.1.proof | 94 ++--- .../heap/quicksort/sort.key.proof.ignore | 4 +- .../heap/verifyThis15_3_DLL/remove.proof | 66 +-- .../heap/verifyThis15_3_DLL/unremove.proof | 84 ++-- .../vstte10_04_Queens/Queens_search.proof | 50 +-- ...ract (id 2 - TwoWaySwap__twoWaySort).proof | 4 +- ...ration contract (id 3 - Tree__build).proof | 82 ++-- ...ration contract (id 4 - Tree__build).proof | 4 +- .../08ProofObligations/Sect8.1.4.key.proof | 24 +- .../java_dl/innerClasses/inner.key | 2 +- .../key/gui/help/functionExplanations.xml | 2 +- ...normal_behavior operation contract.0.proof | 2 +- 151 files changed, 2160 insertions(+), 2160 deletions(-) diff --git a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestClassAxiomAndInvariantProofReferencesAnalyst.java b/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestClassAxiomAndInvariantProofReferencesAnalyst.java index 198f09c01d6..c072c1fa539 100644 --- a/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestClassAxiomAndInvariantProofReferencesAnalyst.java +++ b/key.core.proof_references/src/test/java/de/uka/ilkd/key/proof_references/testcase/analyst/TestClassAxiomAndInvariantProofReferencesAnalyst.java @@ -27,7 +27,7 @@ public void testInvariantInOperationContractOfArgument() throws Exception { new ClassAxiomAndInvariantProofReferencesAnalyst(), element -> IProofReference.USE_INVARIANT.equals(element.getKind()), new ExpectedProofReferences(IProofReference.USE_INVARIANT, - "and(geq(int::select(heap,self,Child::$x),Z(0(#))),leq(int::select(heap,self,Child::$x),Z(0(1(#)))))<>")); + "and(geq(select<[int]>(heap,self,Child::$x),Z(0(#))),leq(select<[int]>(heap,self,Child::$x),Z(0(1(#)))))<>")); } /** @@ -69,7 +69,7 @@ false, new ClassAxiomAndInvariantProofReferencesAnalyst(), new ExpectedProofReferences(IProofReference.USE_AXIOM, "equiv(java.lang.Object::$inv(heap,self),true)"), new ExpectedProofReferences(IProofReference.USE_AXIOM, - "equals(test.ModelFieldTest::$f(heap,self),mul(Z(2(#)),int::select(heap,self,test.ModelFieldTest::$x)))")); + "equals(test.ModelFieldTest::$f(heap,self),mul(Z(2(#)),select<[int]>(heap,self,test.ModelFieldTest::$x)))")); } /** @@ -83,7 +83,7 @@ public void testModelFieldTest_f() throws Exception { new ExpectedProofReferences(IProofReference.USE_AXIOM, "equiv(java.lang.Object::$inv(heap,self),true)"), new ExpectedProofReferences(IProofReference.USE_AXIOM, - "equals(test.ModelFieldTest::$f(heap,self),mul(Z(2(#)),int::select(heap,self,test.ModelFieldTest::$x)))")); + "equals(test.ModelFieldTest::$f(heap,self),mul(Z(2(#)),select<[int]>(heap,self,test.ModelFieldTest::$x)))")); } /** diff --git a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestConditionalVariables.java b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestConditionalVariables.java index 53033d41cb1..1aaa2e1428e 100644 --- a/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestConditionalVariables.java +++ b/key.core.symbolic_execution/src/test/java/de/uka/ilkd/key/symbolic_execution/testcase/TestConditionalVariables.java @@ -101,7 +101,7 @@ protected IExecutionVariable[] createExpectedEqualCaseVariables() { ExecutionNodeReader.KeYlessVariable selfContentVar = new ExecutionNodeReader.KeYlessVariable(selfValue, false, null, "content"); selfContentVar.addValue(new ExecutionNodeReader.KeYlessValue(selfContentVar, "int", - "int::select(heap,n,Number::$content)", "content {true}", false, false, "true")); + "select<[int]>(heap,n,Number::$content)", "content {true}", false, false, "true")); selfValue.addChildVariable(selfContentVar); // n result[1] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "n"); @@ -111,7 +111,7 @@ protected IExecutionVariable[] createExpectedEqualCaseVariables() { ExecutionNodeReader.KeYlessVariable nContentVar = new ExecutionNodeReader.KeYlessVariable(nValue, false, null, "content"); nContentVar.addValue(new ExecutionNodeReader.KeYlessValue(nContentVar, "int", - "int::select(heap,n,Number::$content)", "content {true}", false, false, "true")); + "select<[int]>(heap,n,Number::$content)", "content {true}", false, false, "true")); nValue.addChildVariable(nContentVar); // exc result[2] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "exc"); @@ -135,7 +135,7 @@ protected IExecutionVariable[] createExpectedNotEqualCaseVariables() { ExecutionNodeReader.KeYlessVariable selfContentVar = new ExecutionNodeReader.KeYlessVariable(selfValue, false, null, "content"); selfContentVar.addValue(new ExecutionNodeReader.KeYlessValue(selfContentVar, "int", - "int::select(heap,self,Number::$content)", "content {true}", false, false, "true")); + "select<[int]>(heap,self,Number::$content)", "content {true}", false, false, "true")); selfValue.addChildVariable(selfContentVar); // n result[1] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "n"); @@ -145,7 +145,7 @@ protected IExecutionVariable[] createExpectedNotEqualCaseVariables() { ExecutionNodeReader.KeYlessVariable nContentVar = new ExecutionNodeReader.KeYlessVariable(nValue, false, null, "content"); nContentVar.addValue(new ExecutionNodeReader.KeYlessValue(nContentVar, "int", - "int::select(heap,n,Number::$content)", "content {true}", false, false, "true")); + "select<[int]>(heap,n,Number::$content)", "content {true}", false, false, "true")); nValue.addChildVariable(nContentVar); // exc result[2] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "exc"); @@ -169,7 +169,7 @@ protected IExecutionVariable[] createExpectedNullCaseVariables() { ExecutionNodeReader.KeYlessVariable selfContentVar = new ExecutionNodeReader.KeYlessVariable(selfValue, false, null, "content"); selfContentVar.addValue(new ExecutionNodeReader.KeYlessValue(selfContentVar, "int", - "int::select(heap,self,Number::$content)", "content {true}", false, false, "true")); + "select<[int]>(heap,self,Number::$content)", "content {true}", false, false, "true")); selfValue.addChildVariable(selfContentVar); // n result[1] = new ExecutionNodeReader.KeYlessVariable(null, false, null, "n"); diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_immediately.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_immediately.xml index 701885777c6..c0586c5d526 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_immediately.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_immediately.xml @@ -17,7 +17,7 @@ - + @@ -25,7 +25,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -151,7 +151,7 @@ - + @@ -159,7 +159,7 @@ - + @@ -269,7 +269,7 @@ - + @@ -277,7 +277,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_never.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_never.xml index c7e78952dd8..fa5fd2fdc29 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_never.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/aliasTest/oracle/AliasTest_main_never.xml @@ -17,7 +17,7 @@ - + @@ -25,7 +25,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -138,7 +138,7 @@ as result of self.main(a, b)>" isReturnValueComputed="true" methodReturnCondi - + @@ -146,7 +146,7 @@ as result of self.main(a, b)>" isReturnValueComputed="true" methodReturnCondi - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest.proof index 0946bfedb16..6f5b29f7f60 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest.proof +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest.proof @@ -241,7 +241,7 @@ (rule "tryEmpty" (formula "9") (term "1")) (rule "emptyModality" (formula "9") (term "1")) (builtin "One Step Simplification" (formula "9")) - (opengoal " wellFormed(heap)<>, ( boolean::select(heap, obj, java.lang.Object::) = TRUE)<>, measuredByEmpty<>, wellFormed(anon_heap_doubleValue<>), anon(store(heap, obj, AllNodeTypesTest::$value, Z(1(#))), allLocs, anon_heap_doubleValue<>) = heapAfter_doubleValue, (exc_1 = null)< (implicit)\",\"[ensures @ file AllNodeTypesTest.java @ line 28, ensures (implicit)]\")>>, (result_0 = Z(2(#)))<> ==> (obj = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, SETAccumulate(store(heapAfter_doubleValue, obj<>, AllNodeTypesTest::$value, Z(2(#))), null, obj<>)<>") + (opengoal " wellFormed(heap)<>, ( select<[boolean]>(heap, obj, java.lang.Object::#$created) = TRUE)<>, measuredByEmpty<>, wellFormed(anon_heap_doubleValue<>), anon(store(heap, obj, AllNodeTypesTest::$value, Z(1(#))), allLocs, anon_heap_doubleValue<>) = heapAfter_doubleValue, (exc_1 = null)< (implicit)\",\"[ensures @ file AllNodeTypesTest.java @ line 28, ensures (implicit)]\")>>, (result_0 = Z(2(#)))<> ==> (obj = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, SETAccumulate(store(heapAfter_doubleValue, obj<>, AllNodeTypesTest::$value, Z(2(#))), null, obj<>)<>") ) ) (branch "if b_2 false" @@ -358,7 +358,7 @@ (rule "emptyModality" (formula "14") (term "1")) (builtin "One Step Simplification" (formula "14") (ifInst "" (formula "13"))) (rule "false_right" (formula "14")) - (opengoal " (obj = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, measuredByEmpty<>, wellFormed(anon_heap_NullPointerException<>), ( anon(heap, union(singleton(self, java.lang.Throwable::$cause), singleton(self, java.lang.Throwable::$message)), anon_heap_NullPointerException<>) = heapAfter_NullPointerException)<>, ( boolean::select(anon_heap_NullPointerException<>, self, java.lang.Object::) = TRUE)< (implicit)\",\"[ensures @ file NullPointerException.java @ line 10, ensures (implicit)]\")>>, ( java.lang.NullPointerException::exactInstance(self) = TRUE)< (implicit)\",\"[ensures @ file NullPointerException.java @ line 10, ensures (implicit)]\")>>, ( java.lang.String::select(anon_heap_NullPointerException<>, self, java.lang.Throwable::$message) = null)<>, ( java.lang.Throwable::select(anon_heap_NullPointerException<>, self, java.lang.Throwable::$cause) = null)<>, java.lang.Object::$inv(heapAfter_NullPointerException, self), (exc_0 = null)<> ==> ( boolean::select(heap, self, java.lang.Object::) = TRUE)< (implicit)\",\"[ensures @ file NullPointerException.java @ line 10, ensures (implicit)]\")>>, (self = null)< (implicit)\",\"[ensures @ file NullPointerException.java @ line 10, ensures (implicit)]\")>>") + (opengoal " (obj = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, measuredByEmpty<>, wellFormed(anon_heap_NullPointerException<>), ( anon(heap, union(singleton(self, java.lang.Throwable::$cause), singleton(self, java.lang.Throwable::$message)), anon_heap_NullPointerException<>) = heapAfter_NullPointerException)<>, ( select<[boolean]>(anon_heap_NullPointerException<>, self, java.lang.Object::#$created) = TRUE)< (implicit)\",\"[ensures @ file NullPointerException.java @ line 10, ensures (implicit)]\")>>, ( java.lang.NullPointerException::exactInstance(self) = TRUE)< (implicit)\",\"[ensures @ file NullPointerException.java @ line 10, ensures (implicit)]\")>>, ( java.lang.String::select(anon_heap_NullPointerException<>, self, java.lang.Throwable::$message) = null)<>, ( java.lang.Throwable::select(anon_heap_NullPointerException<>, self, java.lang.Throwable::$cause) = null)<>, java.lang.Object::$inv(heapAfter_NullPointerException, self), (exc_0 = null)<> ==> ( select<[boolean]>(heap, self, java.lang.Object::#$created) = TRUE)< (implicit)\",\"[ensures @ file NullPointerException.java @ line 10, ensures (implicit)]\")>>, (self = null)< (implicit)\",\"[ensures @ file NullPointerException.java @ line 10, ensures (implicit)]\")>>") ) (branch "if n instanceof java.lang.Throwable false" (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "14"))) diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile.proof index 154868d7e2c..6354511bb0c 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile.proof +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile.proof @@ -424,7 +424,7 @@ (rule "emptyModality" (formula "7") (term "1")) (builtin "One Step Simplification" (formula "7") (ifInst "" (formula "5"))) (rule "false_right" (formula "7")) - (opengoal " ( java.lang.NullPointerException::exactInstance(n_3) = TRUE)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, (obj = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, measuredByEmpty<> ==> (n_3 = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, ( boolean::select(heap, n_3, java.lang.Object::) = TRUE)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>") + (opengoal " ( java.lang.NullPointerException::exactInstance(n_3) = TRUE)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, (obj = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, measuredByEmpty<> ==> (n_3 = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, ( select<[boolean]>(heap, n_3, java.lang.Object::#$created) = TRUE)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>") ) (branch "if n instanceof java.lang.Throwable false" (builtin "One Step Simplification" (formula "1") (ifInst "" (formula "6"))) diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.proof index db952494345..7f1887f8a11 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.proof +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/allNodeTypesTest/test/AllNodeTypesTest_VerificationProfile_NoOneStepSimplification.proof @@ -753,7 +753,7 @@ (rule "applyOnRigidFormula" (formula "7")) (rule "applyOnPV" (formula "7") (term "0")) (rule "simplifyUpdate1" (formula "7") (term "1")) - (opengoal " ( java.lang.NullPointerException::exactInstance(n_3) = TRUE)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, (obj = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, measuredByEmpty<> ==> ( boolean::select(heap, n_3, java.lang.Object::) = TRUE)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, (n_3 = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>") + (opengoal " ( java.lang.NullPointerException::exactInstance(n_3) = TRUE)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, (obj = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, measuredByEmpty<> ==> ( select<[boolean]>(heap, n_3, java.lang.Object::#$created) = TRUE)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>, (n_3 = null)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>") ) (branch "if n instanceof java.lang.Throwable false" (rule "instanceof_static_type" (formula "1") (term "2,0,1")) diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/oracle/BlockContractModifiableEverything.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/oracle/BlockContractModifiableEverything.xml index a9489d5c9e3..d1f54e26c2d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/oracle/BlockContractModifiableEverything.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableEverything/oracle/BlockContractModifiableEverything.xml @@ -21,17 +21,17 @@ mod allLocs \setMinus freshLocs(heap)termination diamond" pathCondition="true" p - + - + - + - - + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/oracle/BlockContractModifiableLocationNotRequested.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/oracle/BlockContractModifiableLocationNotRequested.xml index c8172e0f445..8c858c53975 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/oracle/BlockContractModifiableLocationNotRequested.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableLocationNotRequested/oracle/BlockContractModifiableLocationNotRequested.xml @@ -19,17 +19,17 @@ mod {(null, - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/oracle/BlockContractModifiableRequestedLocation.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/oracle/BlockContractModifiableRequestedLocation.xml index 003fffcc5cd..8aa5cbd14b7 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/oracle/BlockContractModifiableRequestedLocation.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractModifiableRequestedLocation/oracle/BlockContractModifiableRequestedLocation.xml @@ -18,17 +18,17 @@ mod {(null, BlockContractModifiableRequestedLocation::$x)}termination diamond" p - + - + - + - - + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/oracle/BlockContractParamRemaned.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/oracle/BlockContractParamRemaned.xml index 2e5e6cfefca..da0132d901c 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/oracle/BlockContractParamRemaned.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractParamRemaned/oracle/BlockContractParamRemaned.xml @@ -17,25 +17,25 @@ post exc_0 = null & x_3 = -2 mod {}termination diamond" pathCondition="true" pathConditionChanged="false" preconditionComplied="false"> - + - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified.xml index c3e8664be94..751d7e6a50d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified.xml @@ -13,22 +13,22 @@ post returned = TRUE mod {}<<impl>>termination diamond" pathCondition="true" pathConditionChanged="false" preconditionComplied="false"> - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified_symbolicExecution.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified_symbolicExecution.xml index 87a993fe403..d556d2e69cf 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified_symbolicExecution.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractPreconditionNotVerified/oracle/BlockContractPreconditionNotVerified_symbolicExecution.xml @@ -15,10 +15,10 @@ mod {}<<impl>>termination diamond" pathCondition="true" pathConditio - - - - + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/oracle/BlockContractThisTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/oracle/BlockContractThisTest.xml index 20e2128807b..05e0f8b4be3 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/oracle/BlockContractThisTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractThisTest/oracle/BlockContractThisTest.xml @@ -18,17 +18,17 @@ mod {(self, BlockContractThisTest::$x)}termination diamond" pathCondition="true" - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/oracle/BlockContractVarRenamedLater.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/oracle/BlockContractVarRenamedLater.xml index a614087b4e5..3f1e30be08e 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/oracle/BlockContractVarRenamedLater.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractVarRenamedLater/oracle/BlockContractVarRenamedLater.xml @@ -14,17 +14,17 @@ pre measuredByEmpty & x_2 = 2 post exc_0 = null & x_2 = -2 mod {}termination diamond" pathCondition="true" pathConditionChanged="false" preconditionComplied="false"> - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException.xml index 7ae2455ff46..79225d7174b 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException.xml @@ -14,20 +14,20 @@ post !exc_0 = null mod {}termination diamond" pathCondition="true" pathConditionChanged="false" preconditionComplied="false"> - + - + - + - + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException_symbolicExecution.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException_symbolicExecution.xml index 2373673b330..6b978d8bb82 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException_symbolicExecution.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/oracle/BlockContractWithException_symbolicExecution.xml @@ -20,10 +20,10 @@ mod {}termination diamond" pathCondition="true" pathConditionChanged="false" pre - - - - + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/test/BlockContractWithException.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/test/BlockContractWithException.proof index 3364586d6e3..a4a9045cad8 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/test/BlockContractWithException.proof +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithException/test/BlockContractWithException.proof @@ -488,7 +488,7 @@ (rule "replace_known_right" (formula "8") (term "0,0") (ifseqformula "7")) (builtin "One Step Simplification" (formula "8")) (rule "cut_direct" (formula "6") (term "0")) - (branch "CUT: boolean::select(heap, exc_0, java.lang.Object::#$created) = TRUE TRUE" + (branch "CUT: select<[boolean]>(heap, exc_0, java.lang.Object::#$created) = TRUE TRUE" (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "cut_direct" (formula "8") (term "0")) @@ -508,7 +508,7 @@ (rule "closeTypeSwitched" (formula "8") (ifseqformula "4")) ) ) - (branch "CUT: boolean::select(heap, exc_0, java.lang.Object::#$created) = TRUE FALSE" + (branch "CUT: select<[boolean]>(heap, exc_0, java.lang.Object::#$created) = TRUE FALSE" (builtin "One Step Simplification" (formula "6")) (rule "cut_direct" (formula "9") (term "0")) (branch "CUT: java.lang.RuntimeException::instance(exc_0) = TRUE TRUE" diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified.xml index 5732804c004..4f84ad5928d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified.xml @@ -18,24 +18,24 @@ post !exc_0 = null mod {}termination diamond" pathCondition="true" pathConditionChanged="false" preconditionComplied="false"> - + - + +)>>" pathCondition="imp(equals(select<[boolean]>(anon_heap,exc_0,java.lang.Object::<created>),java_lang_Object_created__0<<selectSK>>),and(and(and(not(equals(exc_0,null)),imp(not(equals(exc_0,null)),equals(java.lang.NullPointerException::instance(exc_0),TRUE))),wellFormed(anon_heap<<anonHeapFunction>>)),or(or(equals(java_lang_Object_created__0<<selectSK>>,TRUE),equals(exc_0,null)),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))))" pathConditionChanged="false" methodReturnCondition="imp(equals(select<[boolean]>(anon_heap,exc_0,java.lang.Object::<created>),java_lang_Object_created__0<<selectSK>>),and(and(and(not(equals(exc_0,null)),imp(not(equals(exc_0,null)),equals(java.lang.NullPointerException::instance(exc_0),TRUE))),wellFormed(anon_heap<<anonHeapFunction>>)),or(or(equals(java_lang_Object_created__0<<selectSK>>,TRUE),equals(exc_0,null)),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))))"> +)>>" pathCondition="imp(equals(select<[boolean]>(anon_heap,exc_0,java.lang.Object::<created>),java_lang_Object_created__0<<selectSK>>),and(and(and(not(equals(exc_0,null)),imp(not(equals(exc_0,null)),equals(java.lang.NullPointerException::instance(exc_0),TRUE))),wellFormed(anon_heap<<anonHeapFunction>>)),or(or(equals(java_lang_Object_created__0<<selectSK>>,TRUE),equals(exc_0,null)),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))))" pathConditionChanged="false" methodReturnCondition="imp(equals(select<[boolean]>(anon_heap,exc_0,java.lang.Object::<created>),java_lang_Object_created__0<<selectSK>>),and(and(and(not(equals(exc_0,null)),imp(not(equals(exc_0,null)),equals(java.lang.NullPointerException::instance(exc_0),TRUE))),wellFormed(anon_heap<<anonHeapFunction>>)),or(or(equals(java_lang_Object_created__0<<selectSK>>,TRUE),equals(exc_0,null)),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))))"> - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified_symbolicExecution.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified_symbolicExecution.xml index 1e7d865cf48..b25491d7ec6 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified_symbolicExecution.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/oracle/BlockContractWithExceptionPostconditionNotVerified_symbolicExecution.xml @@ -24,14 +24,14 @@ mod {}termination diamond" pathCondition="true" pathConditionChanged="false" pre - + +)>>" pathCondition="update-application(parallel-upd(elem-update(exc)(null),elem-update(x_3)(x)),update-application(elem-update(heap_Before_BLOCK)(heap),update-application(elem-update(heap)(anon(heap,empty,anonOut_heap<<anonHeapFunction>>)),and(and(and(and(not(equals(exc_0,null)),imp(not(equals(exc_0,null)),equals(java.lang.NullPointerException::instance(exc_0),TRUE))),wellFormed(anonOut_heap<<anonHeapFunction>>)),and(inInt(result_magic),or(equals(exc_0,null),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))<<SC>>)),or(equals(exc_0,null),not(equals(exc_0,null)))))))" pathConditionChanged="false" methodReturnCondition="update-application(parallel-upd(elem-update(exc)(null),elem-update(x_3)(x)),update-application(elem-update(heap_Before_BLOCK)(heap),update-application(elem-update(heap)(anon(heap,empty,anonOut_heap<<anonHeapFunction>>)),and(and(and(and(not(equals(exc_0,null)),imp(not(equals(exc_0,null)),equals(java.lang.NullPointerException::instance(exc_0),TRUE))),wellFormed(anonOut_heap<<anonHeapFunction>>)),and(inInt(result_magic),or(equals(exc_0,null),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))<<SC>>)),or(equals(exc_0,null),not(equals(exc_0,null)))))))"> - +)>>" pathCondition="update-application(parallel-upd(elem-update(exc)(null),elem-update(x_3)(x)),update-application(elem-update(heap_Before_BLOCK)(heap),update-application(elem-update(heap)(anon(heap,empty,anonOut_heap<<anonHeapFunction>>)),and(and(and(and(not(equals(exc_0,null)),imp(not(equals(exc_0,null)),equals(java.lang.NullPointerException::instance(exc_0),TRUE))),wellFormed(anonOut_heap<<anonHeapFunction>>)),and(inInt(result_magic),or(equals(exc_0,null),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))<<SC>>)),or(equals(exc_0,null),not(equals(exc_0,null)))))))" pathConditionChanged="false" methodReturnCondition="update-application(parallel-upd(elem-update(exc)(null),elem-update(x_3)(x)),update-application(elem-update(heap_Before_BLOCK)(heap),update-application(elem-update(heap)(anon(heap,empty,anonOut_heap<<anonHeapFunction>>)),and(and(and(and(not(equals(exc_0,null)),imp(not(equals(exc_0,null)),equals(java.lang.NullPointerException::instance(exc_0),TRUE))),wellFormed(anonOut_heap<<anonHeapFunction>>)),and(inInt(result_magic),or(equals(exc_0,null),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))<<SC>>)),or(equals(exc_0,null),not(equals(exc_0,null)))))))"> + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.proof index 6122dcf55a2..6afe07f0bf4 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.proof +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithExceptionPostconditionNotVerified/test/BlockContractWithExceptionPostconditionNotVerified.proof @@ -310,7 +310,7 @@ (rule "replace_known_right" (formula "8") (term "0,0") (ifseqformula "7")) (builtin "One Step Simplification" (formula "8")) (rule "cut_direct" (formula "6") (term "0")) - (branch "CUT: boolean::select(heap, exc_0, java.lang.Object::#$created) = TRUE TRUE" + (branch "CUT: select<[boolean]>(heap, exc_0, java.lang.Object::#$created) = TRUE TRUE" (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "cut_direct" (formula "8") (term "0")) @@ -330,7 +330,7 @@ (rule "closeTypeSwitched" (formula "8") (ifseqformula "4")) ) ) - (branch "CUT: boolean::select(heap, exc_0, java.lang.Object::#$created) = TRUE FALSE" + (branch "CUT: select<[boolean]>(heap, exc_0, java.lang.Object::#$created) = TRUE FALSE" (builtin "One Step Simplification" (formula "6")) (rule "cut_direct" (formula "9") (term "0")) (branch "CUT: java.lang.RuntimeException::instance(exc_0) = TRUE TRUE" diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn.xml index ef2bf45b4bf..42d028169e8 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn.xml @@ -13,22 +13,22 @@ post returned = TRUE mod {}<<impl>>termination diamond" pathCondition="true" pathConditionChanged="false" preconditionComplied="false"> - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn_symbolicExecution.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn_symbolicExecution.xml index 45df68f2b7b..2cedc29a719 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn_symbolicExecution.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturn/oracle/BlockContractWithReturn_symbolicExecution.xml @@ -21,10 +21,10 @@ mod {}<<impl>>termination diamond" pathCondition="true" pathConditio - - - - + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified.xml index 455cf3ab5dc..01f92bd2bb1 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified.xml @@ -15,26 +15,26 @@ post returned = TRUE mod {}<<impl>>termination diamond" pathCondition="true" pathConditionChanged="false" preconditionComplied="false"> - + - + +)>" isReturnValueComputed="true" methodReturnCondition="and(and(and(and(equals(returned,TRUE),equals(exc_0,null)),imp(equals(returned,TRUE),equals(result_0,Z(neglit(2(#)))))),or(equals(exc_0,null),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))),or(not(equals(returned,TRUE)),equals(exc_0,null)))"> - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified_symbolicExecution.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified_symbolicExecution.xml index 79ea1137052..2ebaaec9392 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified_symbolicExecution.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/blockContractWithReturnPostconditionNotVerified/oracle/BlockContractWithReturnPostconditionNotVerified_symbolicExecution.xml @@ -23,12 +23,12 @@ mod {}<<impl>>termination diamond" pathCondition="true" pathConditio - + - - +)>" pathCondition="update-application(parallel-upd(elem-update(exc)(null),elem-update(x_3)(x)),update-application(elem-update(heap_Before_BLOCK)(heap),and(and(and(and(equals(returned#0,TRUE),equals(exc_0,null)),imp(equals(returned#0,TRUE),equals(result_magic,Z(neglit(2(#)))))),and(inInt(result_magic),or(equals(exc_0,null),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))<<SC>>)),or(or(and(equals(returned#0,FALSE),equals(exc_0,null)),and(not(equals(returned#0,FALSE)),equals(exc_0,null))),and(not(equals(exc_0,null)),equals(returned#0,FALSE))))))" pathConditionChanged="false" isReturnValueComputed="false" methodReturnCondition="update-application(parallel-upd(elem-update(exc)(null),elem-update(x_3)(x)),update-application(elem-update(heap_Before_BLOCK)(heap),and(and(and(and(equals(returned#0,TRUE),equals(exc_0,null)),imp(equals(returned#0,TRUE),equals(result_magic,Z(neglit(2(#)))))),and(inInt(result_magic),or(equals(exc_0,null),equals(select<[boolean]>(heap,exc_0,java.lang.Object::<created>),TRUE))<<SC>>)),or(or(and(equals(returned#0,FALSE),equals(exc_0,null)),and(not(equals(returned#0,FALSE)),equals(exc_0,null))),and(not(equals(exc_0,null)),equals(returned#0,FALSE))))))"> + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/conditionalVariables/oracle/Number.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/conditionalVariables/oracle/Number.xml index c48eb375126..2e7702a6472 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/conditionalVariables/oracle/Number.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/conditionalVariables/oracle/Number.xml @@ -3,22 +3,22 @@ - - - - + + + + - + - - - - + + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/ArrayIndexReadAccess.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/ArrayIndexReadAccess.xml index b92dbde3cba..0624b9d15e8 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/ArrayIndexReadAccess.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexReadAccess/oracle/ArrayIndexReadAccess.xml @@ -6,26 +6,26 @@ - - - - + + + + - - - + + + - - - - + + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/testArrayIndexWriteAccess_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/testArrayIndexWriteAccess_initial0.xml index f740559d962..ecc555b881d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/testArrayIndexWriteAccess_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorArrayIndexWriteAccess/oracle/testArrayIndexWriteAccess_initial0.xml @@ -6,6 +6,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current0.xml index 001134d2b64..0906c51aed9 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current0.xml @@ -5,12 +5,12 @@ - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current1.xml index 6a27d25fc91..39a41cce320 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_current1.xml @@ -9,9 +9,9 @@ - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial0.xml index f98b4230efb..5a6bd034df8 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial0.xml @@ -5,12 +5,12 @@ - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial1.xml index f4fc0557cd2..94dc8bd043c 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorExistsQuantifierTest/oracle/testExistsQuantifierTest_initial1.xml @@ -9,9 +9,9 @@ - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/IsInstanceTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/IsInstanceTest.xml index 4366bfeaf1f..ba0b85b6ef1 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/IsInstanceTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorIntegerConditionTest/oracle/IsInstanceTest.xml @@ -2,44 +2,44 @@ - - - - - - - - - + + + + + + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - + @@ -49,13 +49,13 @@ - - - - + + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/MultiArrayIndexReadWriteAccess.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/MultiArrayIndexReadWriteAccess.xml index 8a83c2e1ce0..c2d7553bf48 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/MultiArrayIndexReadWriteAccess.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMultiArrayIndexReadWriteAccess/oracle/MultiArrayIndexReadWriteAccess.xml @@ -9,30 +9,30 @@ - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current0.xml index 33781eb844d..2bbc56d3e26 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current0.xml @@ -8,6 +8,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current1.xml index 3bb8d4142d1..33eae0eada2 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_current1.xml @@ -10,6 +10,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial0.xml index f7a2841e5b4..baf30b6f977 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial0.xml @@ -8,6 +8,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial1.xml index 4196f1e17c9..ad6d2d5677f 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorMyInteger/oracle/testMyInteger_initial1.xml @@ -10,6 +10,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/ObjectArrayIndexReadAccess.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/ObjectArrayIndexReadAccess.xml index 0cf29e43aa0..e7d7dadd918 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/ObjectArrayIndexReadAccess.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectArrayIndexReadAccess/oracle/ObjectArrayIndexReadAccess.xml @@ -7,26 +7,26 @@ - - - - + + + + - - - + + + - - - - + + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/ObjectConditionTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/ObjectConditionTest.xml index b804357dd6d..fb8eb4e1cf4 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/ObjectConditionTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorObjectConditionTest/oracle/ObjectConditionTest.xml @@ -2,59 +2,59 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - + + + + + + - - - + + + - - - - - + + + + + @@ -63,28 +63,28 @@ - - - - + + + + - - - - - + + + + + - - - + + + - - - - + + + + @@ -95,26 +95,26 @@ - - - - + + + + - - - - + + + + - - - + + + - - - + + + @@ -127,24 +127,24 @@ - - - - + + + + - - - + + + - - - + + + - - + + @@ -159,22 +159,22 @@ - - - - + + + + - - + + - - - + + + - + @@ -191,13 +191,13 @@ - - - - + + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial0.xml index 4b7175f7cb9..524df5a448d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial0.xml @@ -19,6 +19,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial1.xml index 125380a16c6..bf985a0cccf 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial1.xml @@ -16,7 +16,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial2.xml index ccbae88914e..cbdf5c083e2 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial2.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial2.xml @@ -20,7 +20,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial3.xml index 1e4ab34e762..3fa24f4bcce 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial3.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial3.xml @@ -9,7 +9,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial4.xml index 6d9d032aedf..9c47f2c3e41 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial4.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedArrays/oracle/testSimpleLinkedArrays_initial4.xml @@ -14,7 +14,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial0.xml index e7c6159f946..e0c9bf851ef 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial0.xml @@ -11,6 +11,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial1.xml index 23bb57e0f11..b2da182b246 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial1.xml @@ -12,7 +12,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial2.xml index 268db3a260f..409855a42d5 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial2.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial2.xml @@ -9,7 +9,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial3.xml index 5fe8ef91a17..2639e5790e1 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial3.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbectsPreCondition_initial3.xml @@ -10,7 +10,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial0.xml index e7c6159f946..e0c9bf851ef 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial0.xml @@ -11,6 +11,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial1.xml index 23bb57e0f11..b2da182b246 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial1.xml @@ -12,7 +12,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial2.xml index 268db3a260f..409855a42d5 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial2.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial2.xml @@ -9,7 +9,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial3.xml index 5fe8ef91a17..2639e5790e1 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial3.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbects/oracle/testSimpleLinkedOjbects_initial3.xml @@ -10,7 +10,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial0.xml index 9585e43456d..aa00bf9d1c0 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial0.xml @@ -11,6 +11,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial1.xml index f12f065d492..3686eed295f 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial1.xml @@ -12,7 +12,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial2.xml index 5ee37d21f5f..7f0a6cda064 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial2.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial2.xml @@ -9,7 +9,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial3.xml index f181bad1707..22a8936061e 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial3.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorSimpleLinkedOjbectsInstanceVariable/oracle/testSimpleLinkedOjbectsInstanceVariable_initial3.xml @@ -10,7 +10,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/StaticMember.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/StaticMember.xml index 834a8e812ea..5426a0c67d7 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/StaticMember.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/StaticMember.xml @@ -2,46 +2,46 @@ - - - - - - - + + + + + + + - + - - - + + + - + - - - - - - - + + + + + + + - - - + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current0.xml index 6210d7c870c..8673a3b0a10 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current0.xml @@ -8,13 +8,13 @@ - + - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current1.xml index 80a12f632b7..e767ff08acc 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_current1.xml @@ -4,13 +4,13 @@ - + - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial0.xml index 547e99af391..824fd0833ac 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial0.xml @@ -6,13 +6,13 @@ - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial1.xml index ef143f3649b..a6a1b520413 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorStaticMember/oracle/testInstanceCreationTest_staticMember_initial1.xml @@ -2,13 +2,13 @@ - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/StaticMember.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/StaticMember.xml index 5ce709f9c99..0dfe0364128 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/StaticMember.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/StaticMember.xml @@ -2,10 +2,10 @@ - - - - + + + + @@ -16,9 +16,9 @@ - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_current0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_current0.xml index 0ca14550dca..63882fb7fc5 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_current0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_current0.xml @@ -6,10 +6,10 @@ - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_initial0.xml index 87aed19e78f..8a719919300 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorVariableArrayIndex/oracle/testVariableArrayIndex_initial0.xml @@ -6,10 +6,10 @@ - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial0.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial0.xml index 0579f4233b5..3fa06a969f6 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial0.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial0.xml @@ -10,6 +10,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial1.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial1.xml index c654e8880ae..9031b6ebe17 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial1.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/configurationExtractorWithOperationContractsTest/oracle/testWithOperationContracts_initial1.xml @@ -12,6 +12,6 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsAfterUsedLoopInvariant/oracle/E_Loop.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsAfterUsedLoopInvariant/oracle/E_Loop.xml index 8be6ccca834..27ba842801f 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsAfterUsedLoopInvariant/oracle/E_Loop.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsAfterUsedLoopInvariant/oracle/E_Loop.xml @@ -6,7 +6,7 @@ - + @@ -15,20 +15,20 @@ - + - + - + - + @@ -39,16 +39,16 @@ - + - + - + @@ -65,16 +65,16 @@ variant: self.high - i + 1 mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" initiallyValid="false"> - + - + - + @@ -91,26 +91,26 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - + - + - + - + - + - - + + - + @@ -126,18 +126,18 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - + - + - + - + @@ -146,36 +146,36 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - - + + - - - + + + - + - + - - - + + + - + - - + + - - - + + + @@ -190,50 +190,50 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - - + + - + - + - - + + - - - + + + - + - + - - - + + + - + - - + + - - - + + + @@ -248,50 +248,50 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - - + + - + - + - - + + - - - + + + - + - + - - - + + + - + - - + + - - - + + + @@ -305,30 +305,30 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - - + + - - - + + + - + - + - - + + @@ -344,26 +344,26 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - + - + - + - + - + - - + + - + @@ -379,38 +379,38 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - + - + - - + + - + - - + + - - + + - - + + - - + + - - - + + + @@ -425,23 +425,23 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - + - + - - + + - - + + - + - - + + @@ -453,33 +453,33 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - + - + - - + + - - + + - - + + - + - - + + - + @@ -491,8 +491,8 @@ mod: {(self, E_Loop::$low)}" pathCondition="true" pathConditionChanged="false" i - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsOfAppliedMethodContract/oracle/MethodContract.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsOfAppliedMethodContract/oracle/MethodContract.xml index 93e8515564f..1065fb7d834 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsOfAppliedMethodContract/oracle/MethodContract.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/constraintsOfAppliedMethodContract/oracle/MethodContract.xml @@ -6,7 +6,7 @@ - + @@ -15,24 +15,24 @@ - + - + - + - + - + @@ -48,24 +48,24 @@ - + - + - + - + - + @@ -86,24 +86,24 @@ - + - + - + - + - + @@ -127,24 +127,24 @@ mod: allLocs termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="false" resultTerm="result_mod" exceptionTerm="exc_0" selfTerm="self" contractParameters="var, var_1" preconditionComplied="false" hasNotNullCheck="false" notNullCheckComplied="false"> - + - + - + - + - + @@ -160,55 +160,55 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -224,32 +224,32 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + - + - + - + - - + + - - + + @@ -263,30 +263,30 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + - + - + - + - + - + @@ -303,12 +303,12 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + @@ -317,22 +317,22 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + - - + + - - + + - + @@ -349,9 +349,9 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + @@ -367,24 +367,24 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + - + - + - + @@ -405,24 +405,24 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + - + - + - + @@ -439,20 +439,20 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + - + - + @@ -473,7 +473,7 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + @@ -483,19 +483,19 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + - + - + - + @@ -512,7 +512,7 @@ termination: diamond" pathCondition="gt(m,Z(0(1(#))))" pathConditionChanged="fal - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_2.xml index cf069490de6..2f8c0c43b73 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_2.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_2.xml @@ -4,12 +4,12 @@ - - + + - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_3.xml index 376bdb62ced..ee980b3ad3a 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_3.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_3.xml @@ -4,47 +4,47 @@ - - - - - + + + + + - + - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_4.xml index fcb3a0b78c8..053b36da43f 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_4.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsCaughtOrUncaught/oracle/ClassCastAndNullpointerExceptions_4.xml @@ -4,67 +4,67 @@ - - - - - - + + + + + + - + - - - - + + + + - + - - - - - - - - - - + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_2.xml index 3a0e75e0c66..f049a60d673 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_2.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_2.xml @@ -4,49 +4,49 @@ - - - - - + + + + + - + - - - + + + - + - - - - - - - + + + + + + + - - + + - - - + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_3.xml index 23e4252a456..a883889a2c4 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_3.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_3.xml @@ -4,61 +4,61 @@ - - - - - + + + + + - + - - - - + + + + - + - - - - - - - - - + + + + + + + + + - - + + - - - + + + - - - + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_4.xml index ff1c33ec6a9..87aa6d8c656 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_4.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithHitCountTest/oracle/ClassCastAndNullpointerExceptions_4.xml @@ -4,65 +4,65 @@ - - - - - + + + + + - + - - - - + + + + - + - - - - - - - - - - + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_2.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_2.xml index 47024a49a76..6d6fb281f8e 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_2.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_2.xml @@ -4,12 +4,12 @@ - - + + - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_3.xml index f5190383a65..576e7b198c8 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_3.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_3.xml @@ -4,34 +4,34 @@ - - - - + + + + - + - - - + + + - - - - - + + + + + - - + + - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_4.xml index a078e888b26..67fd9134451 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_4.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_4.xml @@ -4,49 +4,49 @@ - - - - - + + + + + - + - - - + + + - + - - - - - - - + + + + + + + - - + + - - - + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_5.xml index fc594380fef..a474f58f67d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_5.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_5.xml @@ -4,61 +4,61 @@ - - - - - + + + + + - + - - - - + + + + - + - - - - - - - - - + + + + + + + + + - - + + - - - + + + - - - + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_6.xml index b4777c14e43..a9bec01b99b 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_6.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_6.xml @@ -4,65 +4,65 @@ - - - - - + + + + + - + - - - - + + + + - + - - - - - - - - - - + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_7.xml index b4777c14e43..a9bec01b99b 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_7.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionBreakpointsWithSubclassesTest/oracle/ClassCastAndNullpointerExceptions_7.xml @@ -4,65 +4,65 @@ - - - - - + + + + + - + - - - - + + + + - + - - - - - - - - - - + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTest/oracle/ExceptionalMethodReturnTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTest/oracle/ExceptionalMethodReturnTest.xml index 92dc7682485..e38a9032087 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTest/oracle/ExceptionalMethodReturnTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTest/oracle/ExceptionalMethodReturnTest.xml @@ -19,19 +19,19 @@ - - + + - - + + - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTestWithLoop/oracle/Loop.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTestWithLoop/oracle/Loop.xml index 18ad00c2478..6b124798bd2 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTestWithLoop/oracle/Loop.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/exceptionalMethodReturnTestWithLoop/oracle/Loop.xml @@ -13,31 +13,31 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -52,27 +52,27 @@ - + - + - + - + - + - + - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceOfNotInEndlessLoop/oracle/Number.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceOfNotInEndlessLoop/oracle/Number.xml index 0eb7d692528..2bca5d4aa76 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/instanceOfNotInEndlessLoop/oracle/Number.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/instanceOfNotInEndlessLoop/oracle/Number.xml @@ -4,24 +4,24 @@ - - - - + + + + - - + + - - - - + + + + - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_3.xml index 92075805860..19e8ea7be3d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_3.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_3.xml @@ -2,12 +2,12 @@ - - + + - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_4.xml index 1a1eeab960b..01d6425635c 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_4.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_4.xml @@ -2,18 +2,18 @@ - - - - + + + + - - - - + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_5.xml index 66500acffc3..6cd983eeb09 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_5.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_5.xml @@ -2,21 +2,21 @@ - - - - - + + + + + - - - - - + + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_6.xml index 4963e684bc2..70246553c0f 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_6.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_6.xml @@ -2,15 +2,15 @@ - - - - - - - + + + + + + + - + @@ -20,15 +20,15 @@ - - - - - - - + + + + + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_7.xml index ed5470b97f9..6e93d3810e2 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_7.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointGlobalVariablesOnSatisfiable/oracle/GlobalVariablesOnSatisfiable_7.xml @@ -2,17 +2,17 @@ - - - - - - - - + + + + + + + + - + @@ -22,17 +22,17 @@ - - - - - - - - + + + + + + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_3.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_3.xml index 613415a8c25..48ff853ab7a 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_3.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_3.xml @@ -2,12 +2,12 @@ - - + + - - + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_4.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_4.xml index fd68c2f880d..fbcbb89656a 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_4.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_4.xml @@ -2,18 +2,18 @@ - - - - + + + + - - - - + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_5.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_5.xml index 075baf8e830..ac3cd6ef698 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_5.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_5.xml @@ -2,21 +2,21 @@ - - - - - + + + + + - - - - - + + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_6.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_6.xml index 3515a3f78f7..8003027d376 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_6.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_6.xml @@ -2,15 +2,15 @@ - - - - - - - + + + + + + + - + @@ -20,15 +20,15 @@ - - - - - - - + + + + + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_7.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_7.xml index 0724a811da3..c71f90ab492 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_7.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/keyWatchpointMethodsOnSatisfiable/oracle/MethodsOnSatisfiable_7.xml @@ -2,17 +2,17 @@ - - - - - - - - + + + + + + + + - + @@ -22,17 +22,17 @@ - - - - - - - - + + + + + + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallReturnTests/oracle/MethodCallReturnTests.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallReturnTests/oracle/MethodCallReturnTests.xml index c8d6d2617e0..6d7fa2b70d2 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallReturnTests/oracle/MethodCallReturnTests.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/methodCallReturnTests/oracle/MethodCallReturnTests.xml @@ -13,7 +13,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -698,7 +698,7 @@ - + @@ -897,7 +897,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_off.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_off.xml index f77282ab701..eb347b80d84 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_off.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_off.xml @@ -10,33 +10,33 @@ post: (result_magic = self.subMagic(x) mod: {} termination: diamond" pathCondition="true" pathConditionChanged="false" resultTerm="result_magic" exceptionTerm="exc_0" selfTerm="self" contractParameters="x" preconditionComplied="true" hasNotNullCheck="false" notNullCheckComplied="false"> - - - + + + - + - - - - + + + + - + - - - + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_side_proof.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_side_proof.xml index 385773a50b2..602ef674b7d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_side_proof.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/nonExecutionBranchHidingQueryWithFields/oracle/QueryWithFields_hiding_side_proof.xml @@ -11,17 +11,17 @@ mod: {} termination: diamond" pathCondition="true" pathConditionChanged="false" resultTerm="result_magic" exceptionTerm="exc_0" selfTerm="self" contractParameters="x" preconditionComplied="true" hasNotNullCheck="false" notNullCheckComplied="false"> - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/oracle/ImmutableList.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/oracle/ImmutableList.xml index 1c6a3ae42b2..5e01f25b09d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/oracle/ImmutableList.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueAddingOfLabeledSubtree/oracle/ImmutableList.xml @@ -10,20 +10,20 @@ & !current = self)<<SC>>; variant: i mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="false"> - - - - - + + + + + - - - - + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/oracle/BlockContractMagic42.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/oracle/BlockContractMagic42.xml index 8bc200a2341..d77e23f0770 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/oracle/BlockContractMagic42.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueBlockContractMagic42/oracle/BlockContractMagic42.xml @@ -15,10 +15,10 @@ mod {(null, BlockContractMagic42::$two)}termination diamond" pathCondition="true - - - - + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/oracle/MagicProofNoOSS.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/oracle/MagicProofNoOSS.xml index 9d5d133114a..da53026f299 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/oracle/MagicProofNoOSS.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/oracle/MagicProofNoOSS.xml @@ -2,16 +2,16 @@ - - - - - - - - + + + + + + + + - + @@ -19,21 +19,21 @@ - + - - - - +mod: {(self, ExampleInstance::$x)}" pathCondition="gt(select<[int]>(heap,self,ExampleInstance::$x),Z(neglit(1(#))))" pathConditionChanged="false" initiallyValid="true"> + + + + - - +termination: diamond" pathCondition="imp(equals(select<[int]>(anon_heap_LOOP,self,ExampleInstance::$x),ExampleInstance_x_0<<selectSK>>),and(geq(select<[int]>(heap,self,ExampleInstance::$x),Z(0(#))),or(geq(ExampleInstance_x_0,Z(1(#))),not(equals(add(ExampleInstance_x_0,mul(ExampleInstance_x_0<<selectSK>>,Z(neglit(1(#))))),Z(0(#)))))))" pathConditionChanged="false" resultTerm="result_0" exceptionTerm="exc_0" contractParameters="var" preconditionComplied="true" hasNotNullCheck="false" notNullCheckComplied="false"> + + @@ -41,10 +41,10 @@ termination: diamond" pathCondition="imp(equals(int::select(anon_heap_LOOP,self, - - - - + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/test/MagicProofNoOSS.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/test/MagicProofNoOSS.proof index 5e7e40a8658..0867b5c85d7 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/test/MagicProofNoOSS.proof +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueModifiableAndLoop/test/MagicProofNoOSS.proof @@ -719,7 +719,7 @@ (rule "hideAuxiliaryEq" (formula "1")) (rule "commute_and" (formula "14")) (rule "ifthenelse_split" (formula "1") (term "0")) - (branch " !o_1 = null & !( boolean::select(heap, o_1, java.lang.Object::#$created) = TRUE | boolean::select(anon_heap_LOOP<>, o_1, java.lang.Object::#$created) = TRUE) TRUE" + (branch " !o_1 = null & !( select<[boolean]>(heap, o_1, java.lang.Object::#$created) = TRUE | select<[boolean]>(anon_heap_LOOP<>, o_1, java.lang.Object::#$created) = TRUE) TRUE" (rule "andLeft" (formula "1")) (rule "notLeft" (formula "1")) (rule "notLeft" (formula "1")) @@ -733,7 +733,7 @@ (rule "notRight" (formula "17")) (rule "close" (formula "15") (ifseqformula "1")) ) - (branch " !o_1 = null & !( boolean::select(heap, o_1, java.lang.Object::#$created) = TRUE | boolean::select(anon_heap_LOOP<>, o_1, java.lang.Object::#$created) = TRUE) FALSE" + (branch " !o_1 = null & !( select<[boolean]>(heap, o_1, java.lang.Object::#$created) = TRUE | select<[boolean]>(anon_heap_LOOP<>, o_1, java.lang.Object::#$created) = TRUE) FALSE" (rule "close" (formula "17") (ifseqformula "1")) ) ) diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/oracle/ArrayUtil.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/oracle/ArrayUtil.xml index e6a344e8338..9f8e68e9e8f 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/oracle/ArrayUtil.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsArrayUtil/oracle/ArrayUtil.xml @@ -42,11 +42,11 @@ -> _array[minIndex] <= _array[j]))<<SC>>; variant: _array.length - i mod: {}" pathCondition="imp(geq(length(array),Z(0(#))),and(and(not(equals(array,null)),not(equals(length(array),Z(0(#))))),not(equals(length(array),Z(1(#))))))" pathConditionChanged="false" initiallyValid="true"> - - - - - + + + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/test/Calendar.proof b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/test/Calendar.proof index 81e77dd3dd9..4d56002be68 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/test/Calendar.proof +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/truthValueUnderstandingProofsCalendar/test/Calendar.proof @@ -341,7 +341,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) (rule "cut_direct" (formula "14") (term "1,0")) - (branch "CUT: leq(int::select(heap, self, Calendar::$entrySize), add(Z(neglit(2(#))), length(Calendar.Entry[]::select(heap, self, Calendar::$entries)))) TRUE" + (branch "CUT: leq(select<[int]>(heap, self, Calendar::$entrySize), add(Z(neglit(2(#))), length(Calendar.Entry[]::select(heap, self, Calendar::$entries)))) TRUE" (builtin "One Step Simplification" (formula "15")) (rule "inEqSimp_subsumption0" (formula "11") (ifseqformula "1")) (rule "inEqSimp_homoInEq0" (formula "11") (term "0")) @@ -437,7 +437,7 @@ (rule "closeFalse" (formula "1")) ) ) - (branch "CUT: leq(int::select(heap, self, Calendar::$entrySize), add(Z(neglit(2(#))), length(Calendar.Entry[]::select(heap, self, Calendar::$entries)))) FALSE" + (branch "CUT: leq(select<[int]>(heap, self, Calendar::$entrySize), add(Z(neglit(2(#))), length(Calendar.Entry[]::select(heap, self, Calendar::$entries)))) FALSE" (builtin "One Step Simplification" (formula "15")) (rule "false_right" (formula "15")) (rule "inEqSimp_leqRight" (formula "14")) diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArrayAverage/oracle/ArrayAverage.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArrayAverage/oracle/ArrayAverage.xml index 4da1534b8db..be33b765ced 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArrayAverage/oracle/ArrayAverage.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArrayAverage/oracle/ArrayAverage.xml @@ -42,55 +42,55 @@ variant: array_1.length - i mod: false" pathCondition="not(equals(array,null))" pathConditionChanged="false" initiallyValid="true"> - + - + - + - + - + - + - + - + - + - - + + - + - - + +as result of ArrayAverage.average(array)>" isReturnValueComputed="true" methodReturnCondition="imp(geq(length(array),Z(0(#))),and(and(and(not(equals(array,null)),geq(i_0,Z(1(#)))),equals(length(array),i_0)),equals(bsum{j:int}(Z(0(#)),i_0,select<[int]>(heap,array,arr(j))),sum_2_0)))"> - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumFor/oracle/ArraySumFor.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumFor/oracle/ArraySumFor.xml index 3dbe6ca855d..0c04c855734 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumFor/oracle/ArraySumFor.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumFor/oracle/ArraySumFor.xml @@ -11,27 +11,27 @@ variant: array.length - i mod: false" pathCondition="true" pathConditionChanged="false" initiallyValid="true"> - + - + - + - + - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumForEach/oracle/ArraySumForEach.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumForEach/oracle/ArraySumForEach.xml index 5e52540def7..33f9123a58a 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumForEach/oracle/ArraySumForEach.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumForEach/oracle/ArraySumForEach.xml @@ -11,21 +11,21 @@ variant: array.length - idx mod: false" pathCondition="true" pathConditionChanged="false" initiallyValid="true"> - + - + - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhile/oracle/ArraySumWhile.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhile/oracle/ArraySumWhile.xml index a6d74345488..b9c6c5d9618 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhile/oracle/ArraySumWhile.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhile/oracle/ArraySumWhile.xml @@ -11,27 +11,27 @@ variant: array.length - i mod: false" pathCondition="true" pathConditionChanged="false" initiallyValid="true"> - + - + - + - + - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileInitiallyInvalid/oracle/ArraySumWhileInitiallyInvalid.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileInitiallyInvalid/oracle/ArraySumWhileInitiallyInvalid.xml index fab6b20f24c..92ee3e5d110 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileInitiallyInvalid/oracle/ArraySumWhileInitiallyInvalid.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileInitiallyInvalid/oracle/ArraySumWhileInitiallyInvalid.xml @@ -11,27 +11,27 @@ variant: array.length - i mod: false" pathCondition="true" pathConditionChanged="false" initiallyValid="false"> - + - + - + - + - + - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithContinue/oracle/ArraySumWhileWithContinue.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithContinue/oracle/ArraySumWhileWithContinue.xml index 1ad37c584c8..aad62e69424 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithContinue/oracle/ArraySumWhileWithContinue.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithContinue/oracle/ArraySumWhileWithContinue.xml @@ -11,18 +11,18 @@ variant: array.length - i mod: false" pathCondition="true" pathConditionChanged="false" initiallyValid="true"> - + - - + + - + - + - + - + @@ -44,13 +44,13 @@ mod: false" pathCondition="true" pathConditionChanged="false" initiallyValid="tr - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithException/oracle/ArraySumWhileWithException.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithException/oracle/ArraySumWhileWithException.xml index 8ec4cb4495b..5c65184f026 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithException/oracle/ArraySumWhileWithException.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantArraySumWhileWithException/oracle/ArraySumWhileWithException.xml @@ -11,31 +11,31 @@ variant: array.length - i mod: false" pathCondition="true" pathConditionChanged="false" initiallyValid="true"> - + - + - + - + - + - + - + - + - + - + - + @@ -46,13 +46,13 @@ mod: false" pathCondition="true" pathConditionChanged="false" initiallyValid="tr - + - + - + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/oracle/LoopInvArrayExample.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/oracle/LoopInvArrayExample.xml index 0e513f42d97..a4b3c36ea87 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/oracle/LoopInvArrayExample.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/useLoopInvariantWithoutDecreasing/oracle/LoopInvArrayExample.xml @@ -8,21 +8,21 @@ ( (x >= 0 & x < i)<<SC>> & inInt(x) -> self.a[x] = 1))<<SC>>; mod: allLocs" pathCondition="true" pathConditionChanged="false" initiallyValid="true"> - - - - - - + + + + + + - - - + + + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractStatementsInImpliciteConstructor/oracle/UseOperationContractStatementsInImpliciteConstructor.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractStatementsInImpliciteConstructor/oracle/UseOperationContractStatementsInImpliciteConstructor.xml index 458af701a2f..18250e0095f 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractStatementsInImpliciteConstructor/oracle/UseOperationContractStatementsInImpliciteConstructor.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/useOperationContractStatementsInImpliciteConstructor/oracle/UseOperationContractStatementsInImpliciteConstructor.xml @@ -23,7 +23,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -100,7 +100,7 @@ termination: diamond" pathCondition="not(equals(array,null))" pathConditionChang - + @@ -122,7 +122,7 @@ termination: diamond" pathCondition="not(equals(array,null))" pathConditionChang - + @@ -227,7 +227,7 @@ termination: diamond" pathCondition="not(equals(array,null))" pathConditionChang - + @@ -268,7 +268,7 @@ as result of self.average(array)>" isReturnValueComputed="true" methodReturnC - + @@ -303,7 +303,7 @@ as result of self.average(array)>" isReturnValueComputed="true" methodReturnC - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariableMethodContractTest/oracle/VariableMethodContractTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariableMethodContractTest/oracle/VariableMethodContractTest.xml index 739459b9673..51f824f002a 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariableMethodContractTest/oracle/VariableMethodContractTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariableMethodContractTest/oracle/VariableMethodContractTest.xml @@ -133,7 +133,7 @@ termination: diamond" pathCondition="true" pathConditionChanged="false" resultTe - + @@ -150,7 +150,7 @@ termination: diamond" pathCondition="true" pathConditionChanged="false" resultTe - + @@ -167,7 +167,7 @@ termination: diamond" pathCondition="true" pathConditionChanged="false" resultTe - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariablesArrayTest/oracle/VariablesArrayTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariablesArrayTest/oracle/VariablesArrayTest.xml index 431de330f81..70092c42b3b 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariablesArrayTest/oracle/VariablesArrayTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variableVariablesArrayTest/oracle/VariablesArrayTest.xml @@ -72,7 +72,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest.xml index 1b489e25ba1..80e2e2bb196 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest.xml @@ -17,7 +17,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -55,9 +55,9 @@ - + - + @@ -76,9 +76,9 @@ - + - + @@ -97,9 +97,9 @@ - + - + @@ -121,7 +121,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest_Sequent.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest_Sequent.xml index f22e5af0d0b..f9d929199d3 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest_Sequent.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesArrayAssignmentTest/oracle/ArrayAssignmentTest_Sequent.xml @@ -63,7 +63,7 @@ - + @@ -88,7 +88,7 @@ - + @@ -113,7 +113,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalCycle/oracle/VariablesConditionalCycle.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalCycle/oracle/VariablesConditionalCycle.xml index 24a813c1cd4..4348f14da11 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalCycle/oracle/VariablesConditionalCycle.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalCycle/oracle/VariablesConditionalCycle.xml @@ -76,7 +76,7 @@ - + @@ -101,7 +101,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest.xml index 71457009356..67befc21641 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest.xml @@ -90,7 +90,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest_next.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest_next.xml index 3b94e9ecf44..dfcda6310f6 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest_next.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesConditionalValuesTest/oracle/ConditionalValuesTest_next.xml @@ -91,7 +91,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesInstanceVariableTest/oracle/VariablesInstanceVariableTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesInstanceVariableTest/oracle/VariablesInstanceVariableTest.xml index fb6b095317a..afebcffb3d9 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesInstanceVariableTest/oracle/VariablesInstanceVariableTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesInstanceVariableTest/oracle/VariablesInstanceVariableTest.xml @@ -13,11 +13,11 @@ - + - + @@ -31,7 +31,7 @@ - + @@ -44,11 +44,11 @@ - + - + @@ -62,7 +62,7 @@ - + @@ -83,7 +83,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -167,7 +167,7 @@ - + @@ -462,11 +462,11 @@ this.a + this.b + x + this.wrapper.value + param.value;" pathCondition="true" pa - + - + @@ -480,7 +480,7 @@ this.a + this.b + x + this.wrapper.value + param.value;" pathCondition="true" pa - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest.xml index 40155f04570..3aace8b446d 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest.xml @@ -19,7 +19,7 @@ - + @@ -44,7 +44,7 @@ - + @@ -77,7 +77,7 @@ - + @@ -102,7 +102,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -132,7 +132,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -155,9 +155,9 @@ - + - + @@ -175,7 +175,7 @@ - + @@ -183,7 +183,7 @@ - + @@ -198,9 +198,9 @@ - + - + @@ -225,9 +225,9 @@ - + - + @@ -245,7 +245,7 @@ - + @@ -253,7 +253,7 @@ - + @@ -268,9 +268,9 @@ - + - + @@ -295,9 +295,9 @@ - + - + @@ -325,7 +325,7 @@ - + @@ -361,9 +361,9 @@ - + - + @@ -383,7 +383,7 @@ - + @@ -398,9 +398,9 @@ - + - + @@ -432,7 +432,7 @@ - + @@ -469,7 +469,7 @@ - + @@ -489,7 +489,7 @@ - + @@ -504,7 +504,7 @@ - + @@ -536,7 +536,7 @@ - + @@ -572,7 +572,7 @@ - + @@ -592,7 +592,7 @@ - + @@ -613,7 +613,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -657,7 +657,7 @@ - + @@ -692,7 +692,7 @@ - + @@ -719,7 +719,7 @@ - + @@ -751,7 +751,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest_Sequent.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest_Sequent.xml index a8c51a82490..f6837a9dba0 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest_Sequent.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayAssignmentTest/oracle/NonSimpleArrayAssignmentTest_Sequent.xml @@ -139,7 +139,7 @@ - + @@ -153,13 +153,13 @@ - + - + @@ -185,9 +185,9 @@ - + - + @@ -198,7 +198,7 @@ - + @@ -212,7 +212,7 @@ - + @@ -222,13 +222,13 @@ - + - + @@ -255,7 +255,7 @@ - + @@ -269,13 +269,13 @@ - + - + @@ -289,13 +289,13 @@ - + - + @@ -321,9 +321,9 @@ - + - + @@ -334,7 +334,7 @@ - + @@ -348,7 +348,7 @@ - + @@ -366,13 +366,13 @@ - + - + @@ -382,7 +382,7 @@ - + @@ -417,7 +417,7 @@ - + @@ -431,7 +431,7 @@ - + @@ -449,13 +449,13 @@ - + - + @@ -465,7 +465,7 @@ - + @@ -500,7 +500,7 @@ - + @@ -514,7 +514,7 @@ - + @@ -532,13 +532,13 @@ - + - + @@ -548,7 +548,7 @@ - + @@ -615,7 +615,7 @@ - + @@ -629,7 +629,7 @@ - + @@ -639,13 +639,13 @@ - + - + @@ -671,7 +671,7 @@ - + @@ -682,7 +682,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -706,13 +706,13 @@ - + - + @@ -751,7 +751,7 @@ - + @@ -765,7 +765,7 @@ - + @@ -775,13 +775,13 @@ - + - + @@ -861,7 +861,7 @@ - + @@ -887,7 +887,7 @@ - + @@ -910,7 +910,7 @@ - + @@ -961,7 +961,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest_Sequent.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest_Sequent.xml index ca6ae472a7c..e3ee44cfb4e 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest_Sequent.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesNonSimpleArrayCreationTest/oracle/NonSimpleArrayCreationTest_Sequent.xml @@ -7,7 +7,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUpdateVariablesTest/oracle/UpdateVariablesTest.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUpdateVariablesTest/oracle/UpdateVariablesTest.xml index 1785731f7d4..f7fdeb976a6 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUpdateVariablesTest/oracle/UpdateVariablesTest.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesUpdateVariablesTest/oracle/UpdateVariablesTest.xml @@ -32,7 +32,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -53,14 +53,14 @@ - + - + @@ -70,14 +70,14 @@ - + - + @@ -87,7 +87,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesVariableArrayIndex/oracle/VariableArrayIndex.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesVariableArrayIndex/oracle/VariableArrayIndex.xml index 845d0478169..52c64bf8d20 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesVariableArrayIndex/oracle/VariableArrayIndex.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesVariableArrayIndex/oracle/VariableArrayIndex.xml @@ -15,7 +15,7 @@ - + @@ -32,7 +32,7 @@ - + @@ -57,7 +57,7 @@ - + @@ -74,17 +74,17 @@ - + - + - + - + @@ -98,19 +98,19 @@ - + - + - + - + @@ -124,13 +124,13 @@ - + - + @@ -147,7 +147,7 @@ - + @@ -156,14 +156,14 @@ - - + + - + @@ -171,7 +171,7 @@ - + @@ -188,7 +188,7 @@ - + @@ -197,14 +197,14 @@ - - + + - + @@ -212,7 +212,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -238,14 +238,14 @@ - - + + - + @@ -253,7 +253,7 @@ - + @@ -282,7 +282,7 @@ - + @@ -290,7 +290,7 @@ - + @@ -318,7 +318,7 @@ - + @@ -330,7 +330,7 @@ - + @@ -348,7 +348,7 @@ - + @@ -363,7 +363,7 @@ - + @@ -404,7 +404,7 @@ - + @@ -441,7 +441,7 @@ - + @@ -460,7 +460,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -486,13 +486,13 @@ - + - + @@ -509,7 +509,7 @@ - + @@ -521,7 +521,7 @@ - + @@ -529,7 +529,7 @@ - + @@ -558,7 +558,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -578,7 +578,7 @@ - + @@ -615,7 +615,7 @@ - + @@ -623,7 +623,7 @@ - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesWithQuantifier/oracle/EnoughInfoReturn.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesWithQuantifier/oracle/EnoughInfoReturn.xml index bef607d47ca..38b76923ee1 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/variablesWithQuantifier/oracle/EnoughInfoReturn.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/variablesWithQuantifier/oracle/EnoughInfoReturn.xml @@ -76,7 +76,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -92,7 +92,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -131,7 +131,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -141,7 +141,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -161,23 +161,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -202,7 +202,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -212,7 +212,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -220,23 +220,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -261,7 +261,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -271,7 +271,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -279,23 +279,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -320,7 +320,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -330,7 +330,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -338,23 +338,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -405,23 +405,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -464,23 +464,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -505,7 +505,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -523,23 +523,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -594,23 +594,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -646,7 +646,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -658,7 +658,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -666,7 +666,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -693,13 +693,13 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + @@ -707,7 +707,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -738,13 +738,13 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + @@ -752,7 +752,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -760,23 +760,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -793,13 +793,13 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + @@ -807,7 +807,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -819,23 +819,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -848,13 +848,13 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + @@ -862,7 +862,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -874,23 +874,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -909,7 +909,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -919,9 +919,9 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + @@ -943,13 +943,13 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + @@ -957,7 +957,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -988,13 +988,13 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + @@ -1002,7 +1002,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -1010,23 +1010,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -1043,13 +1043,13 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + @@ -1057,7 +1057,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -1069,23 +1069,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -1098,13 +1098,13 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + @@ -1112,7 +1112,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -1124,23 +1124,23 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + - + - + - + - + - + - + @@ -1159,7 +1159,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + @@ -1167,7 +1167,7 @@ mod: {}" pathCondition="true" pathConditionChanged="false" initiallyValid="true" - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/oracle/VerifyNumberNormal.xml b/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/oracle/VerifyNumberNormal.xml index 3ffd45e37ea..a099f1e71a5 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/oracle/VerifyNumberNormal.xml +++ b/key.core.symbolic_execution/src/test/resources/testcase/set/verificationProofFile_VerifyNumber/oracle/VerifyNumberNormal.xml @@ -3,22 +3,22 @@ - - - - + + + + - + - - - - + + + + - + diff --git a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexAsVariableFieldTest/ArrayIndexAsVariableFieldTest.proof b/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexAsVariableFieldTest/ArrayIndexAsVariableFieldTest.proof index b3275566e2d..fd19a167ee4 100644 --- a/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexAsVariableFieldTest/ArrayIndexAsVariableFieldTest.proof +++ b/key.core.symbolic_execution/src/test/resources/testcase/slicing/arrayIndexAsVariableFieldTest/ArrayIndexAsVariableFieldTest.proof @@ -182,7 +182,7 @@ (builtin "One Step Simplification" (formula "1")) (rule "true_left" (formula "1")) (rule "onlyCreatedObjectsAreReferenced" (formula "12") (term "0,1,0") (ifseqformula "1")) - (rule "allLeft" (formula "10") (inst "t=int::select(heap, + (rule "allLeft" (formula "10") (inst "t=select<[int]>(heap, index, ArrayIndexAsVariableFieldTest.Index::$value)")) (rule "inEqSimp_contradInEq0" (formula "10") (term "1,0") (ifseqformula "9")) @@ -273,7 +273,7 @@ (rule "true_left" (formula "1")) (rule "onlyCreatedObjectsAreReferenced" (formula "14") (term "0,1,0") (ifseqformula "2")) (rule "allLeft" (formula "11") (inst "t=add(Z(1(#)), - int::select(heap, + select<[int]>(heap, index, ArrayIndexAsVariableFieldTest.Index::$value))")) (rule "inEqSimp_homoInEq1" (formula "11") (term "1,0")) @@ -476,7 +476,7 @@ (rule "emptyModality" (formula "17") (term "1")) (builtin "One Step Simplification" (formula "17")) (rule "ifthenelse_split" (formula "1") (term "0")) - (branch " ArrayIndexAsVariableFieldTest::select(heap, array, arr(add(Z(1(#)), int::select(heap, index, ArrayIndexAsVariableFieldTest.Index::$value)))) = ArrayIndexAsVariableFieldTest::select(heap, array, arr(int::select(heap, index, ArrayIndexAsVariableFieldTest.Index::$value))) TRUE" + (branch " ArrayIndexAsVariableFieldTest::select(heap, array, arr(add(Z(1(#)), select<[int]>(heap, index, ArrayIndexAsVariableFieldTest.Index::$value)))) = ArrayIndexAsVariableFieldTest::select(heap, array, arr(select<[int]>(heap, index, ArrayIndexAsVariableFieldTest.Index::$value))) TRUE" (rule "hideAuxiliaryEq" (formula "2")) (rule "applyEq" (formula "2") (term "1,0") (ifseqformula "1")) (rule "applyEq" (formula "12") (term "0") (ifseqformula "1")) @@ -484,7 +484,7 @@ (builtin "One Step Simplification" (formula "15")) (opengoal " ") ) - (branch " ArrayIndexAsVariableFieldTest::select(heap, array, arr(add(Z(1(#)), int::select(heap, index, ArrayIndexAsVariableFieldTest.Index::$value)))) = ArrayIndexAsVariableFieldTest::select(heap, array, arr(int::select(heap, index, ArrayIndexAsVariableFieldTest.Index::$value))) FALSE" + (branch " ArrayIndexAsVariableFieldTest::select(heap, array, arr(add(Z(1(#)), select<[int]>(heap, index, ArrayIndexAsVariableFieldTest.Index::$value)))) = ArrayIndexAsVariableFieldTest::select(heap, array, arr(select<[int]>(heap, index, ArrayIndexAsVariableFieldTest.Index::$value))) FALSE" (rule "hideAuxiliaryEq" (formula "1")) (opengoal " ") ) diff --git a/key.core.testgen/testcases/binarysearch/attempt.proof b/key.core.testgen/testcases/binarysearch/attempt.proof index 80d6e2d08fc..6bb396f60cd 100644 --- a/key.core.testgen/testcases/binarysearch/attempt.proof +++ b/key.core.testgen/testcases/binarysearch/attempt.proof @@ -611,7 +611,7 @@ name=BinarySearch[BinarySearch\\:\\:search([I,int)].JML normal_behavior operatio (rule "methodCallEmpty" (formula "17") (term "1")) (rule "tryEmpty" (formula "17") (term "1")) (rule "emptyModality" (formula "17") (term "1")) - (opengoal " ( int::select(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))) = v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( boolean::select(heap, a, java.lang.Object::) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(int::select(heap, a, arr(y)), int::select(heap, a, arr(x)))))<> ==> (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || b_2:=TRUE || result_search:=jdiv(add(l_0, r_0), Z(2(#)))} (( (( b_2<> = TRUE -> ( (\\if (\\exists int x; (( (geq(x, Z(0(#))) & lt(x, length(a)))<> & int::select(heap, a, arr(x)) = v)<>)) \\then ( int::select(heap, a, arr(result_search)) = v) \\else ( result_search = Z(neglit(1(#))))<> & ( exc<> = null)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit)]\")>> & (\\forall Field f; (\\forall java.lang.Object o; (( ( (!(o = null)<>)<> & (!( boolean::select(heapAtPre, o, java.lang.Object::) = TRUE)<>)<>)<> | ( any::select(heapAtPre, o, f) = any::select(heap, o, f))<>)<>))<>)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>) & (( !b_2<> = TRUE -> ( (((((geq(l, Z(0(#))) & lt(l, r))<> & lt(r, length(_a)))<> & \\forall int x; ( (geq(x, Z(0(#))) & lt(x, l))<> -> lt(int::select(heap, _a, arr(x)), _v)))<> & \\forall int x; ( (lt(r, x) & lt(x, length(_a)))<> -> lt(_v, int::select(heap, _a, arr(x)))))<> & \\forall Field f; \\forall java.lang.Object o; ( !o = null & ! boolean::select(h, o, java.lang.Object::) = TRUE | any::select(h, o, f) = any::select(heap, o, f)))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>> & prec(add(mul(l, Z(neglit(1(#)))), r), a_1))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") + (opengoal " ( select<[int]>(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))) = v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( select<[boolean]>(heap, a, java.lang.Object::#$created) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(select<[int]>(heap, a, arr(y)), select<[int]>(heap, a, arr(x)))))<> ==> (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || b_2:=TRUE || result_search:=jdiv(add(l_0, r_0), Z(2(#)))} (( (( b_2<> = TRUE -> ( (\\if (\\exists int x; (( (geq(x, Z(0(#))) & lt(x, length(a)))<> & select<[int]>(heap, a, arr(x)) = v)<>)) \\then ( select<[int]>(heap, a, arr(result_search)) = v) \\else ( result_search = Z(neglit(1(#))))<> & ( exc<> = null)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit)]\")>> & (\\forall Field f; (\\forall java.lang.Object o; (( ( (!(o = null)<>)<> & (!( select<[boolean]>(heapAtPre, o, java.lang.Object::#$created) = TRUE)<>)<>)<> | ( any::select(heapAtPre, o, f) = any::select(heap, o, f))<>)<>))<>)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>) & (( !b_2<> = TRUE -> ( (((((geq(l, Z(0(#))) & lt(l, r))<> & lt(r, length(_a)))<> & \\forall int x; ( (geq(x, Z(0(#))) & lt(x, l))<> -> lt(select<[int]>(heap, _a, arr(x)), _v)))<> & \\forall int x; ( (lt(r, x) & lt(x, length(_a)))<> -> lt(_v, select<[int]>(heap, _a, arr(x)))))<> & \\forall Field f; \\forall java.lang.Object o; ( !o = null & ! select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | any::select(h, o, f) = any::select(heap, o, f)))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>> & prec(add(mul(l, Z(neglit(1(#)))), r), a_1))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") ) (branch "if _a[mid] == _v false" (builtin "One Step Simplification" (formula "17")) @@ -638,7 +638,7 @@ name=BinarySearch[BinarySearch\\:\\:search([I,int)].JML normal_behavior operatio (builtin "One Step Simplification" (formula "18")) (rule "blockEmpty" (formula "18") (term "1")) (rule "lsContinue" (formula "18") (term "1")) - (opengoal " gt(int::select(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))), v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( boolean::select(heap, a, java.lang.Object::) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(int::select(heap, a, arr(y)), int::select(heap, a, arr(x)))))<> ==> ( int::select(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))) = v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || l:=l_0 || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || r:=jdiv(add(l_0, r_0), Z(2(#)))} ({b_2:=FALSE} (( (( b_2<> = TRUE -> ( (\\if (\\exists int x; (( (geq(x, Z(0(#))) & lt(x, length(a)))<> & int::select(heap, a, arr(x)) = v)<>)) \\then ( int::select(heap, a, arr(result_search)) = v) \\else ( result_search = Z(neglit(1(#))))<> & ( exc<> = null)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit)]\")>> & (\\forall Field f; (\\forall java.lang.Object o; (( ( (!(o = null)<>)<> & (!( boolean::select(heapAtPre, o, java.lang.Object::) = TRUE)<>)<>)<> | ( any::select(heapAtPre, o, f) = any::select(heap, o, f))<>)<>))<>)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>) & (( !b_2<> = TRUE -> ( (((((geq(l, Z(0(#))) & lt(l, r))<> & lt(r, length(_a)))<> & \\forall int x; ( (geq(x, Z(0(#))) & lt(x, l))<> -> lt(int::select(heap, _a, arr(x)), _v)))<> & \\forall int x; ( (lt(r, x) & lt(x, length(_a)))<> -> lt(_v, int::select(heap, _a, arr(x)))))<> & \\forall Field f; \\forall java.lang.Object o; ( !o = null & ! boolean::select(h, o, java.lang.Object::) = TRUE | any::select(h, o, f) = any::select(heap, o, f)))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>> & prec(add(mul(l, Z(neglit(1(#)))), r), a_1))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") + (opengoal " gt(select<[int]>(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))), v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( select<[boolean]>(heap, a, java.lang.Object::#$created) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(select<[int]>(heap, a, arr(y)), select<[int]>(heap, a, arr(x)))))<> ==> ( select<[int]>(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))) = v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || l:=l_0 || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || r:=jdiv(add(l_0, r_0), Z(2(#)))} ({b_2:=FALSE} (( (( b_2<> = TRUE -> ( (\\if (\\exists int x; (( (geq(x, Z(0(#))) & lt(x, length(a)))<> & select<[int]>(heap, a, arr(x)) = v)<>)) \\then ( select<[int]>(heap, a, arr(result_search)) = v) \\else ( result_search = Z(neglit(1(#))))<> & ( exc<> = null)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit)]\")>> & (\\forall Field f; (\\forall java.lang.Object o; (( ( (!(o = null)<>)<> & (!( select<[boolean]>(heapAtPre, o, java.lang.Object::#$created) = TRUE)<>)<>)<> | ( any::select(heapAtPre, o, f) = any::select(heap, o, f))<>)<>))<>)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>) & (( !b_2<> = TRUE -> ( (((((geq(l, Z(0(#))) & lt(l, r))<> & lt(r, length(_a)))<> & \\forall int x; ( (geq(x, Z(0(#))) & lt(x, l))<> -> lt(select<[int]>(heap, _a, arr(x)), _v)))<> & \\forall int x; ( (lt(r, x) & lt(x, length(_a)))<> -> lt(_v, select<[int]>(heap, _a, arr(x)))))<> & \\forall Field f; \\forall java.lang.Object o; ( !o = null & ! select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | any::select(h, o, f) = any::select(heap, o, f)))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>> & prec(add(mul(l, Z(neglit(1(#)))), r), a_1))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") ) (branch "if _a[mid] > _v false" (builtin "One Step Simplification" (formula "18")) @@ -648,7 +648,7 @@ name=BinarySearch[BinarySearch\\:\\:search([I,int)].JML normal_behavior operatio (builtin "One Step Simplification" (formula "18")) (rule "blockEmpty" (formula "18") (term "1")) (rule "lsContinue" (formula "18") (term "1")) - (opengoal " gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( boolean::select(heap, a, java.lang.Object::) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(int::select(heap, a, arr(y)), int::select(heap, a, arr(x)))))<> ==> gt(int::select(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))), v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, ( int::select(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))) = v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || r:=r_0 || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || l:=jdiv(add(l_0, r_0), Z(2(#)))} ({b_2:=FALSE} (( (( b_2<> = TRUE -> ( (\\if (\\exists int x; (( (geq(x, Z(0(#))) & lt(x, length(a)))<> & int::select(heap, a, arr(x)) = v)<>)) \\then ( int::select(heap, a, arr(result_search)) = v) \\else ( result_search = Z(neglit(1(#))))<> & ( exc<> = null)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit)]\")>> & (\\forall Field f; (\\forall java.lang.Object o; (( ( (!(o = null)<>)<> & (!( boolean::select(heapAtPre, o, java.lang.Object::) = TRUE)<>)<>)<> | ( any::select(heapAtPre, o, f) = any::select(heap, o, f))<>)<>))<>)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>) & (( !b_2<> = TRUE -> ( (((((geq(l, Z(0(#))) & lt(l, r))<> & lt(r, length(_a)))<> & \\forall int x; ( (geq(x, Z(0(#))) & lt(x, l))<> -> lt(int::select(heap, _a, arr(x)), _v)))<> & \\forall int x; ( (lt(r, x) & lt(x, length(_a)))<> -> lt(_v, int::select(heap, _a, arr(x)))))<> & \\forall Field f; \\forall java.lang.Object o; ( !o = null & ! boolean::select(h, o, java.lang.Object::) = TRUE | any::select(h, o, f) = any::select(heap, o, f)))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>> & prec(add(mul(l, Z(neglit(1(#)))), r), a_1))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") + (opengoal " gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( select<[boolean]>(heap, a, java.lang.Object::#$created) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(select<[int]>(heap, a, arr(y)), select<[int]>(heap, a, arr(x)))))<> ==> gt(select<[int]>(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))), v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, ( select<[int]>(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))) = v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || r:=r_0 || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || l:=jdiv(add(l_0, r_0), Z(2(#)))} ({b_2:=FALSE} (( (( b_2<> = TRUE -> ( (\\if (\\exists int x; (( (geq(x, Z(0(#))) & lt(x, length(a)))<> & select<[int]>(heap, a, arr(x)) = v)<>)) \\then ( select<[int]>(heap, a, arr(result_search)) = v) \\else ( result_search = Z(neglit(1(#))))<> & ( exc<> = null)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit)]\")>> & (\\forall Field f; (\\forall java.lang.Object o; (( ( (!(o = null)<>)<> & (!( select<[boolean]>(heapAtPre, o, java.lang.Object::#$created) = TRUE)<>)<>)<> | ( any::select(heapAtPre, o, f) = any::select(heap, o, f))<>)<>))<>)<>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>) & (( !b_2<> = TRUE -> ( (((((geq(l, Z(0(#))) & lt(l, r))<> & lt(r, length(_a)))<> & \\forall int x; ( (geq(x, Z(0(#))) & lt(x, l))<> -> lt(select<[int]>(heap, _a, arr(x)), _v)))<> & \\forall int x; ( (lt(r, x) & lt(x, length(_a)))<> -> lt(_v, select<[int]>(heap, _a, arr(x)))))<> & \\forall Field f; \\forall java.lang.Object o; ( !o = null & ! select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | any::select(h, o, f) = any::select(heap, o, f)))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>> & prec(add(mul(l, Z(neglit(1(#)))), r), a_1))< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") ) ) (branch "Null Reference (_a.length == 0 = null)" @@ -657,7 +657,7 @@ name=BinarySearch[BinarySearch\\:\\:search([I,int)].JML normal_behavior operatio (rule "closeFalse" (formula "1")) ) (branch "Index Out of Bounds (_a.length == 0 != null, but _a.length == 0 Out of Bounds!)" - (opengoal " ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || mid:=jdiv(add(l_0, r_0), Z(2(#)))} (( (!( _a< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> = null)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> & (( leq(length(_a< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>), mid< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> | lt(mid< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( boolean::select(heap, a, java.lang.Object::) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(int::select(heap, a, arr(y)), int::select(heap, a, arr(x)))))<> ==> ( int::select(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))) = v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || mid:=jdiv(add(l_0, r_0), Z(2(#)))} false< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") + (opengoal " ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || mid:=jdiv(add(l_0, r_0), Z(2(#)))} (( (!( _a< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> = null)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> & (( leq(length(_a< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>), mid< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> | lt(mid< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( select<[boolean]>(heap, a, java.lang.Object::#$created) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(select<[int]>(heap, a, arr(y)), select<[int]>(heap, a, arr(x)))))<> ==> ( select<[int]>(heap, a, arr(jdiv(add(l_0, r_0), Z(2(#))))) = v)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || mid:=jdiv(add(l_0, r_0), Z(2(#)))} false< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") ) ) ) @@ -667,7 +667,7 @@ name=BinarySearch[BinarySearch\\:\\:search([I,int)].JML normal_behavior operatio (rule "closeFalse" (formula "1")) ) (branch "Index Out of Bounds (_a.length == 0 != null, but _a.length == 0 Out of Bounds!)" - (opengoal " ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || mid:=jdiv(add(l_0, r_0), Z(2(#)))} (( (!( _a< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> = null)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> & (( leq(length(_a< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>), mid< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> | lt(mid< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, int::select(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( boolean::select(heap, a, java.lang.Object::) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(int::select(heap, a, arr(y)), int::select(heap, a, arr(x)))))<> ==> (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || mid:=jdiv(add(l_0, r_0), Z(2(#)))} false< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") + (opengoal " ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || mid:=jdiv(add(l_0, r_0), Z(2(#)))} (( (!( _a< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> = null)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> & (( leq(length(_a< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>), mid< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>> | lt(mid< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, gt(r_0, add(Z(1(#)), l_0))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>, geq(l_0, Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(l_0, r_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, lt(r_0, length(a))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(x, l_0) & geq(x, Z(0(#))) -> lt(select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)), v)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (\\forall int x; ( lt(r_0, x) & lt(x, length(a)) -> lt(v, select<[int]>(anon(heap, empty, anon_heap_LOOP_0<>), a, arr(x)))))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(anon_heap_LOOP_0)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, wellFormed(heap)<>, ( select<[boolean]>(heap, a, java.lang.Object::#$created) = TRUE)<>, measuredByEmpty<>, geq(length(a), Z(0(#))), (\\forall int x; \\forall int y; ( lt(x, y) & lt(y, length(a)) & geq(x, Z(0(#))) -> geq(select<[int]>(heap, a, arr(y)), select<[int]>(heap, a, arr(x)))))<> ==> (length(a) = Z(1(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (length(a) = Z(0(#)))< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit)]\")>>, (a = null)<>, ({heapAtPre:=heap || _a:=a || _v:=v || exc:=null || (h:=heap || (l:=l_0 || r:=r_0) || heap:=anon(heap, empty, anon_heap_LOOP_0<>) || a_1:=add(mul(l_0, Z(neglit(1(#)))), r_0)) || mid:=jdiv(add(l_0, r_0), Z(2(#)))} false< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>)< (implicit)\",\"[ensures @ file BinarySearch.java @ line 5, ensures (implicit), assignable (implicit), loop_invariant @ file BinarySearch.java @ line 14]\")>>") ) ) (branch "Case 2" diff --git a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdHeapRules.key b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdHeapRules.key index 35858a7b812..94d7a3148a0 100644 --- a/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdHeapRules.key +++ b/key.core.wd/src/main/resources/de/uka/ilkd/key/proof/rules/wdHeapRules.key @@ -59,7 +59,7 @@ ) \replacewith( wd(h) & wd(o) & wd(f) & wellFormed(h) & o != null - & (f = java.lang.Object:: | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE) + & (f = java.lang.Object::#$created | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE) ) \heuristics(simplify) }; diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java index a0883006a76..2e1c8225c30 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java @@ -238,7 +238,7 @@ private void printArraySelect(LogicPrinter lp, JTerm heapTerm, JTerm objectTerm, /* * Print a select-term of the following form: T::select( ... , ... , java.lang.Object::<...>) - * For example: boolean::select(heap, object, java.lang.Object::#$created) + * For example: select<[boolean]>(heap, object, java.lang.Object::#$created) */ private void printBuiltinObjectProperty(LogicPrinter lp, JTerm t, JTerm heapTerm, JTerm objectTerm, diff --git a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/String.java b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/String.java index 7c89c63a51a..582b2f1bc1e 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/String.java +++ b/key.core/src/main/resources/de/uka/ilkd/key/java/JavaRedux/java/lang/String.java @@ -299,7 +299,7 @@ public final class String extends java.lang.Object implements java.io.Serializab /*@ public normal_behavior requires startIdx >= 0 && startIdx < \dl_seqLen(\dl_strContent(this)); - //boolean::select(heapAtPre, \result, java.lang.Object::#$created)==FALSE + //select<[boolean]>(heapAtPre, \result, java.lang.Object::#$created)==FALSE ensures \result != null; ensures \dl_strContent(\result)==\dl_seqSub(\dl_strContent(this), startIdx, \dl_seqLen(\dl_strContent(this))); assignable \nothing; @@ -316,7 +316,7 @@ public final class String extends java.lang.Object implements java.io.Serializab public normal_behavior requires endIdx >= startIdx && startIdx >= 0 && endIdx <= \dl_seqLen(\dl_strContent(this)); - //boolean::select(heapAtPre, result, java.lang.Object::#$created)==FALSE + //select<[boolean]>(heapAtPre, result, java.lang.Object::#$created)==FALSE ensures \result != null; ensures \dl_strContent(\result)==\dl_seqSub(\dl_strContent(this), startIdx, endIdx); assignable \nothing; @@ -333,7 +333,7 @@ public final class String extends java.lang.Object implements java.io.Serializab public normal_behavior requires other != null; requires \dl_seqLen(\dl_strContent(other)) > 0; - //ensures boolean::select(heapAtPre, result, java.lang.Object::#$created)==FALSE + //ensures select<[boolean]>(heapAtPre, result, java.lang.Object::#$created)==FALSE ensures \result != null; ensures \dl_strContent(\result)==\dl_seqConcat(\dl_strContent(this), \dl_strContent(other)); assignable \nothing; @@ -433,7 +433,7 @@ public final class String extends java.lang.Object implements java.io.Serializab requires obj == null; ensures \dl_strContent(\result) == "null"; ensures \result != null; - // && boolean::select(heapAtPre, \result, java.lang.Object::#$created)==FALSE + // && select<[boolean]>(heapAtPre, \result, java.lang.Object::#$created)==FALSE assignable \nothing; also public normal_behavior @@ -514,7 +514,7 @@ public final class String extends java.lang.Object implements java.io.Serializab ensures \dl_seqLen(\dl_strContent(\result)) == count; ensures (\forall int i; 0 <= i < count; (int) \dl_strContent(\result)[i] == data[i+offset]); - // && boolean::select(heapAtPre, \result, java.lang.Object::#$created)==FALSE + // && select<[boolean]>(heapAtPre, \result, java.lang.Object::#$created)==FALSE ensures \result != null; assignable \nothing; also @@ -538,7 +538,7 @@ public final class String extends java.lang.Object implements java.io.Serializab ensures (\forall int i; 0 <= i < data.length; (int) \dl_strContent(\result)[i] == data[i]); ensures \result != null; - // && boolean::select(heapAtPre, \result, java.lang.Object::#$created)==FALSE + // && select<[boolean]>(heapAtPre, \result, java.lang.Object::#$created)==FALSE assignable \nothing; also exceptional_behavior requires data == null; diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt index ffb4cb55fc2..d008ce7d826 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt @@ -679,7 +679,7 @@ allocateInstance { #lhs = #t.#allocate()@#t; ... }}| (post)) \varcond(\hasSort(#t2 (program Type), alphaObj)) -\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),equals(boolean::select(heap,#lhs,java.lang.Object::#$created),FALSE))),equals(alphaObj::exactInstance(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(create(heap,#lhs)),#allmodal(post))]) +\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),equals(select<[boolean]>(heap,#lhs,java.lang.Object::#$created),FALSE))),equals(alphaObj::exactInstance(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(create(heap,#lhs)),#allmodal(post))]) \heuristics(method_expand) Choices: (programRules:Java & permissions:off)} ----------------------------------------------------- @@ -689,7 +689,7 @@ allocateInstanceWithLength { #lhs = #t.#allocate(#len)@#t; ... }}| (post)) \varcond(\hasSort(#t2 (program Type), alphaObj)) -\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),and(equals(boolean::select(heap,#lhs,java.lang.Object::#$created),FALSE),equals(length(#lhs),#len)))),equals(alphaObj::exactInstance(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(store(store(create(heap,#lhs),#lhs,java.lang.Object::#$transient,Z(0(#))),#lhs,java.lang.Object::#$transactionConditionallyUpdated,FALSE)),#allmodal(post))]) +\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),and(equals(select<[boolean]>(heap,#lhs,java.lang.Object::#$created),FALSE),equals(length(#lhs),#len)))),equals(alphaObj::exactInstance(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(store(store(create(heap,#lhs),#lhs,java.lang.Object::#$transient,Z(0(#))),#lhs,java.lang.Object::#$transactionConditionallyUpdated,FALSE)),#allmodal(post))]) \heuristics(method_expand) Choices: (programRules:Java & permissions:off)} ----------------------------------------------------- @@ -1199,7 +1199,7 @@ assertSafe { method-frame (#ex) { #typeof(#e1) #condition = #e1; } -}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(boolean::select(oldHeap,o,java.lang.Object::#$created),FALSE)),equals(any::select(oldHeap,o,f),any::select(heap,o,f))))))]) ; +}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(select<[boolean]>(oldHeap,o,java.lang.Object::#$created),FALSE)),equals(any::select(oldHeap,o,f),any::select(heap,o,f))))))]) ; \replacewith([]==>[\<{ method-frame (#ex) { #condition = #e1; @@ -1220,7 +1220,7 @@ assertSafeWithMessage { #typeof(#e1) #condition = #e1; #typeof(#e2) #message = #e2; } -}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(boolean::select(oldHeap,o,java.lang.Object::#$created),FALSE)),equals(any::select(oldHeap,o,f),any::select(heap,o,f))))))]) ; +}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(select<[boolean]>(oldHeap,o,java.lang.Object::#$created),FALSE)),equals(any::select(oldHeap,o,f),any::select(heap,o,f))))))]) ; \replacewith([]==>[\<{ method-frame (#ex) { #typeof(#e1) #condition = #e1; @@ -1235,7 +1235,7 @@ Choices: (programRules:Java & assertions:safe)} assignableDefinition { \find(assignable(heapNew,heapOld,locs)) \varcond(\notFreeIn(f (variable), heapNew (Heap term)), \notFreeIn(f (variable), heapOld (Heap term)), \notFreeIn(f (variable), locs (LocSet term)), \notFreeIn(o (variable), heapNew (Heap term)), \notFreeIn(o (variable), heapOld (Heap term)), \notFreeIn(o (variable), locs (LocSet term))) -\replacewith(all{f (variable)}(all{o (variable)}(or(or(elementOf(o,f,locs),and(not(equals(o,null)),not(equals(boolean::select(heapOld,o,java.lang.Object::#$created),TRUE)))),equals(any::select(heapNew,o,f),any::select(heapOld,o,f)))))) +\replacewith(all{f (variable)}(all{o (variable)}(or(or(elementOf(o,f,locs),and(not(equals(o,null)),not(equals(select<[boolean]>(heapOld,o,java.lang.Object::#$created),TRUE)))),equals(any::select(heapNew,o,f),any::select(heapOld,o,f)))))) \heuristics(delayedExpansion) Choices: programRules:Java} ----------------------------------------------------- @@ -1955,7 +1955,7 @@ assignment_to_primitive_array_component_transaction { \varcond( \not \isReferenceArray(#v (program Variable))) \add [and(not(equals(#v,null)),or(leq(length(#v),#se),lt(#se,Z(0(#)))))]==>[] \replacewith([]==>[false]) ; \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(int::select(heap,#v,java.lang.Object::#$transient),Z(0(#))),store(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated,TRUE),if-then-else(equals(boolean::select(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) +\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(select<[int]>(heap,#v,java.lang.Object::#$transient),Z(0(#))),store(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated,TRUE),if-then-else(equals(select<[boolean]>(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & JavaCard:on)} ----------------------------------------------------- @@ -1981,7 +1981,7 @@ assignment_to_reference_array_component_transaction { \add [and(and(and(not(equals(#v,null)),lt(#se,length(#v))),geq(#se,Z(0(#)))),not(arrayStoreValid(#v,#se0)))]==>[] \replacewith([]==>[false]) ; \add [and(not(equals(#v,null)),or(leq(length(#v),#se),lt(#se,Z(0(#)))))]==>[] \replacewith([]==>[false]) ; \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(int::select(heap,#v,java.lang.Object::#$transient),Z(0(#))),store(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated,TRUE),if-then-else(equals(boolean::select(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) +\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(select<[int]>(heap,#v,java.lang.Object::#$transient),Z(0(#))),store(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated,TRUE),if-then-else(equals(select<[boolean]>(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & JavaCard:on)} ----------------------------------------------------- @@ -3498,7 +3498,7 @@ Choices: programRules:Java} ----------------------------------------------------- == castTrueImpliesOriginalTrue (castTrueImpliesOriginalTrue) ========================================= castTrueImpliesOriginalTrue { -\assumes ([equals(boolean::select(h,o,f),TRUE)]==>[]) +\assumes ([equals(select<[boolean]>(h,o,f),TRUE)]==>[]) \find(==>equals(any::select(h,o,f),TRUE)) \replacewith([]==>[true]) \heuristics(concrete) @@ -5163,14 +5163,14 @@ Choices: true} createdInHeapToElementOf { \find(createdInHeap(s,h)) \varcond(\notFreeIn(fv (variable), h (Heap term)), \notFreeIn(fv (variable), s (LocSet term)), \notFreeIn(ov (variable), h (Heap term)), \notFreeIn(ov (variable), s (LocSet term))) -\replacewith(all{ov (variable)}(all{fv (variable)}(imp(elementOf(ov,fv,s),or(equals(ov,null),equals(boolean::select(h,ov,java.lang.Object::#$created),TRUE)))))) +\replacewith(all{ov (variable)}(all{fv (variable)}(imp(elementOf(ov,fv,s),or(equals(ov,null),equals(select<[boolean]>(h,ov,java.lang.Object::#$created),TRUE)))))) \heuristics(classAxiom) Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithAllFields (createdInHeapWithAllFields) ========================================= createdInHeapWithAllFields { \find(createdInHeap(allFields(o),h)) -\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE))) +\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5178,14 +5178,14 @@ Choices: programRules:Java} createdInHeapWithAllFieldsEQ { \assumes ([equals(allFields(o),EQ)]==>[]) \find(createdInHeap(EQ,h)) -\sameUpdateLevel\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE))) +\sameUpdateLevel\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithArrayRange (createdInHeapWithArrayRange) ========================================= createdInHeapWithArrayRange { \find(createdInHeap(arrayRange(o,lower,upper),h)) -\replacewith(or(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE)),lt(upper,lower))) +\replacewith(or(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)),lt(upper,lower))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5193,7 +5193,7 @@ Choices: programRules:Java} createdInHeapWithArrayRangeEQ { \assumes ([equals(arrayRange(o,lower,upper),EQ)]==>[]) \find(createdInHeap(EQ,h)) -\sameUpdateLevel\replacewith(or(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE)),lt(upper,lower))) +\sameUpdateLevel\replacewith(or(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)),lt(upper,lower))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5254,7 +5254,7 @@ Choices: programRules:Java} == createdInHeapWithSingleton (createdInHeapWithSingleton) ========================================= createdInHeapWithSingleton { \find(createdInHeap(singleton(o,f),h)) -\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE))) +\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5262,7 +5262,7 @@ Choices: programRules:Java} createdInHeapWithSingletonEQ { \assumes ([equals(singleton(o,f),EQ)]==>[]) \find(createdInHeap(EQ,h)) -\sameUpdateLevel\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE))) +\sameUpdateLevel\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5335,7 +5335,7 @@ Choices: true} defInDomainImpliesCreated { \find(inDomainImpliesCreated(m)) \varcond(\notFreeIn(o (variable), m (Map term))) -\replacewith(all{o (variable)}(imp(inDomain(m,o),equals(boolean::select(heap,o,java.lang.Object::#$created),TRUE)))) +\replacewith(all{o (variable)}(imp(inDomain(m,o),equals(select<[boolean]>(heap,o,java.lang.Object::#$created),TRUE)))) \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- @@ -5495,7 +5495,7 @@ Choices: true} definitionOfNewOnHeap { \find(==>newOnHeap(h,s)) \varcond(\notFreeIn(i (variable), h (Heap term)), \notFreeIn(i (variable), s (Seq term))) -\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s))),and(imp(equals(java.lang.Object::instance(any::seqGet(s,i)),TRUE),equals(boolean::select(h,java.lang.Object::seqGet(s,i),java.lang.Object::#$created),FALSE)),imp(equals(Seq::instance(any::seqGet(s,i)),TRUE),newOnHeap(h,Seq::seqGet(s,i))))))]) +\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s))),and(imp(equals(java.lang.Object::instance(any::seqGet(s,i)),TRUE),equals(select<[boolean]>(h,java.lang.Object::seqGet(s,i),java.lang.Object::#$created),FALSE)),imp(equals(Seq::instance(any::seqGet(s,i)),TRUE),newOnHeap(h,Seq::seqGet(s,i))))))]) \heuristics(comprehensions) Choices: true} ----------------------------------------------------- @@ -6307,7 +6307,7 @@ Choices: programRules:Java} == elementOfFreshLocs (elementOfFreshLocs) ========================================= elementOfFreshLocs { \find(elementOf(o,f,freshLocs(h))) -\replacewith(and(not(equals(o,null)),not(equals(boolean::select(h,o,java.lang.Object::#$created),TRUE)))) +\replacewith(and(not(equals(o,null)),not(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)))) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- @@ -9602,7 +9602,7 @@ getJavaCardTransient { #jcsystemType.#getTransient(#se)@#jcsystemType; ... }}| (post)) \replacewith([]==>[not(equals(#se,null))]) ; -\replacewith([]==>[update-application(elem-update(#lhs (program LeftHandSide))(int::select(heap,#se,java.lang.Object::#$transient)),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#lhs (program LeftHandSide))(select<[int]>(heap,#se,java.lang.Object::#$transient)),#allmodal(post))]) \heuristics(simplify_prog) Choices: (programRules:Java & JavaCard:on)} ----------------------------------------------------- @@ -11307,7 +11307,7 @@ Choices: programRules:Java} insert_constant_string_value { \assumes ([wellFormed(heap)]==>[]) \find(#csv) -\sameUpdateLevel\add [or(equals(#constantvalue(#csv),null),and(not(equals(strPool(Seq::cast(#constantvalue(#csv))),null)),equals(boolean::select(heap,strPool(Seq::cast(#constantvalue(#csv))),java.lang.Object::#$created),TRUE)))]==>[] \replacewith(if-then-else(equals(#constantvalue(#csv),null),null,strPool(Seq::cast(#constantvalue(#csv))))) +\sameUpdateLevel\add [or(equals(#constantvalue(#csv),null),and(not(equals(strPool(Seq::cast(#constantvalue(#csv))),null)),equals(select<[boolean]>(heap,strPool(Seq::cast(#constantvalue(#csv))),java.lang.Object::#$created),TRUE)))]==>[] \replacewith(if-then-else(equals(#constantvalue(#csv),null),null,strPool(Seq::cast(#constantvalue(#csv))))) \heuristics(concrete) Choices: true} ----------------------------------------------------- @@ -11581,7 +11581,7 @@ Choices: true} == intersectAllFieldsFreshLocs (intersectAllFieldsFreshLocs) ========================================= intersectAllFieldsFreshLocs { \find(equals(intersect(allFields(o),freshLocs(h)),empty)) -\replacewith(or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE))) +\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -13909,7 +13909,7 @@ Choices: true} ----------------------------------------------------- == nullCreated (nullCreated) ========================================= nullCreated { -\add [or(all{h (variable)}(equals(boolean::select(h,null,java.lang.Object::#$created),TRUE)),all{h (variable)}(equals(boolean::select(h,null,java.lang.Object::#$created),FALSE)))]==>[] +\add [or(all{h (variable)}(equals(select<[boolean]>(h,null,java.lang.Object::#$created),TRUE)),all{h (variable)}(equals(select<[boolean]>(h,null,java.lang.Object::#$created),FALSE)))]==>[] Choices: programRules:Java} ----------------------------------------------------- @@ -13976,7 +13976,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreInLocSets { \assumes ([wellFormed(h)]==>[]) \find(elementOf(o2,f2,LocSet::select(h,o,f))==>) -\add [or(equals(o2,null),equals(boolean::select(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -13984,7 +13984,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreInLocSetsEQ { \assumes ([wellFormed(h),equals(LocSet::select(h,o,f),EQ)]==>[]) \find(elementOf(o2,f2,EQ)==>) -\add [or(equals(o2,null),equals(boolean::select(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -13992,7 +13992,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreInLocSetsEQFinal { \assumes ([wellFormed(h),equals(LocSet::final(o,f),EQ)]==>[]) \find(elementOf(o2,f2,EQ)==>) -\add [or(equals(o2,null),equals(boolean::select(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14000,7 +14000,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreInLocSetsFinal { \assumes ([wellFormed(h)]==>[]) \find(elementOf(o2,f2,LocSet::final(o,f))==>) -\add [or(equals(o2,null),equals(boolean::select(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14008,7 +14008,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreObserved { \find(obs) \sameUpdateLevel\varcond(\isObserver (obs (deltaObject term), h (Heap term))) -\add [or(equals(obs,null),equals(boolean::select(h,obs,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(obs,null),equals(select<[boolean]>(h,obs,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14016,7 +14016,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreObservedInLocSets { \find(elementOf(o,f,obs)==>) \varcond(\isObserver (obs (LocSet term), h (Heap term))) -\add [or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14025,7 +14025,7 @@ onlyCreatedObjectsAreObservedInLocSetsEQ { \assumes ([equals(obs,EQ)]==>[]) \find(elementOf(o,f,EQ)==>) \varcond(\isObserver (obs (LocSet term), h (Heap term))) -\add [or(equals(o,null),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14033,15 +14033,15 @@ Choices: programRules:Java} onlyCreatedObjectsAreReferenced { \assumes ([wellFormed(h)]==>[]) \find(deltaObject::select(h,o,f)) -\sameUpdateLevel\add [or(equals(deltaObject::select(h,o,f),null),equals(boolean::select(h,deltaObject::select(h,o,f),java.lang.Object::#$created),TRUE))]==>[] +\sameUpdateLevel\add [or(equals(deltaObject::select(h,o,f),null),equals(select<[boolean]>(h,deltaObject::select(h,o,f),java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreReferencedFinal (onlyCreatedObjectsAreReferencedFinal) ========================================= onlyCreatedObjectsAreReferencedFinal { -\assumes ([wellFormed(h),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE)]==>[]) +\assumes ([wellFormed(h),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)]==>[]) \find(deltaObject::final(o,f)) -\sameUpdateLevel\add [or(equals(deltaObject::final(o,f),null),equals(boolean::select(h,deltaObject::final(o,f),java.lang.Object::#$created),TRUE))]==>[] +\sameUpdateLevel\add [or(equals(deltaObject::final(o,f),null),equals(select<[boolean]>(h,deltaObject::final(o,f),java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14049,7 +14049,7 @@ Choices: programRules:Java} only_created_objects_are_reachable { \assumes ([wellFormed(h)]==>[equals(o,null)]) \find(reach(h,s,o,o2,n)==>) -\add [or(not(equals(boolean::select(h,o,java.lang.Object::#$created),TRUE)),equals(boolean::select(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\add [or(not(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: reach:on} ----------------------------------------------------- @@ -15143,7 +15143,7 @@ Choices: reach:on} reach_does_not_depend_on_fresh_locs { \assumes ([]==>[equals(o,null)]) \find(reach(anon(h,empty,h2),s,o,o2,n)) -\add []==>[and(wellFormed(h),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE))] ; +\add []==>[and(wellFormed(h),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))] ; \replacewith(reach(h,s,o,o2,n)) \heuristics(simplify) Choices: reach:on} @@ -15152,7 +15152,7 @@ Choices: reach:on} reach_does_not_depend_on_fresh_locs_EQ { \assumes ([equals(anon(h,empty,h2),EQ)]==>[equals(o,null)]) \find(reach(EQ,s,o,o2,n)) -\add []==>[and(wellFormed(h),equals(boolean::select(h,o,java.lang.Object::#$created),TRUE))] ; +\add []==>[and(wellFormed(h),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))] ; \replacewith(reach(h,s,o,o2,n)) \heuristics(simplify) Choices: reach:on} @@ -15185,15 +15185,15 @@ Choices: (programRules:Java & runtimeExceptions:ban)} == referencedObjectIsCreatedRighFinalEQ (referencedObjectIsCreatedRighFinalEQ) ========================================= referencedObjectIsCreatedRighFinalEQ { \assumes ([equals(deltaObject::final(o,f),EQ)]==>[equals(EQ,null)]) -\find(==>equals(boolean::select(h,EQ,java.lang.Object::#$created),TRUE)) -\add []==>[or(equals(boolean::select(h,o,java.lang.Object::#$created),TRUE),equals(o,null))] +\find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::#$created),TRUE)) +\add []==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))] \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == referencedObjectIsCreatedRight (referencedObjectIsCreatedRight) ========================================= referencedObjectIsCreatedRight { \assumes ([]==>[equals(deltaObject::select(h,o,f),null)]) -\find(==>equals(boolean::select(h,deltaObject::select(h,o,f),java.lang.Object::#$created),TRUE)) +\find(==>equals(select<[boolean]>(h,deltaObject::select(h,o,f),java.lang.Object::#$created),TRUE)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) Choices: programRules:Java} @@ -15201,7 +15201,7 @@ Choices: programRules:Java} == referencedObjectIsCreatedRightEQ (referencedObjectIsCreatedRightEQ) ========================================= referencedObjectIsCreatedRightEQ { \assumes ([equals(deltaObject::select(h,o,f),EQ)]==>[equals(EQ,null)]) -\find(==>equals(boolean::select(h,EQ,java.lang.Object::#$created),TRUE)) +\find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::#$created),TRUE)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) Choices: programRules:Java} @@ -15209,8 +15209,8 @@ Choices: programRules:Java} == referencedObjectIsCreatedRightFinal (referencedObjectIsCreatedRightFinal) ========================================= referencedObjectIsCreatedRightFinal { \assumes ([]==>[equals(deltaObject::final(o,f),null)]) -\find(==>equals(boolean::select(h,deltaObject::final(o,f),java.lang.Object::#$created),TRUE)) -\replacewith([]==>[or(equals(boolean::select(h,o,java.lang.Object::#$created),TRUE),equals(o,null))]) +\find(==>equals(select<[boolean]>(h,deltaObject::final(o,f),java.lang.Object::#$created),TRUE)) +\replacewith([]==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))]) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -15697,31 +15697,31 @@ Choices: true} ----------------------------------------------------- == selectCreatedOfAnon (selectCreatedOfAnon) ========================================= selectCreatedOfAnon { -\find(boolean::select(anon(h,s,h2),o,java.lang.Object::#$created)) -\replacewith(if-then-else(equals(boolean::select(h,o,java.lang.Object::#$created),TRUE),TRUE,boolean::select(h2,o,java.lang.Object::#$created))) +\find(select<[boolean]>(anon(h,s,h2),o,java.lang.Object::#$created)) +\replacewith(if-then-else(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),TRUE,select<[boolean]>(h2,o,java.lang.Object::#$created))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectCreatedOfAnonAsFormula (selectCreatedOfAnonAsFormula) ========================================= selectCreatedOfAnonAsFormula { -\find(equals(boolean::select(anon(h,s,h2),o,java.lang.Object::#$created),TRUE)) -\replacewith(or(equals(boolean::select(h,o,java.lang.Object::#$created),TRUE),equals(boolean::select(h2,o,java.lang.Object::#$created),TRUE))) +\find(equals(select<[boolean]>(anon(h,s,h2),o,java.lang.Object::#$created),TRUE)) +\replacewith(or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(select<[boolean]>(h2,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_ENLARGING) Choices: programRules:Java} ----------------------------------------------------- == selectCreatedOfAnonAsFormulaEQ (selectCreatedOfAnonAsFormulaEQ) ========================================= selectCreatedOfAnonAsFormulaEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) -\find(equals(boolean::select(EQ,o,java.lang.Object::#$created),TRUE)) -\sameUpdateLevel\replacewith(or(equals(boolean::select(h,o,java.lang.Object::#$created),TRUE),equals(boolean::select(h2,o,java.lang.Object::#$created),TRUE))) +\find(equals(select<[boolean]>(EQ,o,java.lang.Object::#$created),TRUE)) +\sameUpdateLevel\replacewith(or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(select<[boolean]>(h2,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_ENLARGING) Choices: programRules:Java} ----------------------------------------------------- == selectCreatedOfAnonEQ (selectCreatedOfAnonEQ) ========================================= selectCreatedOfAnonEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) -\find(boolean::select(EQ,o,java.lang.Object::#$created)) -\sameUpdateLevel\replacewith(if-then-else(equals(boolean::select(h,o,java.lang.Object::#$created),TRUE),TRUE,boolean::select(h2,o,java.lang.Object::#$created))) +\find(select<[boolean]>(EQ,o,java.lang.Object::#$created)) +\sameUpdateLevel\replacewith(if-then-else(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),TRUE,select<[boolean]>(h2,o,java.lang.Object::#$created))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- @@ -16759,7 +16759,7 @@ stringAssignment { \find(#normalassign ((modal operator))|{{ .. #v = #slit; ... }}| (post)) -\sameUpdateLevel\add [not(equals(strPool(#slit),null)),equals(boolean::select(heap,strPool(#slit),java.lang.Object::#$created),TRUE)]==>[] \replacewith(update-application(elem-update(#v (program Variable))(strPool(#slit)),#normalassign(post))) +\sameUpdateLevel\add [not(equals(strPool(#slit),null)),equals(select<[boolean]>(heap,strPool(#slit),java.lang.Object::#$created),TRUE)]==>[] \replacewith(update-application(elem-update(#v (program Variable))(strPool(#slit)),#normalassign(post))) \heuristics(simplify_prog_subset, simplify_prog) Choices: true} ----------------------------------------------------- @@ -18599,7 +18599,7 @@ Choices: programRules:Java} wellFormedMemsetArrayObject { \find(wellFormed(memset(h,arrayRange(ar,lo,up),x))) \succedentPolarity\varcond(\hasSort(\elemSort(ar (java.lang.Object term)), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(boolean::select(h,x,java.lang.Object::#$created),TRUE),arrayStoreValid(ar,x))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),arrayStoreValid(ar,x))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18615,7 +18615,7 @@ Choices: programRules:Java} wellFormedStoreArray { \find(wellFormed(store(h,o,arr(idx),x))) \succedentPolarity\varcond(\hasSort(\elemSort(o (java.lang.Object term)), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(boolean::select(h,x,java.lang.Object::#$created),TRUE),arrayStoreValid(o,x))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),arrayStoreValid(o,x))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18639,7 +18639,7 @@ Choices: programRules:Java} wellFormedStoreObject { \find(wellFormed(store(h,o,f,x))) \succedentPolarity\varcond(\fieldType(f (Field term), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(boolean::select(h,x,java.lang.Object::#$created),TRUE),equals(alpha::instance(x),TRUE))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),equals(alpha::instance(x),TRUE))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18648,7 +18648,7 @@ wellFormedStoreObjectEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) \find(wellFormed(EQ)) \sameUpdateLevel\succedentPolarity\varcond(\fieldType(f (Field term), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(boolean::select(h,x,java.lang.Object::#$created),TRUE),equals(alpha::instance(x),TRUE))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),equals(alpha::instance(x),TRUE))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- diff --git a/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof b/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof index 9b70ea6dcfd..f53436e2435 100644 --- a/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof +++ b/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof @@ -2624,7 +2624,7 @@ (rule "dismissNonSelectedField" (formula "37") (term "4,0") (userinteraction)) (rule "selectOfStore" (formula "37") (term "4,0") (userinteraction)) (rule "ifthenelse_split" (formula "37") (term "4,0") (userinteraction)) - (branch " i_14 = i_14 & IntOpt::#value = IntOpt::#value & !IntOpt::#value = java.lang.Object:: TRUE" + (branch " i_14 = i_14 & IntOpt::#value = IntOpt::#value & !IntOpt::#value = java.lang.Object::#$created TRUE" (rule "castDel2" (formula "38") (term "4,0") (ifseqformula "5") (userinteraction)) (rule "applyEqReverse" (formula "31") (term "4,0") (ifseqformula "5") (userinteraction)) (builtin "Use Dependency Contract" (formula "38") (term "0") (ifInst "" (formula "31") (term "0")) (contract "BoyerMoore[BoyerMoore::count([I,\bigint,\bigint)].JML accessible clause.0") (userinteraction)) @@ -2865,7 +2865,7 @@ ) ) ) - (branch " i_14 = i_14 & IntOpt::#value = IntOpt::#value & !IntOpt::#value = java.lang.Object:: FALSE" + (branch " i_14 = i_14 & IntOpt::#value = IntOpt::#value & !IntOpt::#value = java.lang.Object::#$created FALSE" (builtin "One Step Simplification" (formula "37")) (rule "closeTrue" (formula "37")) ) @@ -3158,7 +3158,7 @@ (rule "leq_literals" (formula "22") (term "0")) (builtin "One Step Simplification" (formula "22")) (rule "ifthenelse_split" (formula "2") (term "0")) - (branch "f_0 = java.lang.Object:: & o_0 = i_14 TRUE" + (branch "f_0 = java.lang.Object::#$created & o_0 = i_14 TRUE" (rule "andLeft" (formula "2")) (rule "applyEqReverse" (formula "5") (term "2,0") (ifseqformula "4")) (builtin "One Step Simplification" (formula "5") (ifInst "" (formula "3"))) @@ -3179,7 +3179,7 @@ (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "3")) (rule "close" (formula "35") (ifseqformula "1")) ) - (branch "f_0 = java.lang.Object:: & o_0 = i_14 FALSE" + (branch "f_0 = java.lang.Object::#$created & o_0 = i_14 FALSE" (rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "2")) (rule "hideAuxiliaryEq" (formula "2")) (rule "ifthenelse_split" (formula "2") (term "0")) diff --git a/key.ui/examples/heap/Transactions/JML depends clause (id_ 0 - java.lang.Object___inv_ for Account).proof b/key.ui/examples/heap/Transactions/JML depends clause (id_ 0 - java.lang.Object___inv_ for Account).proof index cf2af7734e0..70a6ed7d88c 100644 --- a/key.ui/examples/heap/Transactions/JML depends clause (id_ 0 - java.lang.Object___inv_ for Account).proof +++ b/key.ui/examples/heap/Transactions/JML depends clause (id_ 0 - java.lang.Object___inv_ for Account).proof @@ -296,7 +296,7 @@ (builtin "One Step Simplification" (formula "1")) (rule "notLeft" (formula "1")) (rule "cut_direct" (formula "15") (term "1,0")) - (branch " CUT: int::select(anonHeap, self.transactions, total) + (branch " CUT: select<[int]>(anonHeap, self.transactions, total) = self.balance TRUE" (builtin "One Step Simplification" (formula "16")) (rule "cut_direct" (formula "16") (term "1")) @@ -569,7 +569,7 @@ (rule "closeTrue" (formula "14")) ) ) - (branch " CUT: int::select(anonHeap, self.transactions, total) + (branch " CUT: select<[int]>(anonHeap, self.transactions, total) = self.balance FALSE" (builtin "One Step Simplification" (formula "16")) (rule "false_right" (formula "16")) @@ -853,7 +853,7 @@ ) (branch " (self.transactions, total) in self.transactions.footprint FALSE" (rule "cut_direct" (formula "15") (term "1")) - (branch " CUT: int::select(anonHeap, self.transactions, total) + (branch " CUT: select<[int]>(anonHeap, self.transactions, total) = self.balance TRUE" (builtin "One Step Simplification" (formula "16")) (rule "cut_direct" (formula "16") (term "0")) @@ -917,7 +917,7 @@ ) ) ) - (branch " CUT: int::select(anonHeap, self.transactions, total) + (branch " CUT: select<[int]>(anonHeap, self.transactions, total) = self.balance FALSE" (builtin "One Step Simplification" (formula "16")) (rule "false_right" (formula "16")) diff --git a/key.ui/examples/heap/Transactions/JML operation contract (id_ 6 - Main__main).proof b/key.ui/examples/heap/Transactions/JML operation contract (id_ 6 - Main__main).proof index 0fffed83e80..f6eda5c1dd1 100644 --- a/key.ui/examples/heap/Transactions/JML operation contract (id_ 6 - Main__main).proof +++ b/key.ui/examples/heap/Transactions/JML operation contract (id_ 6 - Main__main).proof @@ -514,7 +514,7 @@ (rule "ifthenelse_split" (formula "51") (term "0")) (branch " if (self_1.$created = TRUE) then (TRUE) - else (boolean::select(anonHeap_Account, + else (select<[boolean]>(anonHeap_Account, self_1, $created)) = TRUE TRUE" @@ -523,7 +523,7 @@ ) (branch " if (self_1.$created = TRUE) then (TRUE) - else (boolean::select(anonHeap_Account, + else (select<[boolean]>(anonHeap_Account, self_1, $created)) = TRUE FALSE" @@ -531,32 +531,32 @@ (branch " if ( if ( if ( if ( if ( if ( e_3.$created = TRUE) then (TRUE) - else (boolean::select(anonHeap_Account, + else (select<[boolean]>(anonHeap_Account, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_deposit, + else (select<[boolean]>(anonHeap_deposit, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_Account_0, + else (select<[boolean]>(anonHeap_Account_0, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_deposit_0, + else (select<[boolean]>(anonHeap_deposit_0, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_transfer, + else (select<[boolean]>(anonHeap_transfer, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_getTotal, + else (select<[boolean]>(anonHeap_getTotal, e_3, $created)) = TRUE TRUE" @@ -588,32 +588,32 @@ (branch " if ( if ( if ( if ( if ( if ( e_3.$created = TRUE) then (TRUE) - else (boolean::select(anonHeap_Account, + else (select<[boolean]>(anonHeap_Account, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_deposit, + else (select<[boolean]>(anonHeap_deposit, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_Account_0, + else (select<[boolean]>(anonHeap_Account_0, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_deposit_0, + else (select<[boolean]>(anonHeap_deposit_0, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_transfer, + else (select<[boolean]>(anonHeap_transfer, e_3, $created)) = TRUE) then (TRUE) - else (boolean::select(anonHeap_getTotal, + else (select<[boolean]>(anonHeap_getTotal, e_3, $created)) = TRUE FALSE" @@ -719,12 +719,12 @@ (rule "polySimp_sepPosMonomial" (formula "33")) (rule "mul_literals" (formula "33") (term "1")) (rule "ifthenelse_split" (formula "45") (term "0")) - (branch " boolean::select(anonHeap_Account, self_1, $created) + (branch " select<[boolean]>(anonHeap_Account, self_1, $created) = TRUE TRUE" (builtin "One Step Simplification" (formula "46")) (rule "closeTrue" (formula "46")) ) - (branch " boolean::select(anonHeap_Account, self_1, $created) + (branch " select<[boolean]>(anonHeap_Account, self_1, $created) = TRUE FALSE" (rule "cut_direct" (formula "50") (term "1")) (branch " CUT: wellFormed(heapAfter_getTotal) TRUE" @@ -3647,7 +3647,7 @@ (rule "ifthenelse_split" (formula "31") (term "0")) (branch " if (self_1.$created = TRUE) then (TRUE) - else (boolean::select(anonHeap_Account, + else (select<[boolean]>(anonHeap_Account, self_1, $created)) = TRUE TRUE" @@ -3656,7 +3656,7 @@ ) (branch " if (self_1.$created = TRUE) then (TRUE) - else (boolean::select(anonHeap_Account, + else (select<[boolean]>(anonHeap_Account, self_1, $created)) = TRUE FALSE" diff --git a/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopContract()).JML normal_behavior loop contract.0.proof b/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopContract()).JML normal_behavior loop contract.0.proof index a27b598b69c..e5ad7b3984a 100644 --- a/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopContract()).JML normal_behavior loop contract.0.proof +++ b/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopContract()).JML normal_behavior loop contract.0.proof @@ -829,7 +829,7 @@ (rule "hideAuxiliaryEq" (formula "8")) (rule "eqSymm" (formula "7")) (rule "allLeft" (formula "6") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "6") (term "1,0")) @@ -861,7 +861,7 @@ (builtin "One Step Simplification" (formula "6")) (rule "notLeft" (formula "6")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -912,14 +912,14 @@ (builtin "One Step Simplification" (formula "4")) (rule "true_left" (formula "4")) (rule "allLeft" (formula "4") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "4") (term "0,0,0") (ifseqformula "9")) (builtin "One Step Simplification" (formula "4")) (rule "true_left" (formula "4")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) @@ -989,7 +989,7 @@ (rule "applyEqReverse" (formula "14") (term "0,0") (ifseqformula "13")) (rule "hideAuxiliaryEq" (formula "13")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0,0,0,0,0")) @@ -2251,7 +2251,7 @@ (rule "hideAuxiliaryEq" (formula "8")) (rule "eqSymm" (formula "7")) (rule "allLeft" (formula "6") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "6") (term "1")) @@ -2283,7 +2283,7 @@ (builtin "One Step Simplification" (formula "6")) (rule "notLeft" (formula "6")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "8") (term "1")) @@ -2334,14 +2334,14 @@ (builtin "One Step Simplification" (formula "4")) (rule "true_left" (formula "4")) (rule "allLeft" (formula "4") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "4") (term "0,0,0") (ifseqformula "9")) (builtin "One Step Simplification" (formula "4")) (rule "true_left" (formula "4")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -2442,7 +2442,7 @@ (rule "applyEqReverse" (formula "17") (term "0,0") (ifseqformula "16")) (rule "hideAuxiliaryEq" (formula "16")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0,0,0,0,0")) @@ -5202,7 +5202,7 @@ (rule "leq_literals" (formula "12") (term "0,1")) (builtin "One Step Simplification" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -5245,7 +5245,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) @@ -5736,7 +5736,7 @@ (rule "qeq_literals" (formula "12") (term "0,1")) (builtin "One Step Simplification" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -5773,7 +5773,7 @@ (rule "hideAuxiliaryEq" (formula "14")) (rule "eqSymm" (formula "13")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -5901,7 +5901,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "allLeft" (formula "7") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "7") (term "1,0")) @@ -5927,7 +5927,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "8") (term "0,0,0") (ifseqformula "13")) @@ -6012,7 +6012,7 @@ (builtin "One Step Simplification" (formula "17")) (rule "commute_or_2" (formula "17") (term "0")) (rule "allLeft" (formula "18") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "18") (term "1,0,0,0,0")) @@ -6484,7 +6484,7 @@ (builtin "One Step Simplification" (formula "34")) (rule "false_right" (formula "34")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) @@ -6557,7 +6557,7 @@ (rule "qeq_literals" (formula "11") (term "0,1")) (builtin "One Step Simplification" (formula "11")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "12") (term "1")) @@ -6809,7 +6809,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "9") (term "1")) @@ -6846,7 +6846,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "10") (term "0,0,0") (ifseqformula "16")) @@ -6944,7 +6944,7 @@ (rule "qeq_literals" (formula "22") (term "0,1,0,0,0,0")) (builtin "One Step Simplification" (formula "22")) (rule "allLeft" (formula "23") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "23") (term "1,0,0,0,0,0")) @@ -8061,7 +8061,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "notLeft" (formula "11")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -8163,7 +8163,7 @@ (rule "leq_literals" (formula "13") (term "0,1")) (builtin "One Step Simplification" (formula "13")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "14") (term "1,0")) @@ -8356,7 +8356,7 @@ (rule "add_literals" (formula "19") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "19")) (rule "allLeft" (formula "20") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "20") (term "1,0,0,0,0,0")) @@ -8393,7 +8393,7 @@ (rule "add_zero_left" (formula "20") (term "1,0,1,0")) (builtin "One Step Simplification" (formula "20")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "9") (term "0,0,0") (ifseqformula "15")) @@ -8409,7 +8409,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -8583,7 +8583,7 @@ (rule "add_literals" (formula "19") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "19")) (rule "allLeft" (formula "20") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "20") (term "1,0,0,0,0,0")) @@ -8907,7 +8907,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "notLeft" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) @@ -9029,7 +9029,7 @@ (rule "qeq_literals" (formula "15") (term "0,1")) (builtin "One Step Simplification" (formula "15")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "16") (term "1,0")) @@ -9358,7 +9358,7 @@ (builtin "One Step Simplification" (formula "20")) (rule "true_left" (formula "20")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "9") (term "1,0")) @@ -9466,7 +9466,7 @@ (rule "qeq_literals" (formula "15") (term "0,1")) (builtin "One Step Simplification" (formula "15")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -9508,14 +9508,14 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "6") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "6") (term "0,0,0") (ifseqformula "10")) (builtin "One Step Simplification" (formula "6")) (rule "true_left" (formula "6")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "5") (term "1")) @@ -10324,7 +10324,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "notLeft" (formula "8")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "8") (term "1")) @@ -10403,7 +10403,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "commute_or_2" (formula "12") (term "0")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) @@ -10658,7 +10658,7 @@ (rule "hideAuxiliaryEq" (formula "11")) (rule "eqSymm" (formula "10")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -10736,7 +10736,7 @@ (builtin "One Step Simplification" (formula "34")) (rule "false_right" (formula "34")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "8") (term "1")) @@ -10852,7 +10852,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "20") (term "1")) (rule "mul_literals" (formula "20") (term "1,1")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "16") (term "1,0,0,0,0")) @@ -10928,7 +10928,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "5") (term "1")) @@ -10961,7 +10961,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "6") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "6") (term "0,0,0") (ifseqformula "11")) @@ -11098,7 +11098,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "commute_or_2" (formula "10") (term "0")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -11255,7 +11255,7 @@ (rule "hideAuxiliaryEq" (formula "13")) (rule "eqSymm" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -11881,7 +11881,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "true_left" (formula "11")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -11970,7 +11970,7 @@ (rule "qeq_literals" (formula "12") (term "0,1")) (builtin "One Step Simplification" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0")) @@ -12484,7 +12484,7 @@ (rule "qeq_literals" (formula "12") (term "0,1")) (builtin "One Step Simplification" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0")) @@ -12572,7 +12572,7 @@ (builtin "One Step Simplification" (formula "37")) (rule "false_right" (formula "37")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) @@ -12644,7 +12644,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) (rule "allLeft" (formula "7") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "7") (term "1")) @@ -12677,7 +12677,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "8") (term "0,0,0") (ifseqformula "13")) @@ -12744,7 +12744,7 @@ (rule "qeq_literals" (formula "20") (term "0,1,0")) (builtin "One Step Simplification" (formula "20")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "16") (term "1,0,0,0,0")) @@ -13247,7 +13247,7 @@ (builtin "One Step Simplification" (formula "35")) (rule "false_right" (formula "35")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "10") (term "1")) @@ -13320,7 +13320,7 @@ (rule "leq_literals" (formula "11") (term "0,1")) (builtin "One Step Simplification" (formula "11")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) @@ -13567,7 +13567,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "10") (term "0,0,0") (ifseqformula "16")) @@ -13585,7 +13585,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "9") (term "1")) @@ -13707,7 +13707,7 @@ (rule "qeq_literals" (formula "22") (term "0,1,0,0,0,0")) (builtin "One Step Simplification" (formula "22")) (rule "allLeft" (formula "23") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "23") (term "1,0,0,0,0,0")) @@ -14896,7 +14896,7 @@ (rule "qeq_literals" (formula "13") (term "0,1")) (builtin "One Step Simplification" (formula "13")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "14") (term "1")) @@ -14933,7 +14933,7 @@ (rule "hideAuxiliaryEq" (formula "15")) (rule "eqSymm" (formula "14")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -15130,7 +15130,7 @@ (rule "add_literals" (formula "19") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "19")) (rule "allLeft" (formula "20") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "20") (term "1,0,0,0,0,0")) @@ -15180,7 +15180,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "9") (term "0,0,0") (ifseqformula "15")) @@ -15198,7 +15198,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "8") (term "1")) @@ -15376,7 +15376,7 @@ (rule "add_literals" (formula "20") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "20")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "21") (term "1,0,0,0,0,0")) @@ -15608,7 +15608,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "notLeft" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "10") (term "1")) @@ -15715,7 +15715,7 @@ (rule "leq_literals" (formula "12") (term "0,1")) (builtin "One Step Simplification" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -15926,7 +15926,7 @@ (rule "applyEqReverse" (formula "27") (term "0,0") (ifseqformula "26")) (rule "hideAuxiliaryEq" (formula "26")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "21") (term "1,0,0,0,0")) @@ -16284,7 +16284,7 @@ (builtin "One Step Simplification" (formula "20")) (rule "true_left" (formula "20")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "9") (term "1")) @@ -16381,7 +16381,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "8") (term "1")) @@ -16423,7 +16423,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "5") (term "1,0")) @@ -16449,7 +16449,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "6") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "6") (term "0,0,0") (ifseqformula "10")) @@ -17261,7 +17261,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "commute_or_2" (formula "11") (term "0")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "9") (term "1")) @@ -17349,7 +17349,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "notLeft" (formula "11")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -17492,7 +17492,7 @@ (rule "replace_known_left" (formula "33") (term "1") (ifseqformula "13")) (builtin "One Step Simplification" (formula "33")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "9") (term "1")) @@ -17650,7 +17650,7 @@ (rule "hideAuxiliaryEq" (formula "11")) (rule "eqSymm" (formula "10")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -17801,7 +17801,7 @@ (rule "add_literals" (formula "16") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "16")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "17") (term "1,0,0,0,0,0")) @@ -17845,7 +17845,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "5") (term "1,0")) @@ -17886,7 +17886,7 @@ (builtin "One Step Simplification" (formula "6")) (rule "true_left" (formula "6")) (rule "allLeft" (formula "6") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "6") (term "0,0,0") (ifseqformula "11")) @@ -17965,7 +17965,7 @@ (rule "replace_known_right" (formula "34") (term "0,0,0") (ifseqformula "28")) (builtin "One Step Simplification" (formula "34")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -18071,7 +18071,7 @@ (rule "hideAuxiliaryEq" (formula "13")) (rule "eqSymm" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0")) @@ -18810,7 +18810,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "9") (term "1,0")) @@ -18860,7 +18860,7 @@ (rule "leq_literals" (formula "11") (term "0,1")) (builtin "One Step Simplification" (formula "11")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "12") (term "1")) @@ -19505,7 +19505,7 @@ (rule "leq_literals" (formula "12") (term "0,1")) (builtin "One Step Simplification" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0")) @@ -19593,7 +19593,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "10") (term "1")) @@ -19676,14 +19676,14 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "8") (term "0,0,0") (ifseqformula "13")) (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "7") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "7") (term "1,0")) @@ -19843,7 +19843,7 @@ (rule "add_literals" (formula "20") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "20")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "21") (term "1,0,0,0,0,0")) @@ -20288,7 +20288,7 @@ (rule "replace_known_right" (formula "15") (term "0") (ifseqformula "30")) (builtin "One Step Simplification" (formula "15")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "10") (term "1")) @@ -20361,7 +20361,7 @@ (rule "qeq_literals" (formula "11") (term "0,1")) (builtin "One Step Simplification" (formula "11")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) @@ -20576,14 +20576,14 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "10") (term "0,0,0") (ifseqformula "16")) (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "9") (term "1")) @@ -20703,7 +20703,7 @@ (rule "leq_literals" (formula "21") (term "0,1,0,0,0,0")) (builtin "One Step Simplification" (formula "21")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "22") (term "1,0,0,0,0,0")) @@ -21790,7 +21790,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "notLeft" (formula "11")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -21881,7 +21881,7 @@ (rule "leq_literals" (formula "13") (term "0,1")) (builtin "One Step Simplification" (formula "13")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "14") (term "1")) @@ -22067,7 +22067,7 @@ (rule "add_literals" (formula "19") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "19")) (rule "allLeft" (formula "20") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "20") (term "1,0,0,0,0,0")) @@ -22117,7 +22117,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "9") (term "0,0,0") (ifseqformula "15")) @@ -22131,7 +22131,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -22282,7 +22282,7 @@ (rule "qeq_literals" (formula "24") (term "0,1,0")) (builtin "One Step Simplification" (formula "24")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "19") (term "1,0,0,0,0")) @@ -22358,7 +22358,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "allLeft" (formula "7") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "7") (term "1")) @@ -22407,7 +22407,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "8") (term "0,0,0") (ifseqformula "14")) @@ -22663,7 +22663,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "notLeft" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) @@ -22785,7 +22785,7 @@ (rule "leq_literals" (formula "15") (term "0,1")) (builtin "One Step Simplification" (formula "15")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "16") (term "1,0")) @@ -23165,7 +23165,7 @@ (rule "qeq_literals" (formula "14") (term "0,1")) (builtin "One Step Simplification" (formula "14")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "11") (term "1")) @@ -23211,7 +23211,7 @@ (builtin "One Step Simplification" (formula "6")) (rule "true_left" (formula "6")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -24085,7 +24085,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "notLeft" (formula "8")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "8") (term "1")) @@ -24156,7 +24156,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) @@ -24353,7 +24353,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "commute_or_2" (formula "12") (term "0")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "9") (term "1,0")) @@ -24466,7 +24466,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "11") (term "1")) @@ -24617,7 +24617,7 @@ (rule "add_literals" (formula "16") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "16")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "17") (term "1,0,0,0,0")) @@ -24654,7 +24654,7 @@ (rule "add_zero_left" (formula "17") (term "1,0,1,0")) (builtin "One Step Simplification" (formula "17")) (rule "allLeft" (formula "6") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "6") (term "0,0,0") (ifseqformula "11")) @@ -24683,7 +24683,7 @@ (builtin "One Step Simplification" (formula "6")) (rule "true_left" (formula "6")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "5") (term "1")) @@ -24847,7 +24847,7 @@ (rule "replace_known_right" (formula "36") (term "0,0,0") (ifseqformula "29")) (builtin "One Step Simplification" (formula "36")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -24953,7 +24953,7 @@ (rule "hideAuxiliaryEq" (formula "13")) (rule "eqSymm" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0")) @@ -25085,7 +25085,7 @@ (rule "add_literals" (formula "18") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "18")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "19") (term "1,0,0,0,0")) @@ -25765,7 +25765,7 @@ (rule "leq_literals" (formula "15") (term "0,1")) (builtin "One Step Simplification" (formula "15")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -25843,7 +25843,7 @@ (rule "qeq_literals" (formula "12") (term "0,1")) (builtin "One Step Simplification" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -26330,7 +26330,7 @@ (rule "leq_literals" (formula "12") (term "0,1")) (builtin "One Step Simplification" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0")) @@ -26418,7 +26418,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) @@ -26501,14 +26501,14 @@ (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "8") (term "0,0,0") (ifseqformula "13")) (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "7") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "7") (term "1")) @@ -26650,7 +26650,7 @@ (rule "add_literals" (formula "19") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "19")) (rule "allLeft" (formula "20") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "20") (term "1,0,0,0,0,0")) @@ -27113,7 +27113,7 @@ (rule "replace_known_right" (formula "15") (term "0") (ifseqformula "30")) (builtin "One Step Simplification" (formula "15")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "10") (term "1")) @@ -27186,7 +27186,7 @@ (rule "qeq_literals" (formula "11") (term "0,1")) (builtin "One Step Simplification" (formula "11")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) @@ -27399,7 +27399,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "9") (term "1,0")) @@ -27434,7 +27434,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "10") (term "0,0,0") (ifseqformula "16")) @@ -27536,7 +27536,7 @@ (rule "qeq_literals" (formula "22") (term "0,1,0,0,0,0")) (builtin "One Step Simplification" (formula "22")) (rule "allLeft" (formula "23") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "23") (term "1,0,0,0,0,0")) @@ -28660,7 +28660,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "notLeft" (formula "11")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "11") (term "1")) @@ -28813,7 +28813,7 @@ (rule "leq_literals" (formula "13") (term "0,1")) (builtin "One Step Simplification" (formula "13")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "14") (term "1")) @@ -28980,7 +28980,7 @@ (builtin "One Step Simplification" (formula "23")) (rule "true_left" (formula "23")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "19") (term "1,0,0,0,0")) @@ -29059,7 +29059,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -29090,7 +29090,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "9") (term "0,0,0") (ifseqformula "15")) @@ -29222,7 +29222,7 @@ (rule "qeq_literals" (formula "24") (term "0,1,0")) (builtin "One Step Simplification" (formula "24")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "19") (term "1,0,0,0,0,0")) @@ -29297,7 +29297,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "7") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "7") (term "1,0")) @@ -29339,7 +29339,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "8") (term "0,0,0") (ifseqformula "14")) @@ -29533,7 +29533,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "notLeft" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "10") (term "1,0")) @@ -29691,7 +29691,7 @@ (rule "qeq_literals" (formula "15") (term "0,1")) (builtin "One Step Simplification" (formula "15")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "16") (term "1")) @@ -30035,7 +30035,7 @@ (builtin "One Step Simplification" (formula "20")) (rule "true_left" (formula "20")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "9") (term "1,0")) @@ -30143,7 +30143,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -30185,7 +30185,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "true_left" (formula "8")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "5") (term "1,0")) @@ -30211,7 +30211,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "6") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "6") (term "0,0,0") (ifseqformula "10")) @@ -31028,7 +31028,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "commute_or_2" (formula "11") (term "0")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "9") (term "1")) @@ -31116,7 +31116,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "notLeft" (formula "11")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -31289,7 +31289,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "commute_or_2" (formula "11") (term "0")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "9") (term "1,0")) @@ -31417,7 +31417,7 @@ (rule "hideAuxiliaryEq" (formula "11")) (rule "eqSymm" (formula "10")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) @@ -31556,7 +31556,7 @@ (rule "hideAuxiliaryEq" (formula "20")) (rule "eqSymm" (formula "20") (term "0")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "16") (term "1,0,0,0,0")) @@ -31605,7 +31605,7 @@ (rule "add_literals" (formula "17") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "17")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "5") (term "1")) @@ -31657,7 +31657,7 @@ (builtin "One Step Simplification" (formula "6")) (rule "true_left" (formula "6")) (rule "allLeft" (formula "6") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "6") (term "0,0,0") (ifseqformula "11")) @@ -31831,7 +31831,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "commute_or_2" (formula "11") (term "0")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "8") (term "1,0")) @@ -31937,7 +31937,7 @@ (rule "hideAuxiliaryEq" (formula "13")) (rule "eqSymm" (formula "12")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -34614,7 +34614,7 @@ (rule "leq_literals" (formula "13") (term "0,1")) (builtin "One Step Simplification" (formula "13")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "14") (term "1,0")) @@ -34665,7 +34665,7 @@ (rule "hideAuxiliaryEq" (formula "16")) (rule "eqSymm" (formula "15")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) @@ -34705,7 +34705,7 @@ (rule "replace_known_right" (formula "22") (term "0") (ifseqformula "35")) (builtin "One Step Simplification" (formula "22")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "9") (term "1,0")) @@ -34748,7 +34748,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "10") (term "0,0,0") (ifseqformula "15")) @@ -34815,7 +34815,7 @@ (rule "inEqSimp_contradInEq1" (formula "20") (term "1,0") (ifseqformula "29")) (rule "qeq_literals" (formula "20") (term "0,1,0")) (builtin "One Step Simplification" (formula "20")) - (rule "allLeft" (formula "21") (inst "t=int::select(anonIn_heap<>, + (rule "allLeft" (formula "21") (inst "t=select<[int]>(anonIn_heap<>, anonIn_current, IntNode::$data)")) (rule "pullOutSelect" (formula "21") (term "0,0,0") (inst "selectSK=IntNode_next_3")) @@ -34874,7 +34874,7 @@ (builtin "One Step Simplification" (formula "18")) (rule "commute_or_2" (formula "18") (term "0")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "19") (term "1,0,0,0,0,0")) @@ -35240,7 +35240,7 @@ (rule "qeq_literals" (formula "13") (term "0,1")) (builtin "One Step Simplification" (formula "13")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "12") (term "1")) @@ -35272,7 +35272,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "notLeft" (formula "12")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "14") (term "1,0")) @@ -35344,7 +35344,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "9") (term "1")) @@ -35374,7 +35374,7 @@ (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "10") (term "0,0,0") (ifseqformula "15")) @@ -35440,7 +35440,7 @@ (builtin "One Step Simplification" (formula "21")) (rule "applyEqReverse" (formula "22") (term "0,0,0") (ifseqformula "21")) (rule "hideAuxiliaryEq" (formula "21")) - (rule "allLeft" (formula "22") (inst "t=int::select(anonIn_heap<>, + (rule "allLeft" (formula "22") (inst "t=select<[int]>(anonIn_heap<>, anonIn_current, IntNode::$data)")) (rule "pullOutSelect" (formula "22") (term "0,0,0") (inst "selectSK=IntNode_next_4")) @@ -35496,7 +35496,7 @@ (builtin "One Step Simplification" (formula "18")) (rule "commute_or_2" (formula "18") (term "0")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "19") (term "1,0,0,0,0,0")) @@ -35837,7 +35837,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "cnf_rightDist" (formula "7") (term "0,0,0,0,0,1,0,0,0,0")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "12") (term "1")) @@ -35902,7 +35902,7 @@ (rule "qeq_literals" (formula "13") (term "0,1")) (builtin "One Step Simplification" (formula "13")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "14") (term "1")) @@ -35970,7 +35970,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "9") (term "1,0")) @@ -35996,7 +35996,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "10") (term "0,0,0") (ifseqformula "15")) @@ -36061,7 +36061,7 @@ (rule "inEqSimp_contradInEq1" (formula "20") (term "1,0") (ifseqformula "29")) (rule "qeq_literals" (formula "20") (term "0,1,0")) (builtin "One Step Simplification" (formula "20")) - (rule "allLeft" (formula "21") (inst "t=int::select(anonIn_heap<>, + (rule "allLeft" (formula "21") (inst "t=select<[int]>(anonIn_heap<>, anonIn_current, IntNode::$data)")) (rule "pullOutSelect" (formula "21") (term "0,0,0") (inst "selectSK=IntNode_next_3")) @@ -36126,7 +36126,7 @@ (builtin "One Step Simplification" (formula "18")) (rule "commute_or_2" (formula "18") (term "0")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "19") (term "1,0,0,0,0,0")) @@ -36462,7 +36462,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "cnf_rightDist" (formula "7") (term "0,0,0,0,1,0,0,0,0,0")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "12") (term "1")) @@ -36527,7 +36527,7 @@ (rule "qeq_literals" (formula "13") (term "0,1")) (builtin "One Step Simplification" (formula "13")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "14") (term "1")) @@ -36587,7 +36587,7 @@ (builtin "One Step Simplification" (formula "22")) (rule "commute_or" (formula "7") (term "0,0,0,0,0,0,0,1,0,0,0,0")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "10") (term "0,0,0") (ifseqformula "15")) @@ -36601,7 +36601,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "9") (term "1")) @@ -36686,7 +36686,7 @@ (rule "inEqSimp_contradInEq1" (formula "20") (term "1,0") (ifseqformula "29")) (rule "qeq_literals" (formula "20") (term "0,1,0")) (builtin "One Step Simplification" (formula "20")) - (rule "allLeft" (formula "21") (inst "t=int::select(anonIn_heap<>, + (rule "allLeft" (formula "21") (inst "t=select<[int]>(anonIn_heap<>, anonIn_current, IntNode::$data)")) (rule "pullOutSelect" (formula "21") (term "0,0,0") (inst "selectSK=IntNode_next_3")) @@ -36751,7 +36751,7 @@ (rule "leq_literals" (formula "16") (term "0,1")) (builtin "One Step Simplification" (formula "16")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "19") (term "1,0,0,0,0")) @@ -42413,7 +42413,7 @@ (rule "commute_or" (formula "8") (term "0,1,1,0")) (rule "shift_paren_or" (formula "8") (term "0,1,0,1,0")) (rule "ifthenelse_split" (formula "4") (term "0")) - (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ boolean::select(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) TRUE" + (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ select<[boolean]>(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) TRUE" (rule "andLeft" (formula "4")) (rule "notLeft" (formula "4")) (rule "applyEqReverse" (formula "35") (term "1") (ifseqformula "5")) @@ -42913,7 +42913,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) @@ -43334,7 +43334,7 @@ ) ) ) - (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ boolean::select(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) FALSE" + (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ select<[boolean]>(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) FALSE" (rule "applyEqReverse" (formula "34") (term "1") (ifseqformula "4")) (rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "4")) (rule "hideAuxiliaryEq" (formula "4")) @@ -44573,7 +44573,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -45248,7 +45248,7 @@ (rule "shift_paren_or" (formula "21") (term "0")) (rule "commute_or" (formula "20") (term "0,0")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -45751,7 +45751,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -46227,7 +46227,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -46503,7 +46503,7 @@ (rule "shift_paren_or" (formula "16") (term "0,1,0,1,0")) (rule "commute_or_2" (formula "8") (term "0,0,1,0,1,0")) (rule "ifthenelse_split" (formula "4") (term "0")) - (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ boolean::select(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) TRUE" + (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ select<[boolean]>(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) TRUE" (rule "andLeft" (formula "4")) (rule "notLeft" (formula "4")) (rule "applyEqReverse" (formula "36") (term "1") (ifseqformula "5")) @@ -47001,7 +47001,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -47470,7 +47470,7 @@ ) ) ) - (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ boolean::select(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) FALSE" + (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ select<[boolean]>(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) FALSE" (rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "4")) (rule "applyEqReverse" (formula "35") (term "1") (ifseqformula "4")) (rule "hideAuxiliaryEq" (formula "4")) @@ -48701,7 +48701,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) @@ -49302,7 +49302,7 @@ (rule "commute_or" (formula "8") (term "0,0")) (rule "commute_or_2" (formula "9") (term "0,0,0,0")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -49795,7 +49795,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -50237,7 +50237,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) @@ -50607,7 +50607,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "10") (term "0,0,0,1,0")) (rule "mul_literals" (formula "10") (term "1,0,0,0,1,0")) (rule "ifthenelse_split" (formula "4") (term "0")) - (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ boolean::select(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) TRUE" + (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ select<[boolean]>(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) TRUE" (rule "andLeft" (formula "4")) (rule "notLeft" (formula "4")) (rule "applyEqReverse" (formula "37") (term "1") (ifseqformula "5")) @@ -51008,7 +51008,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -51433,7 +51433,7 @@ ) ) ) - (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ boolean::select(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) FALSE" + (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ select<[boolean]>(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) FALSE" (rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "4")) (rule "applyEqReverse" (formula "36") (term "1") (ifseqformula "4")) (rule "hideAuxiliaryEq" (formula "4")) @@ -52359,7 +52359,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -52843,7 +52843,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -53548,7 +53548,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -54223,7 +54223,7 @@ (rule "shift_paren_or" (formula "21") (term "0")) (rule "commute_or" (formula "20") (term "0,0")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -54573,7 +54573,7 @@ (rule "polySimp_mulLiterals" (formula "11") (term "1,1,1")) (rule "polySimp_elimOne" (formula "11") (term "1,1,1")) (rule "ifthenelse_split" (formula "4") (term "0")) - (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ boolean::select(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) TRUE" + (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ select<[boolean]>(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) TRUE" (rule "andLeft" (formula "4")) (rule "notLeft" (formula "4")) (rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "5")) @@ -55245,7 +55245,7 @@ ) ) ) - (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ boolean::select(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) FALSE" + (branch " ¬f_0 = java.lang.Object::#$created ∧ ( ¬ select<[boolean]>(heap, null, java.lang.Object::#$created) = TRUE ∨ ¬f_0 = java.lang.Object::#$created) FALSE" (rule "applyEqReverse" (formula "37") (term "1") (ifseqformula "4")) (rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "4")) (rule "hideAuxiliaryEq" (formula "4")) @@ -56215,7 +56215,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) @@ -56654,7 +56654,7 @@ (rule "commute_or" (formula "8") (term "0,0")) (rule "commute_or_2" (formula "9") (term "0,0,0,0")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) @@ -57361,7 +57361,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) @@ -57964,7 +57964,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(anonIn_heap<>, + select<[int]>(anonIn_heap<>, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) diff --git a/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopContract()).JML normal_behavior operation contract.0.proof b/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopContract()).JML normal_behavior operation contract.0.proof index 911459e00db..69c9bf37f85 100644 --- a/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopContract()).JML normal_behavior operation contract.0.proof +++ b/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopContract()).JML normal_behavior operation contract.0.proof @@ -1609,7 +1609,7 @@ (rule "polySimp_mulLiterals" (formula "2") (term "0")) (rule "polySimp_elimOne" (formula "2") (term "0")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "25") (term "1")) (rule "polySimp_mulComm0" (formula "25") (term "1,0,1")) (rule "polySimp_rightDist" (formula "25") (term "1,0,1")) @@ -1745,7 +1745,7 @@ (rule "commute_and_2" (formula "2") (term "0,0,0,0")) (rule "commute_and" (formula "2") (term "0,0,0,0,0")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "27") (term "1,0")) (rule "polySimp_mulComm0" (formula "27") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "27") (term "1,0,1,0")) @@ -1885,7 +1885,7 @@ (builtin "One Step Simplification" (formula "27")) (rule "true_left" (formula "27")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1,0")) @@ -1935,7 +1935,7 @@ (rule "replace_known_left" (formula "29") (term "0,1,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "29")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "14") (term "1")) (rule "polySimp_mulComm0" (formula "14") (term "1,0,1")) (rule "polySimp_rightDist" (formula "14") (term "1,0,1")) @@ -1998,12 +1998,12 @@ (builtin "One Step Simplification" (formula "29")) (rule "true_left" (formula "29")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "29") (term "0,0,0") (ifseqformula "34")) (builtin "One Step Simplification" (formula "29")) (rule "true_left" (formula "29")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "28") (term "1,0")) (rule "polySimp_mulComm0" (formula "28") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "28") (term "1,0,1,0")) @@ -2079,7 +2079,7 @@ (rule "add_literals" (formula "17") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "17")) (rule "allLeft" (formula "18") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "18") (term "1,0,0,0,0,0")) (rule "polySimp_mulComm0" (formula "18") (term "1,0,1,0,0,0,0,0")) (rule "polySimp_rightDist" (formula "18") (term "1,0,1,0,0,0,0,0")) @@ -2636,7 +2636,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1,0")) @@ -2689,7 +2689,7 @@ (builtin "One Step Simplification" (formula "15")) (rule "true_left" (formula "15")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "13") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) @@ -4400,7 +4400,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) (rule "polySimp_mulComm0" (formula "13") (term "1,0,1")) (rule "polySimp_rightDist" (formula "13") (term "1,0,1")) @@ -4453,7 +4453,7 @@ (builtin "One Step Simplification" (formula "14")) (rule "true_left" (formula "14")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "14") (term "0,0,0") (ifseqformula "19")) (builtin "One Step Simplification" (formula "14")) (rule "true_left" (formula "14")) @@ -4876,7 +4876,7 @@ (rule "add_literals" (formula "16") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "16")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "17") (term "1,0,0,0,0")) (rule "polySimp_mulComm0" (formula "17") (term "1,0,1,0,0,0,0")) (rule "polySimp_rightDist" (formula "17") (term "1,0,1,0,0,0,0")) @@ -5357,7 +5357,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "12") (term "0,0,0") (ifseqformula "17")) (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) @@ -5372,7 +5372,7 @@ (builtin "One Step Simplification" (formula "14")) (rule "true_left" (formula "14")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) (rule "polySimp_mulComm0" (formula "11") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "11") (term "1,0,1,0")) @@ -5907,7 +5907,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "13") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) @@ -5955,7 +5955,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "12") (term "1")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1")) @@ -6177,7 +6177,7 @@ (builtin "One Step Simplification" (formula "29")) (rule "notLeft" (formula "29")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "30") (term "0,0,0") (ifseqformula "32")) (builtin "One Step Simplification" (formula "30")) (rule "true_left" (formula "30")) @@ -6186,7 +6186,7 @@ (builtin "One Step Simplification" (formula "30")) (rule "true_left" (formula "30")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "29") (term "1,0")) (rule "polySimp_mulComm0" (formula "29") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "29") (term "1,0,1,0")) @@ -6262,7 +6262,7 @@ (rule "add_literals" (formula "18") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "18")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "19") (term "1,0,0,0,0")) (rule "polySimp_mulComm0" (formula "19") (term "1,0,1,0,0,0,0")) (rule "polySimp_rightDist" (formula "19") (term "1,0,1,0,0,0,0")) @@ -6842,7 +6842,7 @@ (builtin "One Step Simplification" (formula "17")) (rule "true_left" (formula "17")) (rule "allLeft" (formula "4") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "35")) (builtin "One Step Simplification" (formula "4")) (rule "inEqSimp_homoInEq0" (formula "4") (term "0")) @@ -7154,7 +7154,7 @@ (rule "true_left" (formula "18")) (rule "commute_or_2" (formula "25") (term "0")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "5") (term "0,0,0") (ifseqformula "36")) (builtin "One Step Simplification" (formula "5")) (rule "inEqSimp_homoInEq1" (formula "5") (term "1")) @@ -7243,7 +7243,7 @@ (rule "add_literals" (formula "17") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "17")) (rule "allLeft" (formula "18") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "18") (term "1,0,0,0,0,0")) (rule "polySimp_mulComm0" (formula "18") (term "1,0,1,0,0,0,0,0")) (rule "polySimp_rightDist" (formula "18") (term "1,0,1,0,0,0,0,0")) @@ -7684,7 +7684,7 @@ (builtin "One Step Simplification" (formula "16")) (rule "true_left" (formula "16")) (rule "allLeft" (formula "4") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "35")) (builtin "One Step Simplification" (formula "4")) (rule "inEqSimp_homoInEq0" (formula "4") (term "0")) @@ -8021,7 +8021,7 @@ (builtin "One Step Simplification" (formula "17")) (rule "true_left" (formula "17")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "5") (term "0,0,0") (ifseqformula "36")) (builtin "One Step Simplification" (formula "5")) (rule "inEqSimp_homoInEq1" (formula "5") (term "1")) @@ -8436,7 +8436,7 @@ (rule "polySimp_mulLiterals" (formula "1") (term "0")) (rule "polySimp_elimOne" (formula "1") (term "0")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "25") (term "1")) (rule "polySimp_mulComm0" (formula "25") (term "1,0,1")) (rule "polySimp_rightDist" (formula "25") (term "1,0,1")) @@ -8572,7 +8572,7 @@ (rule "commute_and_2" (formula "1") (term "0,0,0,0")) (rule "commute_and" (formula "1") (term "0,0,0,0,0")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "27") (term "1")) (rule "polySimp_mulComm0" (formula "27") (term "1,0,1")) (rule "polySimp_rightDist" (formula "27") (term "1,0,1")) @@ -10604,7 +10604,7 @@ (builtin "One Step Simplification" (formula "41")) (rule "ifthenelse_negated" (formula "2") (term "0")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1,0")) @@ -10654,7 +10654,7 @@ (rule "replace_known_left" (formula "29") (term "0,1,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "29")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "14") (term "1,0")) (rule "polySimp_mulComm0" (formula "14") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "14") (term "1,0,1,0")) @@ -10721,12 +10721,12 @@ (builtin "One Step Simplification" (formula "29")) (rule "true_left" (formula "29")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "29") (term "0,0,0") (ifseqformula "34")) (builtin "One Step Simplification" (formula "29")) (rule "true_left" (formula "29")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1")) (rule "polySimp_mulComm0" (formula "28") (term "1,0,1")) (rule "polySimp_rightDist" (formula "28") (term "1,0,1")) @@ -10796,7 +10796,7 @@ (rule "add_literals" (formula "17") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "17")) (rule "allLeft" (formula "18") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "18") (term "1,0,0,0,0,0")) (rule "polySimp_mulComm0" (formula "18") (term "1,0,1,0,0,0,0,0")) (rule "polySimp_rightDist" (formula "18") (term "1,0,1,0,0,0,0,0")) @@ -11175,7 +11175,7 @@ (builtin "One Step Simplification" (formula "15")) (rule "true_left" (formula "15")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "12") (term "1")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1")) @@ -11203,7 +11203,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "13") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) @@ -12638,7 +12638,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0")) (rule "polySimp_mulComm0" (formula "13") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "13") (term "1,0,1,0")) @@ -12684,7 +12684,7 @@ (builtin "One Step Simplification" (formula "14")) (rule "true_left" (formula "14")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "14") (term "0,0,0") (ifseqformula "19")) (builtin "One Step Simplification" (formula "14")) (rule "true_left" (formula "14")) @@ -13997,7 +13997,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "12") (term "0,0,0") (ifseqformula "17")) (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) @@ -14011,7 +14011,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "true_left" (formula "11")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) (rule "polySimp_mulComm0" (formula "11") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "11") (term "1,0,1,0")) @@ -14823,7 +14823,7 @@ (rule "qeq_literals" (formula "20") (term "0,1")) (builtin "One Step Simplification" (formula "20")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "13") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) @@ -14846,7 +14846,7 @@ (rule "leq_literals" (formula "48") (term "0,1")) (builtin "One Step Simplification" (formula "48")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1,0")) @@ -15363,7 +15363,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1,0,0")) (rule "mul_literals" (formula "1") (term "1,1,0,0")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "30") (term "0,0,0") (ifseqformula "32")) (builtin "One Step Simplification" (formula "30")) (rule "true_left" (formula "30")) @@ -15376,7 +15376,7 @@ (builtin "One Step Simplification" (formula "29")) (rule "notLeft" (formula "29")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "29") (term "1,0")) (rule "polySimp_mulComm0" (formula "29") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "29") (term "1,0,1,0")) @@ -15450,7 +15450,7 @@ (rule "add_literals" (formula "18") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "18")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "19") (term "1,0,0,0,0")) (rule "polySimp_mulComm0" (formula "19") (term "1,0,1,0,0,0,0")) (rule "polySimp_rightDist" (formula "19") (term "1,0,1,0,0,0,0")) @@ -15776,7 +15776,7 @@ (builtin "One Step Simplification" (formula "17")) (rule "true_left" (formula "17")) (rule "allLeft" (formula "4") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "35")) (builtin "One Step Simplification" (formula "4")) (rule "inEqSimp_homoInEq0" (formula "4") (term "0")) @@ -15842,7 +15842,7 @@ (builtin "One Step Simplification" (formula "18")) (rule "true_left" (formula "18")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "5") (term "0,0,0") (ifseqformula "36")) (builtin "One Step Simplification" (formula "5")) (rule "inEqSimp_homoInEq1" (formula "5") (term "1")) @@ -16191,7 +16191,7 @@ (builtin "One Step Simplification" (formula "16")) (rule "true_left" (formula "16")) (rule "allLeft" (formula "4") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "35")) (builtin "One Step Simplification" (formula "4")) (rule "inEqSimp_homoInEq0" (formula "4") (term "0")) @@ -16253,7 +16253,7 @@ (builtin "One Step Simplification" (formula "17")) (rule "true_left" (formula "17")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "5") (term "0,0,0") (ifseqformula "36")) (builtin "One Step Simplification" (formula "5")) (rule "inEqSimp_homoInEq0" (formula "5") (term "0")) @@ -16308,12 +16308,12 @@ (builtin "One Step Simplification" (formula "29")) (rule "true_left" (formula "29")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "29") (term "0,0,0") (ifseqformula "34")) (builtin "One Step Simplification" (formula "29")) (rule "true_left" (formula "29")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1")) (rule "polySimp_mulComm0" (formula "28") (term "1,0,1")) (rule "polySimp_rightDist" (formula "28") (term "1,0,1")) @@ -16391,7 +16391,7 @@ (rule "add_literals" (formula "17") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "17")) (rule "allLeft" (formula "18") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "18") (term "1,0,0,0,0,0")) (rule "polySimp_mulComm0" (formula "18") (term "1,0,1,0,0,0,0,0")) (rule "polySimp_rightDist" (formula "18") (term "1,0,1,0,0,0,0,0")) @@ -16752,7 +16752,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "13") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) @@ -16780,7 +16780,7 @@ (rule "leq_literals" (formula "20") (term "0,1")) (builtin "One Step Simplification" (formula "20")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1,0")) @@ -18225,7 +18225,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0")) (rule "polySimp_mulComm0" (formula "13") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "13") (term "1,0,1,0")) @@ -18253,7 +18253,7 @@ (builtin "One Step Simplification" (formula "14")) (rule "true_left" (formula "14")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "14") (term "0,0,0") (ifseqformula "19")) (builtin "One Step Simplification" (formula "14")) (rule "true_left" (formula "14")) @@ -19608,7 +19608,7 @@ (rule "qeq_literals" (formula "49") (term "0,1")) (builtin "One Step Simplification" (formula "49")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "1,0")) (rule "polySimp_mulComm0" (formula "11") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "11") (term "1,0,1,0")) @@ -19636,7 +19636,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "12") (term "0,0,0") (ifseqformula "17")) (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) @@ -20407,7 +20407,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "13") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) @@ -20416,7 +20416,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1,0")) @@ -20956,12 +20956,12 @@ (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1,0,0")) (rule "mul_literals" (formula "1") (term "1,1,0,0")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "typeEqDerived" (formula "30") (term "0,0,0") (ifseqformula "32")) (builtin "One Step Simplification" (formula "30")) (rule "true_left" (formula "30")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "29") (term "1,0")) (rule "polySimp_mulComm0" (formula "29") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "29") (term "1,0,1,0")) @@ -21043,7 +21043,7 @@ (rule "add_literals" (formula "18") (term "1,0,1,0,0")) (builtin "One Step Simplification" (formula "18")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "19") (term "1,0,0,0,0")) (rule "polySimp_mulComm0" (formula "19") (term "1,0,1,0,0,0,0")) (rule "polySimp_rightDist" (formula "19") (term "1,0,1,0,0,0,0")) @@ -21367,7 +21367,7 @@ (builtin "One Step Simplification" (formula "17")) (rule "true_left" (formula "17")) (rule "allLeft" (formula "4") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "35")) (builtin "One Step Simplification" (formula "4")) (rule "inEqSimp_homoInEq0" (formula "4") (term "0")) @@ -21437,7 +21437,7 @@ (builtin "One Step Simplification" (formula "18")) (rule "true_left" (formula "18")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "5") (term "0,0,0") (ifseqformula "36")) (builtin "One Step Simplification" (formula "5")) (rule "inEqSimp_homoInEq0" (formula "5") (term "0")) @@ -21787,7 +21787,7 @@ (builtin "One Step Simplification" (formula "16")) (rule "true_left" (formula "16")) (rule "allLeft" (formula "4") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "4") (term "0,0,0") (ifseqformula "35")) (builtin "One Step Simplification" (formula "4")) (rule "inEqSimp_homoInEq0" (formula "4") (term "0")) @@ -21849,7 +21849,7 @@ (builtin "One Step Simplification" (formula "17")) (rule "true_left" (formula "17")) (rule "allLeft" (formula "5") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "5") (term "0,0,0") (ifseqformula "36")) (builtin "One Step Simplification" (formula "5")) (rule "inEqSimp_homoInEq0" (formula "5") (term "0")) diff --git a/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopInvariant()).JML normal_behavior operation contract.0.proof b/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopInvariant()).JML normal_behavior operation contract.0.proof index b7c2d600123..ac64a579c51 100644 --- a/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopInvariant()).JML normal_behavior operation contract.0.proof +++ b/key.ui/examples/heap/block_loop_contracts/List/IntLinkedList(IntLinkedList__mapIncrement_loopInvariant()).JML normal_behavior operation contract.0.proof @@ -952,7 +952,7 @@ (rule "replace_known_left" (formula "26") (term "1") (ifseqformula "15")) (builtin "One Step Simplification" (formula "26")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "11") (term "1")) (rule "polySimp_mulComm0" (formula "11") (term "1,0,1")) (rule "polySimp_rightDist" (formula "11") (term "1,0,1")) @@ -1115,7 +1115,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "notLeft" (formula "13")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "16") (term "1")) (rule "polySimp_mulComm0" (formula "16") (term "1,0,1")) (rule "polySimp_rightDist" (formula "16") (term "1,0,1")) @@ -1224,7 +1224,7 @@ (rule "qeq_literals" (formula "25") (term "0,1,0")) (builtin "One Step Simplification" (formula "25")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "21") (term "1,0,0,0,0")) (rule "polySimp_mulComm0" (formula "21") (term "1,0,1,0,0,0,0")) (rule "polySimp_rightDist" (formula "21") (term "1,0,1,0,0,0,0")) @@ -3423,7 +3423,7 @@ (builtin "One Step Simplification" (formula "44")) (rule "shift_paren_or" (formula "34") (term "0,0,0,0,0")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "17") (term "0,0,0") (ifseqformula "26")) (builtin "One Step Simplification" (formula "17")) (rule "inEqSimp_homoInEq1" (formula "17") (term "1")) @@ -4360,7 +4360,7 @@ (builtin "One Step Simplification" (formula "1")) (rule "true_left" (formula "1")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "17") (term "0,0,0") (ifseqformula "26")) (builtin "One Step Simplification" (formula "17")) (rule "inEqSimp_homoInEq0" (formula "17") (term "0")) @@ -7077,7 +7077,7 @@ (rule "leq_literals" (formula "21") (term "0,1")) (builtin "One Step Simplification" (formula "21")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "17") (term "1,0")) (rule "polySimp_mulComm0" (formula "17") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "17") (term "1,0,1,0")) @@ -7136,7 +7136,7 @@ (rule "leq_literals" (formula "18") (term "0,1")) (builtin "One Step Simplification" (formula "18")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "19") (term "1")) (rule "polySimp_mulComm0" (formula "19") (term "1,0,1")) (rule "polySimp_rightDist" (formula "19") (term "1,0,1")) @@ -7215,7 +7215,7 @@ (rule "elementOfSingleton" (formula "38") (term "0,0,0")) (builtin "One Step Simplification" (formula "38")) (rule "allLeft" (formula "39") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "39") (term "1")) (rule "polySimp_mulComm0" (formula "39") (term "1,0,1")) (rule "polySimp_rightDist" (formula "39") (term "1,0,1")) @@ -9288,7 +9288,7 @@ (builtin "One Step Simplification" (formula "27")) (rule "true_left" (formula "27")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "13") (term "0,0,0") (ifseqformula "22")) (builtin "One Step Simplification" (formula "13")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -10798,7 +10798,7 @@ (builtin "One Step Simplification" (formula "43")) (rule "shift_paren_or" (formula "30") (term "0,0,0,0,0")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "13") (term "0,0,0") (ifseqformula "22")) (builtin "One Step Simplification" (formula "13")) (rule "inEqSimp_homoInEq0" (formula "13") (term "0")) @@ -11638,7 +11638,7 @@ (builtin "One Step Simplification" (formula "13")) (rule "true_left" (formula "13")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "13") (term "1,0")) (rule "polySimp_mulComm0" (formula "13") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "13") (term "1,0,1,0")) @@ -11685,7 +11685,7 @@ (rule "leq_literals" (formula "14") (term "0,1")) (builtin "One Step Simplification" (formula "14")) (rule "allLeft" (formula "15") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "15") (term "1")) (rule "polySimp_mulComm0" (formula "15") (term "1,0,1")) (rule "polySimp_rightDist" (formula "15") (term "1,0,1")) @@ -11825,7 +11825,7 @@ (rule "hideAuxiliaryEq" (formula "34")) (rule "eqSymm" (formula "34")) (rule "allLeft" (formula "35") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "35") (term "1,0")) (rule "polySimp_mulComm0" (formula "35") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "35") (term "1,0,1,0")) @@ -13010,7 +13010,7 @@ (rule "commute_and" (formula "33") (term "0,0,1,1,0,0,0,0,0")) (rule "shift_paren_or" (formula "16") (term "0,0,0,0,0")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "27") (term "0,0,0") (ifseqformula "20")) (builtin "One Step Simplification" (formula "27")) (rule "inEqSimp_homoInEq0" (formula "27") (term "0")) @@ -13420,7 +13420,7 @@ (rule "commute_and" (formula "33") (term "0,0,1,1,0,0,0,0,0")) (rule "shift_paren_or" (formula "16") (term "0,0,0,0,0")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "27") (term "0,0,0") (ifseqformula "20")) (builtin "One Step Simplification" (formula "27")) (rule "inEqSimp_homoInEq0" (formula "27") (term "0")) @@ -14689,7 +14689,7 @@ (rule "shift_paren_or" (formula "27") (term "0,0,0,0,0")) (rule "commute_and" (formula "28") (term "0,0,1,1,0,0,0,0,0")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "11") (term "0,0,0") (ifseqformula "20")) (builtin "One Step Simplification" (formula "11")) (rule "inEqSimp_homoInEq0" (formula "11") (term "0")) @@ -15106,7 +15106,7 @@ (rule "commute_and" (formula "29") (term "0,0,1,1,0,0,0,0,0")) (rule "shift_paren_or" (formula "12") (term "0,0,0,0,0")) (rule "allLeft" (formula "23") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "23") (term "0,0,0") (ifseqformula "16")) (builtin "One Step Simplification" (formula "23")) (rule "inEqSimp_homoInEq1" (formula "23") (term "1")) @@ -18800,7 +18800,7 @@ (builtin "One Step Simplification" (formula "29")) (rule "true_left" (formula "29")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "13") (term "0,0,0") (ifseqformula "22")) (builtin "One Step Simplification" (formula "13")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -19488,7 +19488,7 @@ (builtin "One Step Simplification" (formula "29")) (rule "true_left" (formula "29")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "13") (term "0,0,0") (ifseqformula "22")) (builtin "One Step Simplification" (formula "13")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -24925,7 +24925,7 @@ (rule "true_left" (formula "30")) (rule "commute_and" (formula "33") (term "0,0,1,1,0,0,0,0,0")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "13") (term "0,0,0") (ifseqformula "22")) (builtin "One Step Simplification" (formula "13")) (rule "inEqSimp_homoInEq0" (formula "13") (term "0")) @@ -36476,7 +36476,7 @@ (rule "polySimp_elimOne" (formula "27") (term "1,1")) (rule "shift_paren_or" (formula "13") (term "0,0,0,0,0")) (rule "allLeft" (formula "31") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "31") (term "0,0,0") (ifseqformula "17")) (builtin "One Step Simplification" (formula "31")) (rule "inEqSimp_homoInEq1" (formula "31") (term "1")) @@ -36530,7 +36530,7 @@ (rule "mul_literals" (formula "1") (term "1,1,0,0")) (rule "shift_paren_or" (formula "14") (term "0,0,0,0,0")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "29") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "29")) (rule "inEqSimp_homoInEq1" (formula "29") (term "1")) @@ -36883,7 +36883,7 @@ (rule "true_left" (formula "25")) (rule "shift_paren_or" (formula "13") (term "0,0,0,0,0")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "27") (term "0,0,0") (ifseqformula "17")) (builtin "One Step Simplification" (formula "27")) (rule "inEqSimp_homoInEq1" (formula "27") (term "1")) @@ -40487,7 +40487,7 @@ (rule "commute_or_2" (formula "33") (term "0,0,0,0")) (rule "shift_paren_or" (formula "33") (term "0,0,0,0,0")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "17") (term "0,0,0") (ifseqformula "26")) (builtin "One Step Simplification" (formula "17")) (rule "inEqSimp_homoInEq0" (formula "17") (term "0")) @@ -40904,7 +40904,7 @@ (rule "commute_or_2" (formula "33") (term "0,0,0,0")) (rule "shift_paren_or" (formula "33") (term "0,0,0,0,0")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "17") (term "0,0,0") (ifseqformula "26")) (builtin "One Step Simplification" (formula "17")) (rule "inEqSimp_homoInEq1" (formula "17") (term "1")) @@ -41744,7 +41744,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "17") (term "1,0")) (rule "polySimp_mulComm0" (formula "17") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "17") (term "1,0,1,0")) @@ -41790,7 +41790,7 @@ (builtin "One Step Simplification" (formula "17")) (rule "notLeft" (formula "17")) (rule "allLeft" (formula "18") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "18") (term "1,0")) (rule "polySimp_mulComm0" (formula "18") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "18") (term "1,0,1,0")) @@ -42382,7 +42382,7 @@ (rule "shift_paren_or" (formula "29") (term "0,0,0,0,0")) (rule "commute_and" (formula "30") (term "0,0,1,1,0,0,0,0,0")) (rule "allLeft" (formula "13") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "13") (term "0,0,0") (ifseqformula "22")) (builtin "One Step Simplification" (formula "13")) (rule "inEqSimp_homoInEq1" (formula "13") (term "1")) @@ -42808,7 +42808,7 @@ (rule "commute_and" (formula "31") (term "0,0,1,1,0,0,0,0,0")) (rule "shift_paren_or" (formula "14") (term "0,0,0,0,0")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "25") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "25")) (rule "inEqSimp_homoInEq0" (formula "25") (term "0")) @@ -43088,7 +43088,7 @@ (builtin "One Step Simplification" (formula "25")) (rule "notLeft" (formula "25")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "27") (term "1,0")) (rule "polySimp_mulComm0" (formula "27") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "27") (term "1,0,1,0")) @@ -43184,7 +43184,7 @@ (builtin "One Step Simplification" (formula "29")) (rule "eqSymm" (formula "29") (term "1,0,0,0,0")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "25") (term "1,0")) (rule "polySimp_mulComm0" (formula "25") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "25") (term "1,0,1,0")) @@ -44136,7 +44136,7 @@ (builtin "One Step Simplification" (formula "4")) (rule "true_left" (formula "4")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "25") (term "0,0,0") (ifseqformula "19")) (builtin "One Step Simplification" (formula "25")) (rule "inEqSimp_homoInEq0" (formula "25") (term "0")) @@ -44542,7 +44542,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "26") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "26") (term "0,0,0") (ifseqformula "20")) (builtin "One Step Simplification" (formula "26")) (rule "inEqSimp_homoInEq0" (formula "26") (term "0")) @@ -44597,7 +44597,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "26") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "26") (term "0,0,0") (ifseqformula "20")) (builtin "One Step Simplification" (formula "26")) (rule "inEqSimp_homoInEq0" (formula "26") (term "0")) @@ -45273,7 +45273,7 @@ (builtin "One Step Simplification" (formula "1")) (rule "true_left" (formula "1")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "25") (term "0,0,0") (ifseqformula "19")) (builtin "One Step Simplification" (formula "25")) (rule "inEqSimp_homoInEq0" (formula "25") (term "0")) @@ -45675,7 +45675,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "26") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "26") (term "0,0,0") (ifseqformula "20")) (builtin "One Step Simplification" (formula "26")) (rule "inEqSimp_homoInEq1" (formula "26") (term "1")) @@ -45726,7 +45726,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "26") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "26") (term "0,0,0") (ifseqformula "20")) (builtin "One Step Simplification" (formula "26")) (rule "inEqSimp_homoInEq1" (formula "26") (term "1")) @@ -48568,7 +48568,7 @@ (builtin "One Step Simplification" (formula "1")) (rule "true_left" (formula "1")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "21") (term "0,0,0") (ifseqformula "15")) (builtin "One Step Simplification" (formula "21")) (rule "inEqSimp_homoInEq1" (formula "21") (term "1")) @@ -48768,7 +48768,7 @@ (rule "eqSymm" (formula "39")) (rule "applyEq" (formula "39") (term "1") (ifseqformula "25")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "22") (term "0,0,0") (ifseqformula "16")) (builtin "One Step Simplification" (formula "22")) (rule "inEqSimp_homoInEq1" (formula "22") (term "1")) @@ -48811,7 +48811,7 @@ (builtin "One Step Simplification" (formula "36")) (rule "notRight" (formula "36")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "22") (term "0,0,0") (ifseqformula "16")) (builtin "One Step Simplification" (formula "22")) (rule "inEqSimp_homoInEq0" (formula "22") (term "0")) @@ -49782,7 +49782,7 @@ (builtin "One Step Simplification" (formula "1")) (rule "true_left" (formula "1")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "21") (term "0,0,0") (ifseqformula "15")) (builtin "One Step Simplification" (formula "21")) (rule "inEqSimp_homoInEq0" (formula "21") (term "0")) @@ -49978,7 +49978,7 @@ (rule "eqSymm" (formula "40")) (rule "applyEq" (formula "40") (term "1") (ifseqformula "25")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "22") (term "0,0,0") (ifseqformula "16")) (builtin "One Step Simplification" (formula "22")) (rule "inEqSimp_homoInEq0" (formula "22") (term "0")) @@ -50017,7 +50017,7 @@ (builtin "One Step Simplification" (formula "36")) (rule "notRight" (formula "36")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "22") (term "0,0,0") (ifseqformula "16")) (builtin "One Step Simplification" (formula "22")) (rule "inEqSimp_homoInEq1" (formula "22") (term "1")) @@ -53617,7 +53617,7 @@ (rule "commute_and" (formula "31") (term "0,0,1,1,0,0,0,0,0")) (rule "shift_paren_or" (formula "14") (term "0,0,0,0,0")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "25") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "25")) (rule "inEqSimp_homoInEq0" (formula "25") (term "0")) @@ -54028,7 +54028,7 @@ (rule "commute_and" (formula "31") (term "0,0,1,1,0,0,0,0,0")) (rule "shift_paren_or" (formula "14") (term "0,0,0,0,0")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "25") (term "0,0,0") (ifseqformula "18")) (builtin "One Step Simplification" (formula "25")) (rule "inEqSimp_homoInEq1" (formula "25") (term "1")) @@ -54915,7 +54915,7 @@ (builtin "One Step Simplification" (formula "25")) (rule "notLeft" (formula "25")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "25") (term "1,0")) (rule "polySimp_mulComm0" (formula "25") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "25") (term "1,0,1,0")) @@ -55024,7 +55024,7 @@ (builtin "One Step Simplification" (formula "27")) (rule "eqSymm" (formula "27") (term "1,0,0,0")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1")) (rule "polySimp_mulComm0" (formula "28") (term "1,0,1")) (rule "polySimp_rightDist" (formula "28") (term "1,0,1")) @@ -55608,7 +55608,7 @@ (rule "commute_and" (formula "27") (term "0,0,1,1,0,0,0,0,0")) (rule "shift_paren_or" (formula "10") (term "0,0,0,0,0")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "21") (term "0,0,0") (ifseqformula "14")) (builtin "One Step Simplification" (formula "21")) (rule "inEqSimp_homoInEq0" (formula "21") (term "0")) @@ -55822,7 +55822,7 @@ (rule "commute_and" (formula "27") (term "0,0,1,1,0,0,0,0,0")) (rule "shift_paren_or" (formula "10") (term "0,0,0,0,0")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "21") (term "0,0,0") (ifseqformula "14")) (builtin "One Step Simplification" (formula "21")) (rule "inEqSimp_homoInEq1" (formula "21") (term "1")) @@ -56257,7 +56257,7 @@ (builtin "One Step Simplification" (formula "21")) (rule "notLeft" (formula "21")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "21") (term "1")) (rule "polySimp_mulComm0" (formula "21") (term "1,0,1")) (rule "polySimp_rightDist" (formula "21") (term "1,0,1")) @@ -56346,7 +56346,7 @@ (rule "hideAuxiliaryEq" (formula "23")) (rule "eqSymm" (formula "23")) (rule "allLeft" (formula "24") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "24") (term "1")) (rule "polySimp_mulComm0" (formula "24") (term "1,0,1")) (rule "polySimp_rightDist" (formula "24") (term "1,0,1")) @@ -69339,7 +69339,7 @@ (rule "commute_or" (formula "29") (term "0,0")) (rule "commute_or_2" (formula "30") (term "0,0,0,0")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "3") (term "0,0,0") (ifseqformula "24")) (builtin "One Step Simplification" (formula "3")) (rule "inEqSimp_homoInEq0" (formula "3") (term "0")) @@ -69761,7 +69761,7 @@ (rule "applyEqReverse" (formula "47") (term "0") (ifseqformula "7")) (rule "hideAuxiliaryEq" (formula "7")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) (rule "polySimp_mulComm0" (formula "3") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "3") (term "1,0,1,0")) @@ -69803,7 +69803,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "18") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "18") (term "0,0,0") (ifseqformula "27")) (builtin "One Step Simplification" (formula "18")) (rule "inEqSimp_homoInEq0" (formula "18") (term "0")) @@ -70196,7 +70196,7 @@ (rule "commute_or" (formula "29") (term "0,0")) (rule "commute_or_2" (formula "30") (term "0,0,0,0")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "3") (term "0,0,0") (ifseqformula "24")) (builtin "One Step Simplification" (formula "3")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) @@ -70623,7 +70623,7 @@ (rule "applyEqReverse" (formula "49") (term "0") (ifseqformula "7")) (rule "hideAuxiliaryEq" (formula "7")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) (rule "polySimp_mulComm0" (formula "3") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "3") (term "1,0,1,0")) @@ -70667,7 +70667,7 @@ (rule "true_left" (formula "3")) (rule "shift_paren_or" (formula "33") (term "0,0,0,0,0")) (rule "allLeft" (formula "18") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "18") (term "0,0,0") (ifseqformula "27")) (builtin "One Step Simplification" (formula "18")) (rule "inEqSimp_homoInEq0" (formula "18") (term "0")) @@ -71463,7 +71463,7 @@ (rule "applyEqReverse" (formula "49") (term "0") (ifseqformula "7")) (rule "hideAuxiliaryEq" (formula "7")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) (rule "polySimp_mulComm0" (formula "3") (term "1,0,1")) (rule "polySimp_rightDist" (formula "3") (term "1,0,1")) @@ -72316,7 +72316,7 @@ (rule "applyEqReverse" (formula "49") (term "0") (ifseqformula "7")) (rule "hideAuxiliaryEq" (formula "7")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) (rule "polySimp_mulComm0" (formula "3") (term "1,0,1")) (rule "polySimp_rightDist" (formula "3") (term "1,0,1")) @@ -72814,7 +72814,7 @@ (rule "commute_or" (formula "25") (term "0,0")) (rule "commute_or_2" (formula "26") (term "0,0,0,0")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "3") (term "0,0,0") (ifseqformula "20")) (builtin "One Step Simplification" (formula "3")) (rule "inEqSimp_homoInEq1" (formula "3") (term "1")) @@ -73000,7 +73000,7 @@ (rule "applyEqReverse" (formula "41") (term "0") (ifseqformula "5")) (rule "hideAuxiliaryEq" (formula "5")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) (rule "polySimp_mulComm0" (formula "3") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "3") (term "1,0,1,0")) @@ -73125,7 +73125,7 @@ (rule "commute_or" (formula "28") (term "0,0")) (rule "commute_or_2" (formula "29") (term "0,0,0,0")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "14") (term "0,0,0") (ifseqformula "23")) (builtin "One Step Simplification" (formula "14")) (rule "inEqSimp_homoInEq1" (formula "14") (term "1")) @@ -73649,7 +73649,7 @@ (rule "applyEqReverse" (formula "46") (term "0") (ifseqformula "7")) (rule "hideAuxiliaryEq" (formula "7")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) (rule "polySimp_mulComm0" (formula "3") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "3") (term "1,0,1,0")) @@ -73709,7 +73709,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "1") (term "1,0,0")) (rule "mul_literals" (formula "1") (term "1,1,0,0")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) (rule "polySimp_mulComm0" (formula "3") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "3") (term "1,0,1,0")) @@ -74012,7 +74012,7 @@ (rule "commute_or" (formula "25") (term "0,0")) (rule "commute_or_2" (formula "26") (term "0,0,0,0")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "3") (term "0,0,0") (ifseqformula "20")) (builtin "One Step Simplification" (formula "3")) (rule "inEqSimp_homoInEq0" (formula "3") (term "0")) @@ -74286,7 +74286,7 @@ (rule "applyEqReverse" (formula "46") (term "0") (ifseqformula "7")) (rule "hideAuxiliaryEq" (formula "7")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) (rule "polySimp_mulComm0" (formula "3") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "3") (term "1,0,1,0")) @@ -74322,7 +74322,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "notLeft" (formula "3")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "replace_known_left" (formula "14") (term "0,0,0") (ifseqformula "23")) (builtin "One Step Simplification" (formula "14")) (rule "inEqSimp_homoInEq1" (formula "14") (term "1")) @@ -74911,7 +74911,7 @@ (rule "applyEqReverse" (formula "48") (term "0") (ifseqformula "7")) (rule "hideAuxiliaryEq" (formula "7")) (rule "allLeft" (formula "3") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, IntLinkedList::$size))")) + select<[int]>(heap, self, IntLinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "3") (term "1,0")) (rule "polySimp_mulComm0" (formula "3") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "3") (term "1,0,1,0")) diff --git a/key.ui/examples/heap/list_seq/LinkedList(LinkedList__remove(java.lang.Object)).JML normal_behavior operation contract.1.proof b/key.ui/examples/heap/list_seq/LinkedList(LinkedList__remove(java.lang.Object)).JML normal_behavior operation contract.1.proof index 7bdcdb12c64..f0def5c4090 100644 --- a/key.ui/examples/heap/list_seq/LinkedList(LinkedList__remove(java.lang.Object)).JML normal_behavior operation contract.1.proof +++ b/key.ui/examples/heap/list_seq/LinkedList(LinkedList__remove(java.lang.Object)).JML normal_behavior operation contract.1.proof @@ -465,7 +465,7 @@ (rule "qeq_literals" (formula "14") (term "0,0")) (builtin "One Step Simplification" (formula "14")) (rule "allLeft" (formula "15") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "15") (term "0,0")) (rule "polySimp_mulComm0" (formula "15") (term "1,0,0,0")) (rule "polySimp_rightDist" (formula "15") (term "1,0,0,0")) @@ -520,7 +520,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "9") (term "0,0")) (rule "polySimp_mulComm0" (formula "9") (term "1,0,0,0")) (rule "polySimp_rightDist" (formula "9") (term "1,0,0,0")) @@ -550,7 +550,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "notLeft" (formula "9")) (rule "allLeft" (formula "10") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "typeEqDerived" (formula "10") (term "0,1") (ifseqformula "16")) (builtin "One Step Simplification" (formula "10")) (rule "true_left" (formula "10")) @@ -578,7 +578,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "notLeft" (formula "12")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "12") (term "1,0")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1,0")) @@ -3414,7 +3414,7 @@ (builtin "One Step Simplification" (formula "29")) (rule "true_left" (formula "29")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "29") (term "1,0")) (rule "polySimp_mulComm0" (formula "29") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "29") (term "1,0,1,0")) @@ -3711,7 +3711,7 @@ (builtin "One Step Simplification" (formula "29")) (rule "notLeft" (formula "29")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "29") (term "1,0")) (rule "polySimp_mulComm0" (formula "29") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "29") (term "1,0,1,0")) @@ -4619,7 +4619,7 @@ (rule "qeq_literals" (formula "29") (term "0,0")) (builtin "One Step Simplification" (formula "29")) (rule "allLeft" (formula "37") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "polySimp_homoEq" (formula "37") (term "1,0,0")) (rule "polySimp_mulComm0" (formula "37") (term "1,0,1,0,0")) (rule "polySimp_rightDist" (formula "37") (term "1,0,1,0,0")) @@ -4703,7 +4703,7 @@ (builtin "One Step Simplification" (formula "21")) (rule "notLeft" (formula "21")) (rule "allLeft" (formula "43") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "43") (term "1,0,0")) (rule "eqSymm" (formula "43") (term "0,1,0")) (rule "inEqSimp_homoInEq1" (formula "43") (term "1,0,0,0")) @@ -11881,7 +11881,7 @@ (builtin "One Step Simplification" (formula "34")) (rule "commute_or_2" (formula "34") (term "0,0")) (rule "allLeft" (formula "31") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "polySimp_homoEq" (formula "31") (term "1,0,0")) (rule "polySimp_mulComm0" (formula "31") (term "1,0,1,0,0")) (rule "polySimp_rightDist" (formula "31") (term "1,0,1,0,0")) @@ -11936,7 +11936,7 @@ (builtin "One Step Simplification" (formula "36")) (rule "commute_or_2" (formula "36") (term "0,0")) (rule "allLeft" (formula "37") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "37") (term "1,0,0")) (rule "eqSymm" (formula "37") (term "0,1,0")) (rule "inEqSimp_homoInEq0" (formula "37") (term "1,0,0,0,0")) @@ -12185,7 +12185,7 @@ (builtin "One Step Simplification" (formula "25")) (rule "notLeft" (formula "25")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "25") (term "1,0")) (rule "polySimp_mulComm0" (formula "25") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "25") (term "1,0,1,0")) @@ -12418,7 +12418,7 @@ (builtin "One Step Simplification" (formula "2")) (rule "true_left" (formula "2")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1,0")) (rule "polySimp_mulComm0" (formula "28") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "28") (term "1,0,1,0")) @@ -12664,7 +12664,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "true_left" (formula "11")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "typeEqDerived" (formula "11") (term "0,1") (ifseqformula "17")) (builtin "One Step Simplification" (formula "11")) (rule "true_left" (formula "11")) @@ -12721,7 +12721,7 @@ (rule "qeq_literals" (formula "13") (term "0,0")) (builtin "One Step Simplification" (formula "13")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "14") (term "0,0")) (rule "polySimp_mulComm0" (formula "14") (term "1,0,0,0")) (rule "polySimp_rightDist" (formula "14") (term "1,0,0,0")) @@ -12783,7 +12783,7 @@ (builtin "One Step Simplification" (formula "11")) (rule "notLeft" (formula "11")) (rule "allLeft" (formula "11") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "11") (term "0,0")) (rule "polySimp_mulComm0" (formula "11") (term "1,0,0,0")) (rule "polySimp_rightDist" (formula "11") (term "1,0,0,0")) @@ -12822,7 +12822,7 @@ (builtin "One Step Simplification" (formula "8")) (rule "notLeft" (formula "8")) (rule "allLeft" (formula "8") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq1" (formula "8") (term "1,0")) (rule "polySimp_mulComm0" (formula "8") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "8") (term "1,0,1,0")) @@ -12870,7 +12870,7 @@ (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) (rule "allLeft" (formula "9") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "typeEqDerived" (formula "9") (term "0,1") (ifseqformula "15")) (builtin "One Step Simplification" (formula "9")) (rule "true_left" (formula "9")) @@ -13530,7 +13530,7 @@ (rule "applyEq" (formula "44") (term "0") (ifseqformula "2")) (rule "applyEq" (formula "5") (term "1,0") (ifseqformula "2")) (rule "allLeft" (formula "36") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "replace_known_left" (formula "36") (term "0,1") (ifseqformula "17")) (builtin "One Step Simplification" (formula "36")) (rule "inEqSimp_homoInEq0" (formula "36") (term "0")) @@ -23258,7 +23258,7 @@ (rule "inEqSimp_commuteLeq" (formula "50") (term "0,0,0,0,0,1,0,0,0,0")) (rule "inEqSimp_sepPosMonomial0" (formula "50") (term "1,0,0,0,1,1,1,0,1,0,0,0")) (rule "cut_direct" (formula "50") (term "1,0,0,0,0") (userinteraction)) - (branch "CUT: infiniteUnion{int _var52;}(if ( _var52 >= 0 & 1 + int::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, size) * -1 + _var52 <= 0) then (allFields((Node)(any::seqGet(Seq::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, nodeseq), _var52)))) else ({})) cup allFields(self) = LocSet::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, footprint) TRUE" + (branch "CUT: infiniteUnion{int _var52;}(if ( _var52 >= 0 & 1 + select<[int]>(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, size) * -1 + _var52 <= 0) then (allFields((Node)(any::seqGet(Seq::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, nodeseq), _var52)))) else ({})) cup allFields(self) = LocSet::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, footprint) TRUE" (rule "concrete_and_3" (formula "51") (term "0,0,0,0")) (rule "polySimp_mulComm0" (formula "51") (term "1,1,0,0,0,1,1,1,0,1,0,0,0")) (rule "polySimp_rightDist" (formula "51") (term "1,1,0,0,0,1,1,1,0,1,0,0,0")) @@ -28297,7 +28297,7 @@ (rule "concrete_and_2" (formula "27") (term "0,0")) (rule "concrete_or_2" (formula "27") (term "0")) (rule "allLeft" (formula "34") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "34") (term "0,1,0")) (rule "eqSymm" (formula "34") (term "1,0,0")) (rule "inEqSimp_homoInEq0" (formula "34") (term "1,0,0,0,0")) @@ -32104,7 +32104,7 @@ ) ) ) - (branch "CUT: infiniteUnion{int _var52;}(if ( _var52 >= 0 & 1 + int::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, size) * -1 + _var52 <= 0) then (allFields((Node)(any::seqGet(Seq::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, nodeseq), _var52)))) else ({})) cup allFields(self) = LocSet::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, footprint) FALSE" + (branch "CUT: infiniteUnion{int _var52;}(if ( _var52 >= 0 & 1 + select<[int]>(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, size) * -1 + _var52 <= 0) then (allFields((Node)(any::seqGet(Seq::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, nodeseq), _var52)))) else ({})) cup allFields(self) = LocSet::select(store(store(store(store(store(store(heap, m_0, next, null), self, last, m_0), self, seq, seqConcat(seqSub(self.seq, 0, -1 + i_1), seqSub(self.seq, 1 + i_1, -1 + self.size))), self, nodeseq, seqConcat(seqSub(self.nodeseq, 0, -1 + i_1), seqSub(self.nodeseq, 1 + i_1, -1 + self.size))), self, footprint, self.footprint setMinus allFields(n_0)), self, size, -1 + self.size), self, footprint) FALSE" (rule "hide_right" (formula "51") (userinteraction)) (rule "selectOfStore" (formula "50") (term "1")) (rule "eqClose" (formula "50") (term "0,0,0,1")) @@ -33571,7 +33571,7 @@ (rule "eqClose" (formula "39") (term "0,0,0,0")) (rule "ifthenelse_true_for" (formula "39") (term "0,0,0")) (rule "allLeft" (formula "40") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "40") (term "0,1,0")) (rule "eqSymm" (formula "40") (term "1,0,0")) (rule "inEqSimp_homoInEq0" (formula "40") (term "1,0,0,0,0")) @@ -33671,7 +33671,7 @@ (rule "concrete_or_2" (formula "18")) (rule "notLeft" (formula "18")) (rule "allLeft" (formula "37") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "replace_known_left" (formula "37") (term "0,1") (ifseqformula "47")) (rule "concrete_not_1" (formula "37") (term "1")) (rule "concrete_or_4" (formula "37")) @@ -34296,7 +34296,7 @@ (rule "eqClose" (formula "41") (term "0,0,0,0")) (rule "ifthenelse_true_for" (formula "41") (term "0,0,0")) (rule "allLeft" (formula "42") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "42") (term "0,1,0")) (rule "eqSymm" (formula "42") (term "1,0,0")) (rule "inEqSimp_homoInEq1" (formula "42") (term "1,0,0,0")) @@ -34351,7 +34351,7 @@ (rule "concrete_or_2" (formula "18")) (rule "notLeft" (formula "18")) (rule "allLeft" (formula "37") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "replace_known_left" (formula "37") (term "0,1") (ifseqformula "47")) (rule "concrete_not_1" (formula "37") (term "1")) (rule "concrete_or_4" (formula "37")) @@ -36209,7 +36209,7 @@ (rule "concrete_or_3" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "32") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "32") (term "0,1,0")) (rule "eqSymm" (formula "32") (term "1,0,0")) (rule "inEqSimp_homoInEq0" (formula "32") (term "1,0,0,0,0")) @@ -36362,7 +36362,7 @@ (rule "concrete_or_2" (formula "35")) (rule "notLeft" (formula "35")) (rule "allLeft" (formula "34") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "replace_known_left" (formula "34") (term "0,1") (ifseqformula "43")) (rule "concrete_not_1" (formula "34") (term "1")) (rule "concrete_or_4" (formula "34")) @@ -36843,7 +36843,7 @@ (rule "concrete_or_4" (formula "34") (term "0,0,0")) (rule "commute_or_2" (formula "34") (term "0,0")) (rule "allLeft" (formula "35") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "35") (term "1,0,0")) (rule "eqSymm" (formula "35") (term "0,1,0")) (rule "inEqSimp_homoInEq0" (formula "35") (term "1,0,0,0,0")) @@ -36949,7 +36949,7 @@ (rule "concrete_or_2" (formula "35")) (rule "notLeft" (formula "35")) (rule "allLeft" (formula "34") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "replace_known_left" (formula "34") (term "0,1") (ifseqformula "43")) (rule "concrete_not_1" (formula "34") (term "1")) (rule "concrete_or_4" (formula "34")) @@ -40492,7 +40492,7 @@ (rule "qeq_literals" (formula "27") (term "0,0,0")) (builtin "One Step Simplification" (formula "27")) (rule "allLeft" (formula "34") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "34") (term "1,0,0")) (rule "eqSymm" (formula "34") (term "0,1,0")) (rule "inEqSimp_homoInEq0" (formula "34") (term "1,0,0,0,0")) @@ -40661,7 +40661,7 @@ (builtin "One Step Simplification" (formula "36")) (rule "commute_or_2" (formula "36") (term "0,0")) (rule "allLeft" (formula "37") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "37") (term "0,1,0")) (rule "eqSymm" (formula "37") (term "1,0,0")) (rule "inEqSimp_homoInEq1" (formula "37") (term "1,0,0,0")) @@ -40996,7 +40996,7 @@ (builtin "One Step Simplification" (formula "35")) (rule "commute_or_2" (formula "35") (term "0,0")) (rule "allLeft" (formula "36") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "36") (term "0,1,0")) (rule "eqSymm" (formula "36") (term "1,0,0")) (rule "inEqSimp_homoInEq1" (formula "36") (term "1,0,0,0")) @@ -41629,7 +41629,7 @@ (rule "qeq_literals" (formula "29") (term "0,0")) (builtin "One Step Simplification" (formula "29")) (rule "allLeft" (formula "36") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "36") (term "0,1,0")) (rule "eqSymm" (formula "36") (term "1,0,0")) (rule "inEqSimp_homoInEq0" (formula "36") (term "1,0,0,0,0")) @@ -41967,7 +41967,7 @@ (builtin "One Step Simplification" (formula "33")) (rule "commute_or_2" (formula "33") (term "0,0")) (rule "allLeft" (formula "34") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "34") (term "0,1,0")) (rule "eqSymm" (formula "34") (term "1,0,0")) (rule "inEqSimp_homoInEq1" (formula "34") (term "1,0,0,0")) @@ -45866,7 +45866,7 @@ (rule "concrete_and_2" (formula "41") (term "0,0")) (rule "concrete_or_2" (formula "41") (term "0")) (rule "allLeft" (formula "49") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "49") (term "0,1,0")) (rule "eqSymm" (formula "49") (term "1,0,0")) (rule "inEqSimp_homoInEq0" (formula "49") (term "1,0,0,0,0")) @@ -46297,7 +46297,7 @@ (rule "concrete_and_2" (formula "39") (term "0,0")) (rule "concrete_or_2" (formula "39") (term "0")) (rule "allLeft" (formula "48") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "48") (term "0,1,0")) (rule "eqSymm" (formula "48") (term "1,0,0")) (rule "inEqSimp_homoInEq1" (formula "48") (term "1,0,0,0")) @@ -47359,7 +47359,7 @@ (rule "concrete_and_2" (formula "42") (term "0,0")) (rule "concrete_or_2" (formula "42") (term "0")) (rule "allLeft" (formula "51") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "51") (term "0,1,0")) (rule "eqSymm" (formula "51") (term "1,0,0")) (rule "inEqSimp_homoInEq1" (formula "51") (term "1,0,0,0")) @@ -47629,7 +47629,7 @@ (rule "concrete_and_2" (formula "43") (term "0,0")) (rule "concrete_or_2" (formula "43") (term "0")) (rule "allLeft" (formula "54") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "54") (term "0,1,0")) (rule "eqSymm" (formula "54") (term "1,0,0")) (rule "inEqSimp_homoInEq0" (formula "54") (term "1,0,0,0,0")) @@ -48634,7 +48634,7 @@ (rule "concrete_and_2" (formula "39") (term "1,0,0,0")) (rule "concrete_or_4" (formula "39") (term "0,0,0")) (rule "allLeft" (formula "40") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "40") (term "0,1,0")) (rule "eqSymm" (formula "40") (term "1,0,0")) (rule "inEqSimp_homoInEq1" (formula "40") (term "1,0,0,0")) @@ -50973,7 +50973,7 @@ (rule "concrete_and_2" (formula "40") (term "1,0,0,0")) (rule "concrete_or_4" (formula "40") (term "0,0,0")) (rule "allLeft" (formula "41") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "41") (term "0,1,0")) (rule "eqSymm" (formula "41") (term "1,0,0")) (rule "inEqSimp_homoInEq1" (formula "41") (term "1,0,0,0")) @@ -51932,7 +51932,7 @@ (builtin "One Step Simplification" (formula "35")) (rule "commute_or_2" (formula "35") (term "0,0")) (rule "allLeft" (formula "36") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "36") (term "1,0,0")) (rule "eqSymm" (formula "36") (term "0,1,0")) (rule "inEqSimp_homoInEq0" (formula "36") (term "1,0,0,0,0")) @@ -53039,7 +53039,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "32") (term "0")) (rule "mul_literals" (formula "32") (term "1,0")) (rule "allLeft" (formula "53") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "53") (term "0,0")) (rule "polySimp_mulComm0" (formula "53") (term "1,0,0,0")) (rule "polySimp_rightDist" (formula "53") (term "1,0,0,0")) @@ -53132,7 +53132,7 @@ (rule "concrete_or_4" (formula "39") (term "0,0,0")) (rule "commute_or_2" (formula "39") (term "0,0")) (rule "allLeft" (formula "40") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "40") (term "1,0,0")) (rule "eqSymm" (formula "40") (term "0,1,0")) (rule "inEqSimp_homoInEq1" (formula "40") (term "1,0,0,0")) @@ -54282,7 +54282,7 @@ (rule "concrete_and_2" (formula "30") (term "0,0")) (rule "concrete_or_2" (formula "30") (term "0")) (rule "allLeft" (formula "36") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "36") (term "0,1,0")) (rule "eqSymm" (formula "36") (term "1,0,0")) (rule "inEqSimp_homoInEq1" (formula "36") (term "1,0,0,0")) @@ -54329,7 +54329,7 @@ (rule "concrete_and_2" (formula "26") (term "0,0")) (rule "concrete_or_2" (formula "26") (term "0")) (rule "allLeft" (formula "54") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "inEqSimp_homoInEq0" (formula "54") (term "0,0")) (rule "polySimp_mulComm0" (formula "54") (term "1,0,0,0")) (rule "polySimp_rightDist" (formula "54") (term "1,0,0,0")) @@ -55220,7 +55220,7 @@ (rule "concrete_and_2" (formula "39") (term "0,0")) (rule "concrete_or_2" (formula "39") (term "0")) (rule "allLeft" (formula "40") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "polySimp_homoEq" (formula "40") (term "1,0,0")) (rule "polySimp_mulComm0" (formula "40") (term "1,0,1,0,0")) (rule "polySimp_rightDist" (formula "40") (term "1,0,1,0,0")) @@ -56981,7 +56981,7 @@ (builtin "One Step Simplification" (formula "31")) (rule "commute_or_2" (formula "31") (term "0,0")) (rule "allLeft" (formula "32") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, LinkedList::$size))")) + select<[int]>(heap, self, LinkedList::$size))")) (rule "eqSymm" (formula "32") (term "1,0,0")) (rule "eqSymm" (formula "32") (term "0,1,0")) (rule "inEqSimp_homoInEq0" (formula "32") (term "1,0,0,0,0")) diff --git a/key.ui/examples/heap/quicksort/sort.key.proof.ignore b/key.ui/examples/heap/quicksort/sort.key.proof.ignore index ea9fc24655c..904acf11b63 100644 --- a/key.ui/examples/heap/quicksort/sort.key.proof.ignore +++ b/key.ui/examples/heap/quicksort/sort.key.proof.ignore @@ -12074,7 +12074,7 @@ (rule "add_zero_right" (formula "39") (term "0,0,0,0,0")) (rule "qeq_literals" (formula "39") (term "0,0,0,0")) (builtin "One Step Simplification" (formula "39")) - (rule "allLeft" (formula "42") (inst "t=int::select(heap, array, arr(add(Z(1(#)), to)))")) + (rule "allLeft" (formula "42") (inst "t=select<[int]>(heap, array, arr(add(Z(1(#)), to)))")) (rule "pullOutSelect" (formula "42") (term "0,1") (inst "selectSK=arr_16")) (rule "simplifySelectOfAnonEQ" (formula "42") (ifseqformula "34")) (builtin "One Step Simplification" (formula "42") (ifInst "" (formula "59"))) @@ -12281,7 +12281,7 @@ (builtin "One Step Simplification" (formula "58")) (rule "applyEqReverse" (formula "59") (term "2,0") (ifseqformula "58")) (rule "hideAuxiliaryEq" (formula "58")) - (rule "allLeft" (formula "60") (inst "t=int::select(heap, array, arr(add(Z(1(#)), to)))")) + (rule "allLeft" (formula "60") (inst "t=select<[int]>(heap, array, arr(add(Z(1(#)), to)))")) (rule "pullOutSelect" (formula "60") (term "0,1") (inst "selectSK=arr_24")) (rule "simplifySelectOfAnonEQ" (formula "60") (ifseqformula "54")) (builtin "One Step Simplification" (formula "60") (ifInst "" (formula "67"))) diff --git a/key.ui/examples/heap/verifyThis15_3_DLL/remove.proof b/key.ui/examples/heap/verifyThis15_3_DLL/remove.proof index 3121087b2f4..0bb8a23191a 100644 --- a/key.ui/examples/heap/verifyThis15_3_DLL/remove.proof +++ b/key.ui/examples/heap/verifyThis15_3_DLL/remove.proof @@ -1581,7 +1581,7 @@ (rule "hideAuxiliaryEq" (formula "1")) (rule "eqSymm" (formula "25")) (rule "allLeft" (formula "20") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "20") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "20") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "20") (term "1,0,0")) @@ -2083,7 +2083,7 @@ (builtin "One Step Simplification" (formula "1")) (rule "true_left" (formula "1")) (rule "allLeft" (formula "20") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "20") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "20") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "20") (term "1,0,0")) @@ -3291,7 +3291,7 @@ (builtin "One Step Simplification" (formula "18")) (rule "notLeft" (formula "18")) (rule "allLeft" (formula "24") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "24") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "24") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "24") (term "1,0,0")) @@ -3461,7 +3461,7 @@ (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) (rule "allLeft" (formula "24") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "24") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "24") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "24") (term "1,0,0")) @@ -5690,7 +5690,7 @@ (rule "replace_known_left" (formula "4") (term "0,1,0,1") (ifseqformula "3")) (builtin "One Step Simplification" (formula "4") (ifInst "" (formula "3")) (ifInst "" (formula "3"))) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "27") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "27") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "27") (term "1,0,0")) @@ -5937,7 +5937,7 @@ (rule "inEqSimp_sepPosMonomial1" (formula "14")) (rule "mul_literals" (formula "14") (term "1")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "27") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "27") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "27") (term "1,0,0")) @@ -6776,7 +6776,7 @@ (rule "true_left" (formula "2")) (rule "applyEq" (formula "27") (term "1,0") (ifseqformula "3")) (rule "allLeft" (formula "26") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "26") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "26") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "26") (term "1,0,0")) @@ -7562,7 +7562,7 @@ (rule "leq_literals" (formula "23") (term "0,1")) (builtin "One Step Simplification" (formula "23")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "25") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "25") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "25") (term "1,0,0")) @@ -7746,7 +7746,7 @@ (builtin "One Step Simplification" (formula "17")) (rule "notLeft" (formula "17")) (rule "allLeft" (formula "24") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "24") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "24") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "24") (term "1,0,0")) @@ -8184,7 +8184,7 @@ (rule "leq_literals" (formula "21") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "21")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "22") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "22") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "22") (term "1,0,0")) @@ -9023,7 +9023,7 @@ (rule "leq_literals" (formula "22") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "22")) (rule "allLeft" (formula "23") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "23") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "23") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "23") (term "1,0,0")) @@ -9915,7 +9915,7 @@ (rule "applyEq" (formula "37") (term "0") (ifseqformula "23")) (rule "applyEq" (formula "25") (term "1,0") (ifseqformula "23")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "30") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "30") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "30") (term "1,0,0")) @@ -10054,7 +10054,7 @@ (rule "leq_literals" (formula "35") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "35")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "27") (term "1,1,0,0")) (rule "add_literals" (formula "27") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "27") (term "1")) @@ -10081,7 +10081,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "20") (term "1")) (rule "mul_literals" (formula "20") (term "1,1")) (rule "allLeft" (formula "19") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "19") (term "1")) (rule "polySimp_mulComm0" (formula "19") (term "1,0,1")) (rule "polySimp_rightDist" (formula "19") (term "1,0,1")) @@ -10469,7 +10469,7 @@ (builtin "One Step Simplification" (formula "16")) (rule "notLeft" (formula "16")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "22") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "22") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "22") (term "1,0,0")) @@ -10543,7 +10543,7 @@ (builtin "One Step Simplification" (formula "15")) (rule "notLeft" (formula "15")) (rule "allLeft" (formula "21") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "21") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "21") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "21") (term "1,0,0")) @@ -10927,7 +10927,7 @@ (rule "leq_literals" (formula "31") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "31")) (rule "allLeft" (formula "32") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "32") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "32") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "32") (term "1,0,0")) @@ -11023,7 +11023,7 @@ (rule "qeq_literals" (formula "18") (term "0,1,0")) (builtin "One Step Simplification" (formula "18")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "27") (term "1,1,0,0")) (rule "add_literals" (formula "27") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "27") (term "1")) @@ -11080,7 +11080,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "19") (term "1")) (rule "mul_literals" (formula "19") (term "1,1")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "17") (term "1")) (rule "polySimp_mulComm0" (formula "17") (term "1,0,1")) (rule "polySimp_rightDist" (formula "17") (term "1,0,1")) @@ -11235,7 +11235,7 @@ (rule "leq_literals" (formula "24") (term "0,1")) (builtin "One Step Simplification" (formula "24")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "28") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "28") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1,0,0")) @@ -12160,7 +12160,7 @@ (builtin "One Step Simplification" (formula "18")) (rule "notLeft" (formula "18")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "28") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "28") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1,0,0")) @@ -12313,7 +12313,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "29") (term "1")) (rule "mul_literals" (formula "29") (term "1,1")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "17") (term "1")) (rule "polySimp_mulComm0" (formula "17") (term "1,0,1")) (rule "polySimp_rightDist" (formula "17") (term "1,0,1")) @@ -12362,7 +12362,7 @@ (rule "leq_literals" (formula "37") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "37")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "28") (term "1,1,0,0")) (rule "add_literals" (formula "28") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1")) @@ -13033,7 +13033,7 @@ (rule "leq_literals" (formula "24") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "24")) (rule "allLeft" (formula "25") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "25") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "25") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "25") (term "1,0,0")) @@ -13360,7 +13360,7 @@ (rule "leq_literals" (formula "30") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "30")) (rule "allLeft" (formula "31") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "31") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "31") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "31") (term "1,0,0")) @@ -13563,7 +13563,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "31") (term "1")) (rule "mul_literals" (formula "31") (term "1,1")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "17") (term "1")) (rule "polySimp_mulComm0" (formula "17") (term "1,0,1")) (rule "polySimp_rightDist" (formula "17") (term "1,0,1")) @@ -13579,7 +13579,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "17") (term "1")) (rule "mul_literals" (formula "17") (term "1,1")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "28") (term "1,1,0,0")) (rule "add_literals" (formula "28") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1")) @@ -14372,7 +14372,7 @@ (rule "leq_literals" (formula "23") (term "0,1")) (builtin "One Step Simplification" (formula "23")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "27") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "27") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "27") (term "1,0,0")) @@ -14833,7 +14833,7 @@ (rule "qeq_literals" (formula "24") (term "0,1")) (builtin "One Step Simplification" (formula "24")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "27") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "27") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "27") (term "1,0,0")) @@ -15256,7 +15256,7 @@ (rule "qeq_literals" (formula "21") (term "0,1,0")) (builtin "One Step Simplification" (formula "21")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "22") (term "1")) (rule "polySimp_mulComm0" (formula "22") (term "1,0,1")) (rule "polySimp_rightDist" (formula "22") (term "1,0,1")) @@ -15272,7 +15272,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "22") (term "1")) (rule "mul_literals" (formula "22") (term "1,1")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "30") (term "1,1,0,0")) (rule "add_literals" (formula "30") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "30") (term "1")) @@ -16410,7 +16410,7 @@ (rule "leq_literals" (formula "57") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "57")) (rule "allLeft" (formula "58") (inst "t=add(Z(neglit(2(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "58") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "58") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "58") (term "1,0,0")) @@ -17600,7 +17600,7 @@ (rule "leq_literals" (formula "19") (term "0,1")) (builtin "One Step Simplification" (formula "19")) (rule "allLeft" (formula "23") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "23") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "23") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "23") (term "1,0,0")) diff --git a/key.ui/examples/heap/verifyThis15_3_DLL/unremove.proof b/key.ui/examples/heap/verifyThis15_3_DLL/unremove.proof index b9825464218..cc98f1d6220 100644 --- a/key.ui/examples/heap/verifyThis15_3_DLL/unremove.proof +++ b/key.ui/examples/heap/verifyThis15_3_DLL/unremove.proof @@ -4107,7 +4107,7 @@ (builtin "One Step Simplification" (formula "5")) (rule "true_left" (formula "5")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq0" (formula "14") (term "1,0")) (rule "polySimp_mulComm0" (formula "14") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "14") (term "1,0,1,0")) @@ -4213,7 +4213,7 @@ (builtin "One Step Simplification" (formula "22")) (rule "notLeft" (formula "22")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "28") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "28") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1,0,0")) @@ -4955,7 +4955,7 @@ (rule "commute_or_2" (formula "28") (term "0,0,0")) (rule "commute_or_2" (formula "28") (term "0,0")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq0" (formula "16") (term "1,0")) (rule "polySimp_mulComm0" (formula "16") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "16") (term "1,0,1,0")) @@ -6300,7 +6300,7 @@ (builtin "One Step Simplification" (formula "26")) (rule "true_left" (formula "26")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "16") (term "1")) (rule "polySimp_mulComm0" (formula "16") (term "1,0,1")) (rule "polySimp_rightDist" (formula "16") (term "1,0,1")) @@ -6379,7 +6379,7 @@ (rule "leq_literals" (formula "29") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "29")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "30") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "30") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "30") (term "1,0,0")) @@ -6877,7 +6877,7 @@ (rule "true_left" (formula "8")) (rule "commute_and" (formula "35") (term "0,0")) (rule "allLeft" (formula "29") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "29") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "29") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "29") (term "1,0,0")) @@ -8256,7 +8256,7 @@ (rule "hideAuxiliaryEq" (formula "2")) (rule "applyEq" (formula "21") (term "1,0") (ifseqformula "1")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq0" (formula "12") (term "1,0")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1,0")) @@ -9396,7 +9396,7 @@ (rule "replace_known_right" (formula "12") (term "0") (ifseqformula "32")) (builtin "One Step Simplification" (formula "12")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "17") (term "1")) (rule "polySimp_mulComm0" (formula "17") (term "1,0,1")) (rule "polySimp_rightDist" (formula "17") (term "1,0,1")) @@ -9444,7 +9444,7 @@ (rule "leq_literals" (formula "31") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "31")) (rule "allLeft" (formula "32") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "32") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "32") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "32") (term "1,0,0")) @@ -9655,7 +9655,7 @@ (rule "qeq_literals" (formula "38") (term "0,1,0")) (builtin "One Step Simplification" (formula "38")) (rule "allLeft" (formula "33") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "33") (term "1,1,0,0")) (rule "add_literals" (formula "33") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "33") (term "1")) @@ -9690,7 +9690,7 @@ (rule "leq_literals" (formula "22") (term "0,1")) (builtin "One Step Simplification" (formula "22")) (rule "allLeft" (formula "23") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "23") (term "1")) (rule "polySimp_mulComm0" (formula "23") (term "1,0,1")) (rule "polySimp_rightDist" (formula "23") (term "1,0,1")) @@ -9841,7 +9841,7 @@ (rule "replace_known_right" (formula "11") (term "0") (ifseqformula "30")) (builtin "One Step Simplification" (formula "11")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq0" (formula "16") (term "1,0")) (rule "polySimp_mulComm0" (formula "16") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "16") (term "1,0,1,0")) @@ -10006,7 +10006,7 @@ (builtin "One Step Simplification" (formula "16")) (rule "true_left" (formula "16")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "30") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "30") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "30") (term "1,0,0")) @@ -10575,7 +10575,7 @@ (builtin "One Step Simplification" (formula "22")) (rule "true_left" (formula "22")) (rule "allLeft" (formula "17") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq0" (formula "17") (term "1,0")) (rule "polySimp_mulComm0" (formula "17") (term "1,0,1,0")) (rule "polySimp_rightDist" (formula "17") (term "1,0,1,0")) @@ -10696,7 +10696,7 @@ (rule "leq_literals" (formula "34") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "34")) (rule "allLeft" (formula "35") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "35") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "35") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "35") (term "1,0,0")) @@ -10740,7 +10740,7 @@ (builtin "One Step Simplification" (formula "2")) (rule "true_left" (formula "2")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "30") (term "1,1,0,0")) (rule "add_literals" (formula "30") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "30") (term "1")) @@ -10880,7 +10880,7 @@ (rule "leq_literals" (formula "33") (term "0,1")) (builtin "One Step Simplification" (formula "33")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "22") (term "1")) (rule "polySimp_mulComm0" (formula "22") (term "1,0,1")) (rule "polySimp_rightDist" (formula "22") (term "1,0,1")) @@ -11010,7 +11010,7 @@ (rule "hideAuxiliaryEq" (formula "2")) (rule "eqSymm" (formula "36")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "16") (term "1")) (rule "polySimp_mulComm0" (formula "16") (term "1,0,1")) (rule "polySimp_rightDist" (formula "16") (term "1,0,1")) @@ -11962,7 +11962,7 @@ (builtin "One Step Simplification" (formula "15")) (rule "notLeft" (formula "15")) (rule "allLeft" (formula "15") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "15") (term "1")) (rule "polySimp_mulComm0" (formula "15") (term "1,0,1")) (rule "polySimp_rightDist" (formula "15") (term "1,0,1")) @@ -12120,7 +12120,7 @@ (builtin "One Step Simplification" (formula "26")) (rule "applyEq" (formula "29") (term "0") (ifseqformula "26")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "28") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "28") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1,0,0")) @@ -12283,7 +12283,7 @@ (rule "qeq_literals" (formula "24") (term "0,1,0")) (builtin "One Step Simplification" (formula "24")) (rule "allLeft" (formula "22") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "22") (term "1")) (rule "polySimp_mulComm0" (formula "22") (term "1,0,1")) (rule "polySimp_rightDist" (formula "22") (term "1,0,1")) @@ -12354,7 +12354,7 @@ (builtin "One Step Simplification" (formula "38") (ifInst "" (formula "36"))) (rule "true_left" (formula "38")) (rule "allLeft" (formula "33") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "33") (term "1,1,0,0")) (rule "add_literals" (formula "33") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "33") (term "1")) @@ -12602,7 +12602,7 @@ (builtin "One Step Simplification" (formula "24")) (rule "true_left" (formula "24")) (rule "allLeft" (formula "14") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "14") (term "1")) (rule "polySimp_mulComm0" (formula "14") (term "1,0,1")) (rule "polySimp_rightDist" (formula "14") (term "1,0,1")) @@ -12686,7 +12686,7 @@ (rule "leq_literals" (formula "27") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "27")) (rule "allLeft" (formula "28") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "28") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "28") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "28") (term "1,0,0")) @@ -13099,7 +13099,7 @@ (builtin "One Step Simplification" (formula "15")) (rule "notLeft" (formula "15")) (rule "allLeft" (formula "15") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "15") (term "1")) (rule "polySimp_mulComm0" (formula "15") (term "1,0,1")) (rule "polySimp_rightDist" (formula "15") (term "1,0,1")) @@ -13326,7 +13326,7 @@ (rule "leq_literals" (formula "34") (term "0,1,0,0")) (builtin "One Step Simplification" (formula "34")) (rule "allLeft" (formula "35") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "35") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "35") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "35") (term "1,0,0")) @@ -13462,7 +13462,7 @@ (rule "qeq_literals" (formula "25") (term "0,1,0")) (builtin "One Step Simplification" (formula "25")) (rule "allLeft" (formula "31") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "31") (term "1,1,0,0")) (rule "add_literals" (formula "31") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "31") (term "1")) @@ -13537,7 +13537,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "26") (term "1")) (rule "mul_literals" (formula "26") (term "1,1")) (rule "allLeft" (formula "23") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "23") (term "1")) (rule "polySimp_mulComm0" (formula "23") (term "1,0,1")) (rule "polySimp_rightDist" (formula "23") (term "1,0,1")) @@ -14513,7 +14513,7 @@ (builtin "One Step Simplification" (formula "26")) (rule "true_left" (formula "26")) (rule "allLeft" (formula "16") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "16") (term "1")) (rule "polySimp_mulComm0" (formula "16") (term "1,0,1")) (rule "polySimp_rightDist" (formula "16") (term "1,0,1")) @@ -14579,7 +14579,7 @@ (builtin "One Step Simplification" (formula "16")) (rule "notLeft" (formula "16")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "30") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "30") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "30") (term "1,0,0")) @@ -14773,7 +14773,7 @@ (rule "qeq_literals" (formula "20") (term "0,1,0")) (builtin "One Step Simplification" (formula "20")) (rule "allLeft" (formula "33") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "33") (term "1,1,0,0")) (rule "add_literals" (formula "33") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "33") (term "1")) @@ -14791,7 +14791,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "33") (term "1")) (rule "mul_literals" (formula "33") (term "1,1")) (rule "allLeft" (formula "26") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "26") (term "1")) (rule "polySimp_mulComm0" (formula "26") (term "1,0,1")) (rule "polySimp_rightDist" (formula "26") (term "1,0,1")) @@ -16789,7 +16789,7 @@ (builtin "One Step Simplification" (formula "7")) (rule "true_left" (formula "7")) (rule "allLeft" (formula "23") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "23") (term "1")) (rule "polySimp_mulComm0" (formula "23") (term "1,0,1")) (rule "polySimp_rightDist" (formula "23") (term "1,0,1")) @@ -16864,7 +16864,7 @@ (builtin "One Step Simplification" (formula "25")) (rule "true_left" (formula "25")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "30") (term "1,1,0,0")) (rule "add_literals" (formula "30") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "30") (term "1")) @@ -17013,7 +17013,7 @@ (rule "inEqSimp_sepPosMonomial0" (formula "28") (term "1")) (rule "mul_literals" (formula "28") (term "1,1")) (rule "allLeft" (formula "26") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "26") (term "1")) (rule "polySimp_mulComm0" (formula "26") (term "1,0,1")) (rule "polySimp_rightDist" (formula "26") (term "1,0,1")) @@ -17093,7 +17093,7 @@ (rule "leq_literals" (formula "36") (term "0,1")) (builtin "One Step Simplification" (formula "36")) (rule "allLeft" (formula "37") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "37") (term "1,1,0,0")) (rule "add_literals" (formula "37") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "37") (term "1")) @@ -18478,7 +18478,7 @@ (builtin "One Step Simplification" (formula "24")) (rule "notLeft" (formula "24")) (rule "allLeft" (formula "30") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "30") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "30") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "30") (term "1,0,0")) @@ -18494,7 +18494,7 @@ (rule "leq_literals" (formula "30") (term "1,0,0")) (builtin "One Step Simplification" (formula "30")) (rule "allLeft" (formula "18") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "18") (term "1")) (rule "polySimp_mulComm0" (formula "18") (term "1,0,1")) (rule "polySimp_rightDist" (formula "18") (term "1,0,1")) @@ -18797,7 +18797,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "true_left" (formula "12")) (rule "allLeft" (formula "32") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "polySimp_addAssoc" (formula "32") (term "1,1,0,0")) (rule "add_literals" (formula "32") (term "0,1,1,0,0")) (rule "inEqSimp_homoInEq1" (formula "32") (term "1")) @@ -19039,7 +19039,7 @@ (rule "leq_literals" (formula "38") (term "0,1")) (builtin "One Step Simplification" (formula "38")) (rule "allLeft" (formula "27") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "27") (term "1")) (rule "polySimp_mulComm0" (formula "27") (term "1,0,1")) (rule "polySimp_rightDist" (formula "27") (term "1,0,1")) @@ -20106,7 +20106,7 @@ (rule "commute_or_2" (formula "24") (term "0,0,0")) (rule "commute_or_2" (formula "24") (term "0,0")) (rule "allLeft" (formula "12") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "inEqSimp_homoInEq1" (formula "12") (term "1")) (rule "polySimp_mulComm0" (formula "12") (term "1,0,1")) (rule "polySimp_rightDist" (formula "12") (term "1,0,1")) @@ -20135,7 +20135,7 @@ (builtin "One Step Simplification" (formula "12")) (rule "notLeft" (formula "12")) (rule "allLeft" (formula "24") (inst "t=add(Z(neglit(1(#))), - int::select(heap, self, DoubleLinkedList::$len))")) + select<[int]>(heap, self, DoubleLinkedList::$len))")) (rule "eqSymm" (formula "24") (term "0,0,0,0,0")) (rule "inEqSimp_commuteLeq" (formula "24") (term "1,0")) (rule "inEqSimp_homoInEq1" (formula "24") (term "1,0,0")) diff --git a/key.ui/examples/heap/vstte10_04_Queens/Queens_search.proof b/key.ui/examples/heap/vstte10_04_Queens/Queens_search.proof index 0d20edf139e..b88ab44ee5e 100644 --- a/key.ui/examples/heap/vstte10_04_Queens/Queens_search.proof +++ b/key.ui/examples/heap/vstte10_04_Queens/Queens_search.proof @@ -21,7 +21,7 @@ \problem { wellFormed(heap) & ( inInt(pos) - & ( boolean::select(heap, + & ( select<[boolean]>(heap, board, java.lang.Object::#$created) = TRUE @@ -34,8 +34,8 @@ & lt(x, length(board)) & inInt(x) -> leq(Z(0(#)), - int::select(heap, board, arr(x))) - & lt(int::select(heap, board, arr(x)), + select<[int]>(heap, board, arr(x))) + & lt(select<[int]>(heap, board, arr(x)), length(board))) & \forall int p; \forall int x; @@ -43,19 +43,19 @@ & (lt(x, p) & lt(p, pos)) & inInt(p) & inInt(x) - -> ! int::select(heap, board, arr(x)) - = int::select(heap, board, arr(p)) - & ( ! javaSubInt(int::select(heap, + -> ! select<[int]>(heap, board, arr(x)) + = select<[int]>(heap, board, arr(p)) + & ( ! javaSubInt(select<[int]>(heap, board, arr(x)), - int::select(heap, + select<[int]>(heap, board, arr(p))) = javaSubInt(p, x) - & ! javaSubInt(int::select(heap, + & ! javaSubInt(select<[int]>(heap, board, arr(p)), - int::select(heap, + select<[int]>(heap, board, arr(x))) = javaSubInt(p, x))) @@ -72,10 +72,10 @@ & lt(x, length(board)) & inInt(x) -> leq(Z(0(#)), - int::select(heap, + select<[int]>(heap, board, arr(x))) - & lt(int::select(heap, + & lt(select<[int]>(heap, board, arr(x)), length(board))) @@ -87,23 +87,23 @@ & lt(p, length(board))) & inInt(p) & inInt(x) - -> ! int::select(heap, + -> ! select<[int]>(heap, board, arr(x)) - = int::select(heap, + = select<[int]>(heap, board, arr(p)) - & ( ! javaSubInt(int::select(heap, + & ( ! javaSubInt(select<[int]>(heap, board, arr(x)), - int::select(heap, + select<[int]>(heap, board, arr(p))) = javaSubInt(p, x) - & ! javaSubInt(int::select(heap, + & ! javaSubInt(select<[int]>(heap, board, arr(p)), - int::select(heap, + select<[int]>(heap, board, arr(x))) = javaSubInt(p, x)))) @@ -150,7 +150,7 @@ & inInt(x) -> (int)(any::seqGet(s, x)) - = int::select(heapAtPre, + = select<[int]>(heapAtPre, board, arr(x))))))) & exc = null @@ -163,7 +163,7 @@ javaSubInt(length(board), Z(1(#))))) | !o = null - & ! boolean::select(heapAtPre, + & ! select<[boolean]>(heapAtPre, o, java.lang.Object::#$created) = TRUE @@ -1030,7 +1030,7 @@ (rule "tryEmpty" (formula "16") (term "1,1,0,1,0,1")) (rule "emptyModality" (formula "16") (term "1,1,0,1,0,1")) (builtin "One Step Simplification" (formula "16")) - (builtin "Use Operation Contract" (formula "16") (contract "pre: and(and(leq(Z(0(#)),pos),lt(pos,length(board))),not(equals(board,null))); mby: null; post: and(equiv(equals(result,TRUE),all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,pos)),inInt(x)),and(not(equals(int::select(heap,board,arr(x)),int::select(heap,board,arr(pos)))),and(not(equals(javaSubInt(int::select(heap,board,arr(x)),int::select(heap,board,arr(pos))),javaSubInt(pos,x))),not(equals(javaSubInt(int::select(heap,board,arr(pos)),int::select(heap,board,arr(x))),javaSubInt(pos,x)))))))),equals(exc,null)); mod: empty; termination: diamond")) + (builtin "Use Operation Contract" (formula "16") (contract "pre: and(and(leq(Z(0(#)),pos),lt(pos,length(board))),not(equals(board,null))); mby: null; post: and(equiv(equals(result,TRUE),all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,pos)),inInt(x)),and(not(equals(select<[int]>(heap,board,arr(x)),select<[int]>(heap,board,arr(pos)))),and(not(equals(javaSubInt(select<[int]>(heap,board,arr(x)),select<[int]>(heap,board,arr(pos))),javaSubInt(pos,x))),not(equals(javaSubInt(select<[int]>(heap,board,arr(pos)),select<[int]>(heap,board,arr(x))),javaSubInt(pos,x)))))))),equals(exc,null)); mod: empty; termination: diamond")) (branch " Post" (builtin "One Step Simplification" (formula "16")) (builtin "One Step Simplification" (formula "18")) @@ -1070,7 +1070,7 @@ (rule "variableDeclaration" (formula "20") (term "1,1,1") (newnames "var_1") (userinteraction)) (rule "assignment" (formula "20") (term "1,1,1") (userinteraction)) (builtin "One Step Simplification" (formula "20")) - (builtin "Use Operation Contract" (formula "20") (contract "pre: and(and(and(and(leq(Z(0(#)),pos),lt(pos,length(board))),all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,length(board))),inInt(x)),and(leq(Z(0(#)),int::select(heap,board,arr(x))),lt(int::select(heap,board,arr(x)),length(board)))))),all{p:int}(all{x:int}(imp(and(and(and(leq(Z(0(#)),x),and(lt(x,p),lt(p,pos))),inInt(p)),inInt(x)),and(not(equals(int::select(heap,board,arr(x)),int::select(heap,board,arr(p)))),and(not(equals(javaSubInt(int::select(heap,board,arr(x)),int::select(heap,board,arr(p))),javaSubInt(p,x))),not(equals(javaSubInt(int::select(heap,board,arr(p)),int::select(heap,board,arr(x))),javaSubInt(p,x))))))))),not(equals(board,null))); mby: javaSubInt(length(board),pos); post: and(and(and(all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,length(board))),inInt(x)),and(leq(Z(0(#)),int::select(heap,board,arr(x))),lt(int::select(heap,board,arr(x)),length(board))))),imp(equals(result,TRUE),all{p:int}(all{x:int}(imp(and(and(and(leq(Z(0(#)),x),and(lt(x,p),lt(p,length(board)))),inInt(p)),inInt(x)),and(not(equals(int::select(heap,board,arr(x)),int::select(heap,board,arr(p)))),and(not(equals(javaSubInt(int::select(heap,board,arr(x)),int::select(heap,board,arr(p))),javaSubInt(p,x))),not(equals(javaSubInt(int::select(heap,board,arr(p)),int::select(heap,board,arr(x))),javaSubInt(p,x)))))))))),imp(not(equals(result,TRUE)),not(exist{s:Seq}(and(equals(seqLen(s),length(board)),and(all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,seqLen(s))),inInt(x)),and(leq(Z(0(#)),int::cast(any::seqGet(s,x))),lt(int::cast(any::seqGet(s,x)),seqLen(s))))),and(all{p:int}(all{x:int}(imp(and(and(and(leq(Z(0(#)),x),and(lt(x,p),lt(p,seqLen(s)))),inInt(p)),inInt(x)),and(not(equals(int::cast(any::seqGet(s,x)),int::cast(any::seqGet(s,p)))),and(not(equals(javaSubInt(int::cast(any::seqGet(s,x)),int::cast(any::seqGet(s,p))),javaSubInt(p,x))),not(equals(javaSubInt(int::cast(any::seqGet(s,p)),int::cast(any::seqGet(s,x))),javaSubInt(p,x)))))))),all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,pos)),inInt(x)),equals(int::cast(any::seqGet(s,x)),int::select(heapAtPre,board,arr(x)))))))))))),equals(exc,null)); mod: arrayRange(board,pos,javaSubInt(length(board),Z(1(#)))); termination: diamond")) + (builtin "Use Operation Contract" (formula "20") (contract "pre: and(and(and(and(leq(Z(0(#)),pos),lt(pos,length(board))),all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,length(board))),inInt(x)),and(leq(Z(0(#)),select<[int]>(heap,board,arr(x))),lt(select<[int]>(heap,board,arr(x)),length(board)))))),all{p:int}(all{x:int}(imp(and(and(and(leq(Z(0(#)),x),and(lt(x,p),lt(p,pos))),inInt(p)),inInt(x)),and(not(equals(select<[int]>(heap,board,arr(x)),select<[int]>(heap,board,arr(p)))),and(not(equals(javaSubInt(select<[int]>(heap,board,arr(x)),select<[int]>(heap,board,arr(p))),javaSubInt(p,x))),not(equals(javaSubInt(select<[int]>(heap,board,arr(p)),select<[int]>(heap,board,arr(x))),javaSubInt(p,x))))))))),not(equals(board,null))); mby: javaSubInt(length(board),pos); post: and(and(and(all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,length(board))),inInt(x)),and(leq(Z(0(#)),select<[int]>(heap,board,arr(x))),lt(select<[int]>(heap,board,arr(x)),length(board))))),imp(equals(result,TRUE),all{p:int}(all{x:int}(imp(and(and(and(leq(Z(0(#)),x),and(lt(x,p),lt(p,length(board)))),inInt(p)),inInt(x)),and(not(equals(select<[int]>(heap,board,arr(x)),select<[int]>(heap,board,arr(p)))),and(not(equals(javaSubInt(select<[int]>(heap,board,arr(x)),select<[int]>(heap,board,arr(p))),javaSubInt(p,x))),not(equals(javaSubInt(select<[int]>(heap,board,arr(p)),select<[int]>(heap,board,arr(x))),javaSubInt(p,x)))))))))),imp(not(equals(result,TRUE)),not(exist{s:Seq}(and(equals(seqLen(s),length(board)),and(all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,seqLen(s))),inInt(x)),and(leq(Z(0(#)),int::cast(any::seqGet(s,x))),lt(int::cast(any::seqGet(s,x)),seqLen(s))))),and(all{p:int}(all{x:int}(imp(and(and(and(leq(Z(0(#)),x),and(lt(x,p),lt(p,seqLen(s)))),inInt(p)),inInt(x)),and(not(equals(int::cast(any::seqGet(s,x)),int::cast(any::seqGet(s,p)))),and(not(equals(javaSubInt(int::cast(any::seqGet(s,x)),int::cast(any::seqGet(s,p))),javaSubInt(p,x))),not(equals(javaSubInt(int::cast(any::seqGet(s,p)),int::cast(any::seqGet(s,x))),javaSubInt(p,x)))))))),all{x:int}(imp(and(and(leq(Z(0(#)),x),lt(x,pos)),inInt(x)),equals(int::cast(any::seqGet(s,x)),select<[int]>(heapAtPre,board,arr(x)))))))))))),equals(exc,null)); mod: arrayRange(board,pos,javaSubInt(length(board),Z(1(#)))); termination: diamond")) (branch " Post" (builtin "One Step Simplification" (formula "22")) (rule "assignment" (formula "22") (term "1") (userinteraction)) @@ -1488,7 +1488,7 @@ (rule "nnf_notAnd" (formula "18") (term "1,1,0,0,0,1,1,0,1,0")) (builtin "One Step Simplification" (formula "18")) (rule "cut_direct" (formula "29") (term "0")) - (branch " CUT: int::select(heapAfter_search, board, arr(x_14)) >= 0 TRUE" + (branch " CUT: select<[int]>(heapAfter_search, board, arr(x_14)) >= 0 TRUE" (builtin "One Step Simplification" (formula "30")) (rule "inEqSimp_leqRight" (formula "30")) (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) @@ -2967,7 +2967,7 @@ ) ) ) - (branch " CUT: int::select(heapAfter_search, board, arr(x_14)) >= 0 FALSE" + (branch " CUT: select<[int]>(heapAfter_search, board, arr(x_14)) >= 0 FALSE" (builtin "One Step Simplification" (formula "30")) (rule "false_right" (formula "30")) (rule "inEqSimp_geqRight" (formula "29")) @@ -7469,7 +7469,7 @@ (rule "nnf_notAnd" (formula "18") (term "1,1,0,0,0,1,1,0,1,0")) (builtin "One Step Simplification" (formula "18")) (rule "cut_direct" (formula "29") (term "0")) - (branch " CUT: int::select(heapAfter_search, board, arr(x_16)) >= 0 TRUE" + (branch " CUT: select<[int]>(heapAfter_search, board, arr(x_16)) >= 0 TRUE" (builtin "One Step Simplification" (formula "30")) (rule "inEqSimp_leqRight" (formula "30")) (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) @@ -8584,7 +8584,7 @@ ) ) ) - (branch " CUT: int::select(heapAfter_search, board, arr(x_16)) >= 0 FALSE" + (branch " CUT: select<[int]>(heapAfter_search, board, arr(x_16)) >= 0 FALSE" (builtin "One Step Simplification" (formula "30")) (rule "false_right" (formula "30")) (rule "inEqSimp_geqRight" (formula "29")) diff --git a/key.ui/examples/heap/vstte12_01_Swap/JML normal_behavior operation contract (id 2 - TwoWaySwap__twoWaySort).proof b/key.ui/examples/heap/vstte12_01_Swap/JML normal_behavior operation contract (id 2 - TwoWaySwap__twoWaySort).proof index e11ebb1a2cd..8fe876e7f7f 100644 --- a/key.ui/examples/heap/vstte12_01_Swap/JML normal_behavior operation contract (id 2 - TwoWaySwap__twoWaySort).proof +++ b/key.ui/examples/heap/vstte12_01_Swap/JML normal_behavior operation contract (id 2 - TwoWaySwap__twoWaySort).proof @@ -698,7 +698,7 @@ (rule "mul_literals" (formula "18") (term "1,0,1,0,1")) (rule "polySimp_addComm0" (formula "18") (term "0,1,0,1")) (rule "ifthenelse_split_for" (formula "18")) - (branch " boolean::select(anonHeap_loop, self_1.a, arr(j_1_0)) = TRUE TRUE" + (branch " select<[boolean]>(anonHeap_loop, self_1.a, arr(j_1_0)) = TRUE TRUE" (rule "tryEmpty" (formula "19") (term "1")) (rule "methodCallEmpty" (formula "19") (term "1")) (rule "emptyModality" (formula "19") (term "1")) @@ -968,7 +968,7 @@ (rule "closeTrue" (formula "19")) ) ) - (branch " boolean::select(anonHeap_loop, self_1.a, arr(j_1_0)) = TRUE FALSE" + (branch " select<[boolean]>(anonHeap_loop, self_1.a, arr(j_1_0)) = TRUE FALSE" (builtin "Use Operation Contract" (formula "19") (newnames "heapBefore_swap,exc_3,heapAfter_swap,anonHeap_swap") (contract "JML normal_behavior operation contract [id: 1 / TwoWaySwap::swap]")) (branch "Post (swap)" (builtin "One Step Simplification" (formula "21")) diff --git a/key.ui/examples/heap/vstte12_04_TreeReconstruct/JML behavior operation contract (id 3 - Tree__build).proof b/key.ui/examples/heap/vstte12_04_TreeReconstruct/JML behavior operation contract (id 3 - Tree__build).proof index 442dc0357ce..d7522edc3be 100644 --- a/key.ui/examples/heap/vstte12_04_TreeReconstruct/JML behavior operation contract (id 3 - Tree__build).proof +++ b/key.ui/examples/heap/vstte12_04_TreeReconstruct/JML behavior operation contract (id 3 - Tree__build).proof @@ -3327,11 +3327,11 @@ (builtin "One Step Simplification" (formula "37")) (rule "true_left" (formula "37")) (rule "ifthenelse_split" (formula "39") (term "0")) - (branch " if (self_4.$created = TRUE) then (TRUE) else (boolean::select(anonHeap_build, self_4, $created)) = TRUE TRUE" + (branch " if (self_4.$created = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build, self_4, $created)) = TRUE TRUE" (builtin "One Step Simplification" (formula "40")) (rule "closeTrue" (formula "40")) ) - (branch " if (self_4.$created = TRUE) then (TRUE) else (boolean::select(anonHeap_build, self_4, $created)) = TRUE FALSE" + (branch " if (self_4.$created = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build, self_4, $created)) = TRUE FALSE" (rule "ifthenelse_split" (formula "41") (term "0")) (branch "result_3.$created = TRUE TRUE" (builtin "One Step Simplification" (formula "42")) @@ -3398,7 +3398,7 @@ (builtin "One Step Simplification" (formula "17") (ifInst "" (formula "16"))) (rule "true_left" (formula "17")) (rule "cut_direct" (formula "47") (term "1,0,0")) - (branch "CUT: int::select(anonHeap_build_0, s, p) >= 1 + s.p TRUE" + (branch "CUT: select<[int]>(anonHeap_build_0, s, p) >= 1 + s.p TRUE" (builtin "One Step Simplification" (formula "48")) (rule "cut_direct" (formula "48") (term "0,0")) (branch "CUT: java.lang.Object::$inv(heapAfter_Tree, s) TRUE" @@ -3440,7 +3440,7 @@ (rule "polySimp_mulLiterals" (formula "1") (term "0")) (rule "polySimp_elimOne" (formula "1") (term "0")) (rule "ifthenelse_split" (formula "51") (term "0")) - (branch "int::select(anonHeap_build, s, p) >= 1 + i_3 + s.p TRUE" + (branch "select<[int]>(anonHeap_build, s, p) >= 1 + i_3 + s.p TRUE" (rule "allLeft" (formula "21") (inst "t=i_3")) (rule "polySimp_homoEq" (formula "21") (term "1")) (rule "polySimp_addComm0" (formula "21") (term "0,2,0,1,0,1")) @@ -3488,7 +3488,7 @@ (builtin "One Step Simplification" (formula "21")) (rule "closeFalse" (formula "21")) ) - (branch "int::select(anonHeap_build, s, p) >= 1 + i_3 + s.p FALSE" + (branch "select<[int]>(anonHeap_build, s, p) >= 1 + i_3 + s.p FALSE" (rule "inEqSimp_geqRight" (formula "51")) (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) (rule "polySimp_rightDist" (formula "1") (term "0,1,0,0")) @@ -3521,8 +3521,8 @@ (rule "leq_literals" (formula "3") (term "0")) (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) - (rule "allLeft" (formula "29") (inst "t=add(add(i_3, int::select(heap, s, List::$p)), - mul(int::select(anonHeap_build, s, List::$p), + (rule "allLeft" (formula "29") (inst "t=add(add(i_3, select<[int]>(heap, s, List::$p)), + mul(select<[int]>(anonHeap_build, s, List::$p), Z(neglit(1(#)))))")) (rule "polySimp_homoEq" (formula "29") (term "1")) (rule "polySimp_addComm1" (formula "29") (term "0,1")) @@ -3839,7 +3839,7 @@ ) ) ) - (branch "CUT: int::select(anonHeap_build_0, s, p) >= 1 + s.p FALSE" + (branch "CUT: select<[int]>(anonHeap_build_0, s, p) >= 1 + s.p FALSE" (builtin "One Step Simplification" (formula "48")) (rule "false_right" (formula "48")) (rule "inEqSimp_geqRight" (formula "47")) @@ -3884,11 +3884,11 @@ (builtin "One Step Simplification" (formula "17")) (rule "true_left" (formula "17")) (rule "cut_direct" (formula "25") (term "0,1,0")) - (branch "CUT: boolean::select(anonHeap_build, null, $created) = TRUE TRUE" + (branch "CUT: select<[boolean]>(anonHeap_build, null, $created) = TRUE TRUE" (builtin "One Step Simplification" (formula "26") (ifInst "" (formula "24"))) (rule "true_left" (formula "26")) (rule "cut_direct" (formula "48") (term "1,0,0")) - (branch "CUT: int::select(anonHeap_build_0, s, p) >= 1 + s.p TRUE" + (branch "CUT: select<[int]>(anonHeap_build_0, s, p) >= 1 + s.p TRUE" (builtin "One Step Simplification" (formula "49")) (rule "cut_direct" (formula "49") (term "0,0")) (branch "CUT: java.lang.Object::$inv(heapAfter_Tree, s) TRUE" @@ -3930,7 +3930,7 @@ (rule "polySimp_mulLiterals" (formula "2") (term "0")) (rule "polySimp_elimOne" (formula "2") (term "0")) (rule "ifthenelse_split" (formula "52") (term "0")) - (branch "int::select(anonHeap_build, s, p) >= 1 + i_2 + s.p TRUE" + (branch "select<[int]>(anonHeap_build, s, p) >= 1 + i_2 + s.p TRUE" (rule "allLeft" (formula "21") (inst "t=i_2")) (rule "polySimp_homoEq" (formula "21") (term "1")) (rule "polySimp_addComm0" (formula "21") (term "0,2,0,1,0,1")) @@ -3978,7 +3978,7 @@ (rule "leq_literals" (formula "21")) (rule "closeFalse" (formula "21")) ) - (branch "int::select(anonHeap_build, s, p) >= 1 + i_2 + s.p FALSE" + (branch "select<[int]>(anonHeap_build, s, p) >= 1 + i_2 + s.p FALSE" (rule "inEqSimp_geqRight" (formula "52")) (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) (rule "polySimp_rightDist" (formula "1") (term "0,1,0,0")) @@ -4011,8 +4011,8 @@ (rule "leq_literals" (formula "2") (term "0")) (builtin "One Step Simplification" (formula "2")) (rule "true_left" (formula "2")) - (rule "allLeft" (formula "29") (inst "t=add(add(i_2, int::select(heap, s, List::$p)), - mul(int::select(anonHeap_build, s, List::$p), + (rule "allLeft" (formula "29") (inst "t=add(add(i_2, select<[int]>(heap, s, List::$p)), + mul(select<[int]>(anonHeap_build, s, List::$p), Z(neglit(1(#)))))")) (rule "polySimp_homoEq" (formula "29") (term "1")) (rule "polySimp_addComm1" (formula "29") (term "0,1")) @@ -4117,11 +4117,11 @@ (rule "replace_known_right" (formula "52") (term "0,0,0,2,0") (ifseqformula "50")) (builtin "One Step Simplification" (formula "52") (ifInst "" (formula "50")) (ifInst "" (formula "51"))) (rule "ifthenelse_split" (formula "52") (term "0,0,1,0,0")) - (branch " if (o_4.$created = TRUE) then (TRUE) else (boolean::select(anonHeap_build, o_4, $created)) = TRUE TRUE" + (branch " if (o_4.$created = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build, o_4, $created)) = TRUE TRUE" (builtin "One Step Simplification" (formula "53") (ifInst "" (formula "1"))) (rule "closeTrue" (formula "53")) ) - (branch " if (o_4.$created = TRUE) then (TRUE) else (boolean::select(anonHeap_build, o_4, $created)) = TRUE FALSE" + (branch " if (o_4.$created = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build, o_4, $created)) = TRUE FALSE" (rule "replace_known_right" (formula "53") (term "0,1,0,2,0") (ifseqformula "52")) (builtin "One Step Simplification" (formula "53")) (rule "ifthenelse_negated" (formula "53") (term "2,0")) @@ -4337,7 +4337,7 @@ ) ) ) - (branch "CUT: int::select(anonHeap_build_0, s, p) >= 1 + s.p FALSE" + (branch "CUT: select<[int]>(anonHeap_build_0, s, p) >= 1 + s.p FALSE" (builtin "One Step Simplification" (formula "49")) (rule "false_right" (formula "49")) (rule "inEqSimp_geqRight" (formula "48")) @@ -4373,11 +4373,11 @@ (rule "closeFalse" (formula "23")) ) ) - (branch "CUT: boolean::select(anonHeap_build, null, $created) = TRUE FALSE" + (branch "CUT: select<[boolean]>(anonHeap_build, null, $created) = TRUE FALSE" (builtin "One Step Simplification" (formula "25")) (rule "true_left" (formula "25")) (rule "cut_direct" (formula "48") (term "1,0,0")) - (branch "CUT: int::select(anonHeap_build_0, s, p) >= 1 + s.p TRUE" + (branch "CUT: select<[int]>(anonHeap_build_0, s, p) >= 1 + s.p TRUE" (builtin "One Step Simplification" (formula "49")) (rule "cut_direct" (formula "49") (term "0,0")) (branch "CUT: java.lang.Object::$inv(heapAfter_Tree, s) TRUE" @@ -4419,7 +4419,7 @@ (rule "polySimp_mulLiterals" (formula "1") (term "0")) (rule "polySimp_elimOne" (formula "1") (term "0")) (rule "ifthenelse_split" (formula "52") (term "0")) - (branch "int::select(anonHeap_build, s, p) >= 1 + i_1 + s.p TRUE" + (branch "select<[int]>(anonHeap_build, s, p) >= 1 + i_1 + s.p TRUE" (rule "allLeft" (formula "21") (inst "t=i_1")) (rule "polySimp_homoEq" (formula "21") (term "1")) (rule "polySimp_addComm1" (formula "21") (term "0,1")) @@ -4467,7 +4467,7 @@ (builtin "One Step Simplification" (formula "21")) (rule "closeFalse" (formula "21")) ) - (branch "int::select(anonHeap_build, s, p) >= 1 + i_1 + s.p FALSE" + (branch "select<[int]>(anonHeap_build, s, p) >= 1 + i_1 + s.p FALSE" (rule "inEqSimp_geqRight" (formula "52")) (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) (rule "polySimp_rightDist" (formula "1") (term "0,1,0,0")) @@ -4500,8 +4500,8 @@ (rule "leq_literals" (formula "3") (term "0")) (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) - (rule "allLeft" (formula "29") (inst "t=add(add(i_1, int::select(heap, s, List::$p)), - mul(int::select(anonHeap_build, s, List::$p), + (rule "allLeft" (formula "29") (inst "t=add(add(i_1, select<[int]>(heap, s, List::$p)), + mul(select<[int]>(anonHeap_build, s, List::$p), Z(neglit(1(#)))))")) (rule "polySimp_homoEq" (formula "29") (term "1")) (rule "polySimp_addComm1" (formula "29") (term "0,1")) @@ -4606,7 +4606,7 @@ (rule "replace_known_right" (formula "52") (term "0,0,0,2,0") (ifseqformula "50")) (builtin "One Step Simplification" (formula "52") (ifInst "" (formula "50")) (ifInst "" (formula "51"))) (rule "ifthenelse_split" (formula "52") (term "0")) - (branch " !o_3 = null & ! if ( if (o_3.$created = TRUE) then (TRUE) else (boolean::select(anonHeap_build, o_3, $created)) = TRUE) then (TRUE) else (boolean::select(anonHeap_build_0, o_3, $created)) = TRUE TRUE" + (branch " !o_3 = null & ! if ( if (o_3.$created = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build, o_3, $created)) = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build_0, o_3, $created)) = TRUE TRUE" (rule "andLeft" (formula "1")) (rule "notLeft" (formula "1")) (rule "notLeft" (formula "1")) @@ -4617,7 +4617,7 @@ (builtin "One Step Simplification" (formula "38")) (rule "closeTrue" (formula "38")) ) - (branch " !o_3 = null & ! if ( if (o_3.$created = TRUE) then (TRUE) else (boolean::select(anonHeap_build, o_3, $created)) = TRUE) then (TRUE) else (boolean::select(anonHeap_build_0, o_3, $created)) = TRUE FALSE" + (branch " !o_3 = null & ! if ( if (o_3.$created = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build, o_3, $created)) = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build_0, o_3, $created)) = TRUE FALSE" (rule "ifthenelse_split" (formula "53") (term "0,0,1,0,0")) (branch "o_3.$created = TRUE TRUE" (builtin "One Step Simplification" (formula "54")) @@ -4830,7 +4830,7 @@ ) ) ) - (branch "CUT: int::select(anonHeap_build_0, s, p) >= 1 + s.p FALSE" + (branch "CUT: select<[int]>(anonHeap_build_0, s, p) >= 1 + s.p FALSE" (builtin "One Step Simplification" (formula "49")) (rule "false_right" (formula "49")) (rule "inEqSimp_geqRight" (formula "48")) @@ -4911,7 +4911,7 @@ (rule "replace_known_right" (formula "47") (term "0,1,0") (ifseqformula "37")) (builtin "One Step Simplification" (formula "47")) (rule "cut_direct" (formula "47") (term "1,0,0")) - (branch "CUT: int::select(anonHeap_build_0, s, p) >= 1 + s.p TRUE" + (branch "CUT: select<[int]>(anonHeap_build_0, s, p) >= 1 + s.p TRUE" (builtin "One Step Simplification" (formula "48")) (rule "cut_direct" (formula "48") (term "0,0")) (branch "CUT: java.lang.Object::$inv(heapAfter_Tree, s) TRUE" @@ -4953,7 +4953,7 @@ (rule "polySimp_mulLiterals" (formula "1") (term "0")) (rule "polySimp_elimOne" (formula "1") (term "0")) (rule "ifthenelse_split" (formula "51") (term "0")) - (branch "int::select(anonHeap_build, s, p) >= 1 + i_0 + s.p TRUE" + (branch "select<[int]>(anonHeap_build, s, p) >= 1 + i_0 + s.p TRUE" (rule "allLeft" (formula "21") (inst "t=i_0")) (rule "polySimp_homoEq" (formula "21") (term "1")) (rule "polySimp_addComm0" (formula "21") (term "0,2,0,1,0,1")) @@ -5001,7 +5001,7 @@ (builtin "One Step Simplification" (formula "21")) (rule "closeFalse" (formula "21")) ) - (branch "int::select(anonHeap_build, s, p) >= 1 + i_0 + s.p FALSE" + (branch "select<[int]>(anonHeap_build, s, p) >= 1 + i_0 + s.p FALSE" (rule "inEqSimp_geqRight" (formula "51")) (rule "polySimp_rightDist" (formula "1") (term "1,0,0")) (rule "polySimp_rightDist" (formula "1") (term "0,1,0,0")) @@ -5034,8 +5034,8 @@ (rule "leq_literals" (formula "3") (term "0")) (builtin "One Step Simplification" (formula "3")) (rule "true_left" (formula "3")) - (rule "allLeft" (formula "29") (inst "t=add(add(i_0, int::select(heap, s, List::$p)), - mul(int::select(anonHeap_build, s, List::$p), + (rule "allLeft" (formula "29") (inst "t=add(add(i_0, select<[int]>(heap, s, List::$p)), + mul(select<[int]>(anonHeap_build, s, List::$p), Z(neglit(1(#)))))")) (rule "polySimp_homoEq" (formula "29") (term "1")) (rule "polySimp_addComm1" (formula "29") (term "0,1")) @@ -5140,11 +5140,11 @@ (rule "replace_known_right" (formula "51") (term "0,0,0,2,2,0") (ifseqformula "49")) (builtin "One Step Simplification" (formula "51") (ifInst "" (formula "49")) (ifInst "" (formula "50"))) (rule "ifthenelse_split" (formula "51") (term "0,0,1,0,0")) - (branch " if (o_2.$created = TRUE) then (TRUE) else (boolean::select(anonHeap_build, o_2, $created)) = TRUE TRUE" + (branch " if (o_2.$created = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build, o_2, $created)) = TRUE TRUE" (builtin "One Step Simplification" (formula "52") (ifInst "" (formula "1"))) (rule "closeTrue" (formula "52")) ) - (branch " if (o_2.$created = TRUE) then (TRUE) else (boolean::select(anonHeap_build, o_2, $created)) = TRUE FALSE" + (branch " if (o_2.$created = TRUE) then (TRUE) else (select<[boolean]>(anonHeap_build, o_2, $created)) = TRUE FALSE" (rule "replace_known_right" (formula "52") (term "0,1,0,2,0") (ifseqformula "51")) (builtin "One Step Simplification" (formula "52")) (rule "ifthenelse_negated" (formula "52") (term "2,0")) @@ -5335,7 +5335,7 @@ ) ) ) - (branch "CUT: int::select(anonHeap_build_0, s, p) >= 1 + s.p FALSE" + (branch "CUT: select<[int]>(anonHeap_build_0, s, p) >= 1 + s.p FALSE" (builtin "One Step Simplification" (formula "48")) (rule "false_right" (formula "48")) (rule "inEqSimp_geqRight" (formula "47")) @@ -5900,7 +5900,7 @@ (rule "inEqSimp_sepPosMonomial1" (formula "11") (term "1,0,0")) (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) (rule "polySimp_elimOne" (formula "11") (term "1,1,0,0")) - (rule "allLeft" (formula "11") (inst "t=int::select(heap, s, List::$p)")) + (rule "allLeft" (formula "11") (inst "t=select<[int]>(heap, s, List::$p)")) (rule "cut_direct" (formula "11") (term "1,0")) (branch "CUT: s.p >= null.length TRUE" (builtin "One Step Simplification" (formula "12")) @@ -6075,7 +6075,7 @@ (rule "inEqSimp_sepPosMonomial1" (formula "11") (term "1,0,0")) (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) (rule "polySimp_elimOne" (formula "11") (term "1,1,0,0")) - (rule "allLeft" (formula "11") (inst "t=int::select(heap, s, List::$p)")) + (rule "allLeft" (formula "11") (inst "t=select<[int]>(heap, s, List::$p)")) (rule "cut_direct" (formula "11") (term "1,0")) (branch "CUT: s.p >= null.length TRUE" (builtin "One Step Simplification" (formula "12")) @@ -6271,7 +6271,7 @@ (rule "inEqSimp_sepPosMonomial1" (formula "11") (term "1,0,0")) (rule "polySimp_mulLiterals" (formula "11") (term "1,1,0,0")) (rule "polySimp_elimOne" (formula "11") (term "1,1,0,0")) - (rule "allLeft" (formula "11") (inst "t=int::select(heap, s, List::$p)")) + (rule "allLeft" (formula "11") (inst "t=select<[int]>(heap, s, List::$p)")) (rule "cut_direct" (formula "11") (term "0,0")) (branch "CUT: s.p <= -1 TRUE" (builtin "One Step Simplification" (formula "12")) @@ -6454,7 +6454,7 @@ (rule "add_zero_right" (formula "15") (term "0,0,0,0,0")) (rule "inEqSimp_sepPosMonomial0" (formula "15") (term "0,0,0")) (rule "mul_literals" (formula "15") (term "1,0,0,0")) - (rule "allLeft" (formula "15") (inst "t=int::select(heap, s, List::$p)")) + (rule "allLeft" (formula "15") (inst "t=select<[int]>(heap, s, List::$p)")) (rule "inEqSimp_contradInEq0" (formula "15") (term "1,0") (ifseqformula "1")) (rule "inEqSimp_homoInEq1" (formula "15") (term "0,1,0")) (rule "polySimp_mulComm0" (formula "15") (term "1,0,0,1,0")) @@ -6668,7 +6668,7 @@ (rule "inEqSimp_sepPosMonomial1" (formula "8") (term "1,0,0")) (rule "polySimp_mulLiterals" (formula "8") (term "1,1,0,0")) (rule "polySimp_elimOne" (formula "8") (term "1,1,0,0")) - (rule "allLeft" (formula "8") (inst "t=int::select(heap, s, List::$p)")) + (rule "allLeft" (formula "8") (inst "t=select<[int]>(heap, s, List::$p)")) (rule "cut_direct" (formula "8") (term "1,0")) (branch "CUT: s.p >= null.length TRUE" (builtin "One Step Simplification" (formula "9")) @@ -6804,7 +6804,7 @@ (rule "add_literals" (formula "8") (term "0,0,0,0,0")) (rule "inEqSimp_sepPosMonomial0" (formula "8") (term "0,0,0")) (rule "mul_literals" (formula "8") (term "1,0,0,0")) - (rule "allLeft" (formula "8") (inst "t=int::select(heap, s, List::$p)")) + (rule "allLeft" (formula "8") (inst "t=select<[int]>(heap, s, List::$p)")) (rule "cut_direct" (formula "8") (term "0,0")) (branch "CUT: s.p <= -1 TRUE" (builtin "One Step Simplification" (formula "9")) @@ -6987,7 +6987,7 @@ (rule "add_literals" (formula "12") (term "0,0,0,0,0")) (rule "inEqSimp_sepPosMonomial0" (formula "12") (term "0,0,0")) (rule "mul_literals" (formula "12") (term "1,0,0,0")) - (rule "allLeft" (formula "12") (inst "t=int::select(heap, s, List::$p)")) + (rule "allLeft" (formula "12") (inst "t=select<[int]>(heap, s, List::$p)")) (rule "inEqSimp_contradInEq1" (formula "12") (term "0,0") (ifseqformula "3")) (rule "qeq_literals" (formula "12") (term "0,0,0")) (builtin "One Step Simplification" (formula "12")) diff --git a/key.ui/examples/heap/vstte12_04_TreeReconstruct/JML behavior operation contract (id 4 - Tree__build).proof b/key.ui/examples/heap/vstte12_04_TreeReconstruct/JML behavior operation contract (id 4 - Tree__build).proof index e48e5874558..f7ed1e88497 100644 --- a/key.ui/examples/heap/vstte12_04_TreeReconstruct/JML behavior operation contract (id 4 - Tree__build).proof +++ b/key.ui/examples/heap/vstte12_04_TreeReconstruct/JML behavior operation contract (id 4 - Tree__build).proof @@ -399,7 +399,7 @@ (builtin "One Step Simplification" (formula "27")) (rule "ifthenelse_negated_for" (formula "27")) (rule "ifthenelse_split_for" (formula "27")) - (branch "int::select(anonHeap_build, self_4, p) = array_0.length TRUE" + (branch "select<[int]>(anonHeap_build, self_4, p) = array_0.length TRUE" (rule "applyEq" (formula "22") (term "1,1,0,0") (ifseqformula "1")) (rule "applyEq" (formula "20") (term "0") (ifseqformula "1")) (rule "applyEq" (formula "21") (term "1") (ifseqformula "1")) @@ -503,7 +503,7 @@ (rule "closeFalse" (formula "1")) ) ) - (branch "int::select(anonHeap_build, self_4, p) = array_0.length FALSE" + (branch "select<[int]>(anonHeap_build, self_4, p) = array_0.length FALSE" (rule "methodCallReturn" (formula "28") (term "1")) (rule "assignment" (formula "28") (term "1")) (builtin "One Step Simplification" (formula "28")) diff --git a/key.ui/examples/standard_key/BookExamples/08ProofObligations/Sect8.1.4.key.proof b/key.ui/examples/standard_key/BookExamples/08ProofObligations/Sect8.1.4.key.proof index fca153fb62c..b76538f8a00 100644 --- a/key.ui/examples/standard_key/BookExamples/08ProofObligations/Sect8.1.4.key.proof +++ b/key.ui/examples/standard_key/BookExamples/08ProofObligations/Sect8.1.4.key.proof @@ -60,47 +60,47 @@ \problem { \forall PayCard pc; balanceAtpre(pc) - = int::select(heap, pc, PayCard::$balance) - & lt(add(int::select(heap, self, PayCard::$balance), + = select<[int]>(heap, pc, PayCard::$balance) + & lt(add(select<[int]>(heap, self, PayCard::$balance), amount), - int::select(heap, self, PayCard::$limit)) + select<[int]>(heap, self, PayCard::$limit)) & geq(amount, Z(0(#))) & \forall PayCard pc; - ( boolean::select(heap, + ( select<[boolean]>(heap, pc, java.lang.Object::#$created) = TRUE -> leq(Z(0(#)), - int::select(heap, + select<[int]>(heap, pc, PayCard::$balance)) - & leq(int::select(heap, + & leq(select<[int]>(heap, pc, PayCard::$balance), - int::select(heap, pc, PayCard::$limit))) + select<[int]>(heap, pc, PayCard::$limit))) & {heap:=store(heap, self, PayCard::$balance, l_balance(self))} - int::select(heap, self, PayCard::$balance) + select<[int]>(heap, self, PayCard::$balance) = add(balanceAtpre(self), amount) -> {heap:=store(heap, self, PayCard::$balance, l_balance(self))} \forall PayCard pc; - ( boolean::select(heap, + ( select<[boolean]>(heap, pc, java.lang.Object::#$created) = TRUE -> leq(Z(0(#)), - int::select(heap, + select<[int]>(heap, pc, PayCard::$balance)) - & leq(int::select(heap, + & leq(select<[int]>(heap, pc, PayCard::$balance), - int::select(heap, pc, PayCard::$limit))) + select<[int]>(heap, pc, PayCard::$limit))) } diff --git a/key.ui/examples/standard_key/java_dl/innerClasses/inner.key b/key.ui/examples/standard_key/java_dl/innerClasses/inner.key index 5979820bfb1..5f4fa188377 100644 --- a/key.ui/examples/standard_key/java_dl/innerClasses/inner.key +++ b/key.ui/examples/standard_key/java_dl/innerClasses/inner.key @@ -83,7 +83,7 @@ \<{ ic = new InnerClasses(); ic.anonClass(); - }\> int::select(heap, ic, InnerClasses::#privField) + }\> select<[int]>(heap, ic, InnerClasses::#privField) = Z(2(#)) } diff --git a/key.ui/src/main/resources/de/uka/ilkd/key/gui/help/functionExplanations.xml b/key.ui/src/main/resources/de/uka/ilkd/key/gui/help/functionExplanations.xml index 7fafa339ec6..03aa437e123 100644 --- a/key.ui/src/main/resources/de/uka/ilkd/key/gui/help/functionExplanations.xml +++ b/key.ui/src/main/resources/de/uka/ilkd/key/gui/help/functionExplanations.xml @@ -21,7 +21,7 @@ Java has the peculiarity of covariant array types. They allow an array assignmen Integers are used to access the entries of entries within arrays stored on the heap. This function provides the injection of the integer domain into that of the type Field. It is ensured that this image of arr is disjoint from any defined field constant. -The array access a[i], for instance for an int-array a, becomes int::select(heap, a, arr(i)). +The array access a[i], for instance for an int-array a, becomes select<[int]>(heap, a, arr(i)). tbd tbd diff --git a/keyext.slicing/src/test/resources/testcase/issues/3437/Newnames(Newnames__createArray()).JML normal_behavior operation contract.0.proof b/keyext.slicing/src/test/resources/testcase/issues/3437/Newnames(Newnames__createArray()).JML normal_behavior operation contract.0.proof index 78d9b5afe75..c74b00841f5 100644 --- a/keyext.slicing/src/test/resources/testcase/issues/3437/Newnames(Newnames__createArray()).JML normal_behavior operation contract.0.proof +++ b/keyext.slicing/src/test/resources/testcase/issues/3437/Newnames(Newnames__createArray()).JML normal_behavior operation contract.0.proof @@ -89,6 +89,6 @@ name=Newnames[Newnames\\:\\:createArray()].JML normal_behavior operation contrac (autoModeTime "0") (branch "dummy ID" - (opengoal "==> ( ( ((((wellFormed(heap)<> & (!( self<> = null)<>)<>)<> & ( boolean::select(heap, self, java.lang.Object::) = TRUE)<>)<> & (Newnames::exactInstance(self) = TRUE)<>)<> & measuredByEmpty<>)<> & java.lang.Object::$inv(heap, self)<>)<> -> ({heapAtPre:=heap} (\\<{ exc = null; try { self.createArray()@Newnames; } catch (java.lang.Throwable e) { exc = e; } }\\> (( (java.lang.Object::$inv(heap, self)<> & ( exc<> = null)<>)<> & (\\forall Field f; (\\forall java.lang.Object o; (( (elementOf(o, f, allLocs)<> | ((!(o = null)<>)<> & (!( boolean::select(heapAtPre, o, java.lang.Object::) = TRUE)<>)<>)<>)<> | ( any::select(heap, o, f) = any::select(heapAtPre, o, f))<>)<>))<>)<>)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>))< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[requires (implicit), ensures (implicit), assignable (implicit)]\")>>") + (opengoal "==> ( ( ((((wellFormed(heap)<> & (!( self<> = null)<>)<>)<> & ( select<[boolean]>(heap, self, java.lang.Object::#$created) = TRUE)<>)<> & (Newnames::exactInstance(self) = TRUE)<>)<> & measuredByEmpty<>)<> & java.lang.Object::$inv(heap, self)<>)<> -> ({heapAtPre:=heap} (\\<{ exc = null; try { self.createArray()@Newnames; } catch (java.lang.Throwable e) { exc = e; } }\\> (( (java.lang.Object::$inv(heap, self)<> & ( exc<> = null)<>)<> & (\\forall Field f; (\\forall java.lang.Object o; (( (elementOf(o, f, allLocs)<> | ((!(o = null)<>)<> & (!( select<[boolean]>(heapAtPre, o, java.lang.Object::#$created) = TRUE)<>)<>)<>)<> | ( any::select(heap, o, f) = any::select(heapAtPre, o, f))<>)<>))<>)<>)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>))< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[ensures (implicit), assignable (implicit)]\")>>)< (implicit)\",\"[requires (implicit), ensures (implicit), assignable (implicit)]\")>>") ) } From 1be766d056dc02f50c12d4663725335acf15b5c4 Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 30 Mar 2026 08:39:13 +0200 Subject: [PATCH 29/37] Fix BM proof --- ...bm((I)).JML normal_behavior operation contract.0.proof | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof b/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof index f53436e2435..fb49af6480b 100644 --- a/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof +++ b/key.ui/examples/heap/BoyerMoore/BM(BM__bm((I)).JML normal_behavior operation contract.0.proof @@ -1938,7 +1938,7 @@ (builtin "One Step Simplification" (formula "19")) (rule "true_left" (formula "19")) (rule "allLeft" (formula "22") (inst "t=select<[int]>(heap, - IntOpt::final(null, IntOpt::#NONE), + final<[IntOpt]>(null, IntOpt::#NONE), IntOpt::#value)")) (rule "cut_direct" (formula "22") (term "1")) (branch "CUT: self.count(a, k_0, IntOpt.NONE.value) * 2 <= k_0 TRUE" @@ -3239,7 +3239,7 @@ (rule "applyEqReverse" (formula "3") (term "2,0") (ifseqformula "2")) (rule "hideAuxiliaryEq" (formula "2")) (rule "ifthenelse_split" (formula "2") (term "0")) - (branch "f_0 = java.lang.Object:: & o_0 = i_14 TRUE" + (branch "f_0 = java.lang.Object::#$initialized & o_0 = i_14 TRUE" (rule "andLeft" (formula "2")) (rule "applyEqReverse" (formula "43") (term "1") (ifseqformula "4")) (rule "hideAuxiliaryEq" (formula "4")) @@ -3264,7 +3264,7 @@ (rule "applyEq" (formula "1") (term "1,0") (ifseqformula "3")) (rule "close" (formula "35") (ifseqformula "1")) ) - (branch "f_0 = java.lang.Object:: & o_0 = i_14 FALSE" + (branch "f_0 = java.lang.Object::#$initialized & o_0 = i_14 FALSE" (rule "close" (formula "42") (ifseqformula "2")) ) ) @@ -4212,7 +4212,7 @@ (builtin "One Step Simplification" (formula "15")) (rule "true_left" (formula "15")) (rule "allLeft" (formula "19") (inst "t=select<[int]>(heap, - IntOpt::final(null, IntOpt::#NONE), + final<[IntOpt]>(null, IntOpt::#NONE), IntOpt::#value)")) (rule "cut_direct" (formula "19") (term "1")) (branch "CUT: self.count(a, k_0, IntOpt.NONE.value) * 2 <= k_0 + mc_0 * -1 TRUE" From e10444465da48822c1baaa773f4e8a4fdba3f9f7 Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 30 Mar 2026 08:41:08 +0200 Subject: [PATCH 30/37] Fix parser proof --- .../test/java/de/uka/ilkd/key/parser/TestTermParserHeap.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserHeap.java b/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserHeap.java index ef4505c9dd1..56480dad7a1 100644 --- a/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserHeap.java +++ b/key.core/src/test/java/de/uka/ilkd/key/parser/TestTermParserHeap.java @@ -248,7 +248,7 @@ public void testGenericObjectProperties() throws Exception { // test pretty syntax comparePrettySyntaxAgainstVerboseSyntax("a.$created", "select<[boolean]>(heap,a,java.lang.Object::#$created)"); - comparePrettySyntaxAgainstVerboseSyntax("a.#$initialized", + comparePrettySyntaxAgainstVerboseSyntax("a.$initialized", "select<[boolean]>(heap,a,java.lang.Object::#$initialized)"); comparePrettySyntaxAgainstVerboseSyntax("a.$transient", "select<[int]>(heap,a,java.lang.Object::#$transient)"); From 6aa7f8f8901237777763a551c595f144ca318ebc Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 30 Mar 2026 08:43:01 +0200 Subject: [PATCH 31/37] Update taclet equality oracle --- .../de/uka/ilkd/key/nparser/taclets.old.txt | 576 +++++++++--------- 1 file changed, 288 insertions(+), 288 deletions(-) diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt index d008ce7d826..69b18dc9c6b 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt @@ -1,5 +1,5 @@ # This files contains representation of taclets, which are accepted and revised. -# Date: Wed Nov 19 11:46:34 CET 2025 +# Date: Mon Mar 30 08:41:43 CEST 2026 == abortJavaCardTransactionAPI (abortJavaCardTransactionAPI) ========================================= abortJavaCardTransactionAPI { @@ -17,7 +17,7 @@ abortJavaCardTransactionBox { \find(==>box_transaction|{{ .. #abortJavaCardTransaction; ... }}| (post)) -\replacewith([]==>[update-application(elem-update(heap)(anon(savedHeap,allObjects(java.lang.Object::#$transactionConditionallyUpdated),heap)),box(post))]) +\replacewith([]==>[update-application(elem-update(heap)(anon(savedHeap,allObjects(java.lang.Object::#$transactionConditionallyUpdated),heap)),box(post))]) \heuristics(simplify_prog) Choices: (programRules:Java & JavaCard:on)} ----------------------------------------------------- @@ -26,7 +26,7 @@ abortJavaCardTransactionDiamond { \find(==>diamond_transaction|{{ .. #abortJavaCardTransaction; ... }}| (post)) -\replacewith([]==>[update-application(elem-update(heap)(anon(savedHeap,allObjects(java.lang.Object::#$transactionConditionallyUpdated),heap)),diamond(post))]) +\replacewith([]==>[update-application(elem-update(heap)(anon(savedHeap,allObjects(java.lang.Object::#$transactionConditionallyUpdated),heap)),diamond(post))]) \heuristics(simplify_prog) Choices: (programRules:Java & JavaCard:on)} ----------------------------------------------------- @@ -34,7 +34,7 @@ Choices: (programRules:Java & JavaCard:on)} accDefinition { \find(acc(h,s,o,o2)) \varcond(\notFreeIn(fv (variable), o2 (deltaObject term)), \notFreeIn(fv (variable), o (java.lang.Object term)), \notFreeIn(fv (variable), s (LocSet term)), \notFreeIn(fv (variable), h (Heap term))) -\replacewith(and(and(not(equals(o,null)),not(equals(o2,null))),exists{fv (variable)}(and(elementOf(o,fv,s),equals(deltaObject::select(h,o,fv),o2))))) +\replacewith(and(and(not(equals(o,null)),not(equals(o2,null))),exists{fv (variable)}(and(elementOf(o,fv,s),equals(select<[deltaObject]>(h,o,fv),o2))))) \heuristics(simplify) Choices: reach:on} ----------------------------------------------------- @@ -679,7 +679,7 @@ allocateInstance { #lhs = #t.#allocate()@#t; ... }}| (post)) \varcond(\hasSort(#t2 (program Type), alphaObj)) -\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),equals(select<[boolean]>(heap,#lhs,java.lang.Object::#$created),FALSE))),equals(alphaObj::exactInstance(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(create(heap,#lhs)),#allmodal(post))]) +\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),equals(select<[boolean]>(heap,#lhs,java.lang.Object::#$created),FALSE))),equals(exactInstance<[alphaObj]>(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(create(heap,#lhs)),#allmodal(post))]) \heuristics(method_expand) Choices: (programRules:Java & permissions:off)} ----------------------------------------------------- @@ -689,7 +689,7 @@ allocateInstanceWithLength { #lhs = #t.#allocate(#len)@#t; ... }}| (post)) \varcond(\hasSort(#t2 (program Type), alphaObj)) -\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),and(equals(select<[boolean]>(heap,#lhs,java.lang.Object::#$created),FALSE),equals(length(#lhs),#len)))),equals(alphaObj::exactInstance(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(store(store(create(heap,#lhs),#lhs,java.lang.Object::#$transient,Z(0(#))),#lhs,java.lang.Object::#$transactionConditionallyUpdated,FALSE)),#allmodal(post))]) +\add [and(and(not(equals(#lhs,null)),imp(wellFormed(heap),and(equals(select<[boolean]>(heap,#lhs,java.lang.Object::#$created),FALSE),equals(length(#lhs),#len)))),equals(exactInstance<[alphaObj]>(#lhs),TRUE))]==>[] \replacewith([]==>[update-application(elem-update(heap)(store(store(create(heap,#lhs),#lhs,java.lang.Object::#$transient,Z(0(#))),#lhs,java.lang.Object::#$transactionConditionallyUpdated,FALSE)),#allmodal(post))]) \heuristics(method_expand) Choices: (programRules:Java & permissions:off)} ----------------------------------------------------- @@ -1076,7 +1076,7 @@ Choices: true} array2seqDef { \find(array2seq(h,a)) \varcond(\notFreeIn(u (variable), h (Heap term)), \notFreeIn(u (variable), a (java.lang.Object term))) -\replacewith(seqDef{u (variable)}(Z(0(#)),length(a),any::select(h,a,arr(u)))) +\replacewith(seqDef{u (variable)}(Z(0(#)),length(a),select<[any]>(h,a,arr(u)))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- @@ -1146,14 +1146,14 @@ Choices: programRules:Java} == array_self_reference (array_self_reference) ========================================= array_self_reference { \assumes ([wellFormed(heapSV)]==>[equals(array,null)]) -\find(arrayStoreValid(array,G::select(heapSV,array,arr(idx)))) +\find(arrayStoreValid(array,select<[G]>(heapSV,array,arr(idx)))) \sameUpdateLevel\replacewith(true) \heuristics(simplify_java) Choices: programRules:Java} ----------------------------------------------------- == array_self_reference_eq (array_self_reference_eq) ========================================= array_self_reference_eq { -\assumes ([wellFormed(heapSV),equals(G::select(heapSV,array,arr(idx)),EQ)]==>[equals(array,null)]) +\assumes ([wellFormed(heapSV),equals(select<[G]>(heapSV,array,arr(idx)),EQ)]==>[equals(array,null)]) \find(arrayStoreValid(array,EQ)) \sameUpdateLevel\replacewith(true) \heuristics(simplify_java) @@ -1161,10 +1161,10 @@ Choices: programRules:Java} ----------------------------------------------------- == array_store_known_dynamic_array_type (known dynamic array type) ========================================= array_store_known_dynamic_array_type { -\assumes ([equals(J::exactInstance(array),TRUE)]==>[]) +\assumes ([equals(exactInstance<[J]>(array),TRUE)]==>[]) \find(arrayStoreValid(array,obj)) \sameUpdateLevel\varcond(\isReference[non_null]( J )) -\replacewith(or(equals(obj,null),equals(#arrayBaseInstanceOf(J::exactInstance(array),obj),TRUE))) +\replacewith(or(equals(obj,null),equals(#arrayBaseInstanceOf(exactInstance<[J]>(array),obj),TRUE))) \heuristics(simplify_java) Choices: programRules:Java} ----------------------------------------------------- @@ -1199,7 +1199,7 @@ assertSafe { method-frame (#ex) { #typeof(#e1) #condition = #e1; } -}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(select<[boolean]>(oldHeap,o,java.lang.Object::#$created),FALSE)),equals(any::select(oldHeap,o,f),any::select(heap,o,f))))))]) ; +}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(select<[boolean]>(oldHeap,o,java.lang.Object::#$created),FALSE)),equals(select<[any]>(oldHeap,o,f),select<[any]>(heap,o,f))))))]) ; \replacewith([]==>[\<{ method-frame (#ex) { #condition = #e1; @@ -1220,7 +1220,7 @@ assertSafeWithMessage { #typeof(#e1) #condition = #e1; #typeof(#e2) #message = #e2; } -}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(select<[boolean]>(oldHeap,o,java.lang.Object::#$created),FALSE)),equals(any::select(oldHeap,o,f),any::select(heap,o,f))))))]) ; +}\] (all{f (variable)}(all{o (variable)}(or(and(not(equals(o,null)),equals(select<[boolean]>(oldHeap,o,java.lang.Object::#$created),FALSE)),equals(select<[any]>(oldHeap,o,f),select<[any]>(heap,o,f))))))]) ; \replacewith([]==>[\<{ method-frame (#ex) { #typeof(#e1) #condition = #e1; @@ -1235,7 +1235,7 @@ Choices: (programRules:Java & assertions:safe)} assignableDefinition { \find(assignable(heapNew,heapOld,locs)) \varcond(\notFreeIn(f (variable), heapNew (Heap term)), \notFreeIn(f (variable), heapOld (Heap term)), \notFreeIn(f (variable), locs (LocSet term)), \notFreeIn(o (variable), heapNew (Heap term)), \notFreeIn(o (variable), heapOld (Heap term)), \notFreeIn(o (variable), locs (LocSet term))) -\replacewith(all{f (variable)}(all{o (variable)}(or(or(elementOf(o,f,locs),and(not(equals(o,null)),not(equals(select<[boolean]>(heapOld,o,java.lang.Object::#$created),TRUE)))),equals(any::select(heapNew,o,f),any::select(heapOld,o,f)))))) +\replacewith(all{f (variable)}(all{o (variable)}(or(or(elementOf(o,f,locs),and(not(equals(o,null)),not(equals(select<[boolean]>(heapOld,o,java.lang.Object::#$created),TRUE)))),equals(select<[any]>(heapNew,o,f),select<[any]>(heapOld,o,f)))))) \heuristics(delayedExpansion) Choices: programRules:Java} ----------------------------------------------------- @@ -1838,7 +1838,7 @@ assignment_array2 { \varcond(\hasSort(\elemSort(#v0 (program Variable)), G)) \add [and(not(equals(#v0,null)),or(leq(length(#v0),#se),lt(#se,Z(0(#)))))]==>[] \replacewith([]==>[false]) ; \add [equals(#v0,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(#v (program Variable))(G::select(heap,#v0,arr(#se))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v (program Variable))(select<[G]>(heap,#v0,arr(#se))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: (programRules:Java & runtimeExceptions:ban)} ----------------------------------------------------- @@ -1849,7 +1849,7 @@ assignment_read_attribute { ... }}| (post)) \varcond( \not \static(#a (program Variable)), \not \isArrayLength(#a (program Variable)), \hasSort(#a (program Variable), G), \not\isThisReference (#v (program Variable)), \not \final(#a (program Variable))) \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(G::select(heap,#v,#memberPVToField(#a))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(select<[G]>(heap,#v,#memberPVToField(#a))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & finalFields:immutable)} ----------------------------------------------------- @@ -1860,7 +1860,7 @@ assignment_read_attribute_final { ... }}| (post)) \varcond( \not \static(#a (program Variable)), \not \isArrayLength(#a (program Variable)), \hasSort(#a (program Variable), G), \not\isThisReference (#v (program Variable)), \final(#a (program Variable))) \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(G::final(#v,#memberPVToField(#a))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(final<[G]>(#v,#memberPVToField(#a))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & finalFields:immutable)} ----------------------------------------------------- @@ -1870,7 +1870,7 @@ assignment_read_attribute_this { #v0 = #v.#a; ... }}| (post)) \varcond( \not \static(#a (program Variable)), \not \isArrayLength(#a (program Variable)), \not\isModelField(#a (program Variable)), \hasSort(#a (program Variable), G), \isThisReference (#v (program Variable)), \not \final(#a (program Variable))) -\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(G::select(heap,#v,#memberPVToField(#a))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(select<[G]>(heap,#v,#memberPVToField(#a))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & finalFields:immutable)} ----------------------------------------------------- @@ -1880,7 +1880,7 @@ assignment_read_attribute_this_final { #v0 = #v.#a; ... }}| (post)) \varcond( \not \static(#a (program Variable)), \not \isArrayLength(#a (program Variable)), \hasSort(#a (program Variable), G), \isThisReference (#v (program Variable)), \final(#a (program Variable))) -\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(G::final(#v,#memberPVToField(#a))),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#v0 (program Variable))(final<[G]>(#v,#memberPVToField(#a))),#allmodal(post))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & finalFields:immutable)} ----------------------------------------------------- @@ -1911,7 +1911,7 @@ assignment_read_static_attribute { #v0 = @(#sv); ... }}| (post)) \sameUpdateLevel\varcond(\hasSort(#sv (program StaticVariable), G), \not \final(#sv (program StaticVariable))) -\replacewith(update-application(elem-update(#v0 (program Variable))(G::select(heap,null,#memberPVToField(#sv))),#allmodal(post))) +\replacewith(update-application(elem-update(#v0 (program Variable))(select<[G]>(heap,null,#memberPVToField(#sv))),#allmodal(post))) \heuristics(simplify_prog_subset, simplify_prog) Choices: (programRules:Java & finalFields:immutable)} ----------------------------------------------------- @@ -1921,7 +1921,7 @@ assignment_read_static_attribute_final { #v0 = @(#sv); ... }}| (post)) \sameUpdateLevel\varcond(\hasSort(#sv (program StaticVariable), G), \final(#sv (program StaticVariable))) -\replacewith(update-application(elem-update(#v0 (program Variable))(G::final(null,#memberPVToField(#sv))),#allmodal(post))) +\replacewith(update-application(elem-update(#v0 (program Variable))(final<[G]>(null,#memberPVToField(#sv))),#allmodal(post))) \heuristics(simplify_prog_subset, simplify_prog) Choices: (programRules:Java & finalFields:immutable)} ----------------------------------------------------- @@ -1931,7 +1931,7 @@ assignment_read_static_attribute_with_variable_prefix { #loc = @(#v.#sv); ... }}| (post)) \varcond(\hasSort(#sv (program StaticVariable), G)) -\replacewith(update-application(elem-update(#loc (program Variable))(G::select(heap,#v,#memberPVToField(#sv))),#allmodal(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(select<[G]>(heap,#v,#memberPVToField(#sv))),#allmodal(post))) \heuristics(simplify_prog) Choices: programRules:Java} ----------------------------------------------------- @@ -1955,7 +1955,7 @@ assignment_to_primitive_array_component_transaction { \varcond( \not \isReferenceArray(#v (program Variable))) \add [and(not(equals(#v,null)),or(leq(length(#v),#se),lt(#se,Z(0(#)))))]==>[] \replacewith([]==>[false]) ; \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(select<[int]>(heap,#v,java.lang.Object::#$transient),Z(0(#))),store(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated,TRUE),if-then-else(equals(select<[boolean]>(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) +\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(select<[int]>(heap,#v,java.lang.Object::#$transient),Z(0(#))),store(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated,TRUE),if-then-else(equals(select<[boolean]>(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & JavaCard:on)} ----------------------------------------------------- @@ -1981,7 +1981,7 @@ assignment_to_reference_array_component_transaction { \add [and(and(and(not(equals(#v,null)),lt(#se,length(#v))),geq(#se,Z(0(#)))),not(arrayStoreValid(#v,#se0)))]==>[] \replacewith([]==>[false]) ; \add [and(not(equals(#v,null)),or(leq(length(#v),#se),lt(#se,Z(0(#)))))]==>[] \replacewith([]==>[false]) ; \add [equals(#v,null)]==>[] \replacewith([]==>[false]) ; -\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(select<[int]>(heap,#v,java.lang.Object::#$transient),Z(0(#))),store(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated,TRUE),if-then-else(equals(select<[boolean]>(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) +\replacewith([]==>[update-application(elem-update(heap)(store(heap,#v,arr(#se),#se0)),update-application(elem-update(savedHeap)(if-then-else(equals(select<[int]>(heap,#v,java.lang.Object::#$transient),Z(0(#))),store(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated,TRUE),if-then-else(equals(select<[boolean]>(savedHeap,#v,java.lang.Object::#$transactionConditionallyUpdated),FALSE),store(savedHeap,#v,arr(#se),#se0),savedHeap))),#transaction(post)))]) \heuristics(simplify_prog_subset, simplify_prog) Choices: ((programRules:Java & runtimeExceptions:ban) & JavaCard:on)} ----------------------------------------------------- @@ -3446,9 +3446,9 @@ Choices: true} ----------------------------------------------------- == castAdd (narrow type) ========================================= castAdd { -\assumes ([equals(CSub::instance(strictCTerm2),TRUE)]==>[]) +\assumes ([equals(instance<[CSub]>(strictCTerm2),TRUE)]==>[]) \find(strictCTerm2) -\sameUpdateLevel\replacewith(CSub::cast(strictCTerm2)) +\sameUpdateLevel\replacewith(cast<[CSub]>(strictCTerm2)) Choices: true} ----------------------------------------------------- @@ -3457,13 +3457,13 @@ castAdd2 { \assumes ([equals(cs,gt)]==>[]) \find(gt) \sameUpdateLevel\varcond(\strict\sub(C, G)) -\replacewith(C::cast(gt)) +\replacewith(cast<[C]>(gt)) Choices: true} ----------------------------------------------------- == castDel (castDel) ========================================= castDel { -\find(C::cast(castedTerm)) +\find(cast<[C]>(castedTerm)) \replacewith(castedTerm) \heuristics(cast_deletion, simplify) Choices: true} @@ -3471,7 +3471,7 @@ Choices: true} == castDel2 (castDel) ========================================= castDel2 { \assumes ([equals(cs,gt)]==>[]) -\find(C::cast(gt)) +\find(cast<[C]>(gt)) \sameUpdateLevel\replacewith(cs) Choices: true} @@ -3481,7 +3481,7 @@ castLongToFloatAddition2 { \find(#normalassign ((modal operator))|{{ .. #loc = #seFloat + #seLong; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(#seFloat,float::cast(#seLong))),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(#seFloat,cast<[float]>(#seLong))),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -3498,32 +3498,32 @@ Choices: programRules:Java} ----------------------------------------------------- == castTrueImpliesOriginalTrue (castTrueImpliesOriginalTrue) ========================================= castTrueImpliesOriginalTrue { -\assumes ([equals(select<[boolean]>(h,o,f),TRUE)]==>[]) -\find(==>equals(any::select(h,o,f),TRUE)) +\assumes ([equals(select<[boolean]>(h,o,f),TRUE)]==>[]) +\find(==>equals(select<[any]>(h,o,f),TRUE)) \replacewith([]==>[true]) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == castType (castType) ========================================= castType { -\assumes ([equals(H::instance(C::cast(s)),TRUE)]==>[]) -\find(equals(CSub::instance(s),TRUE)==>) -\replacewith([equals(H::instance(s),TRUE)]==>[]) +\assumes ([equals(instance<[H]>(cast<[C]>(s)),TRUE)]==>[]) +\find(equals(instance<[CSub]>(s),TRUE)==>) +\replacewith([equals(instance<[H]>(s),TRUE)]==>[]) \heuristics(simplify) Choices: true} ----------------------------------------------------- == castType2 (castType) ========================================= castType2 { -\assumes ([]==>[equals(H::instance(C::cast(s)),TRUE)]) -\find(equals(CSub::instance(s),TRUE)==>) -\replacewith([]==>[equals(H::instance(s),TRUE)]) +\assumes ([]==>[equals(instance<[H]>(cast<[C]>(s)),TRUE)]) +\find(equals(instance<[CSub]>(s),TRUE)==>) +\replacewith([]==>[equals(instance<[H]>(s),TRUE)]) \heuristics(simplify) Choices: true} ----------------------------------------------------- == castedGetAny (castedGetAny) ========================================= castedGetAny { -\find(beta::cast(any::seqGet(seq,idx))) -\replacewith(beta::seqGet(seq,idx)) +\find(cast<[beta]>(seqGet<[any]>(seq,idx))) +\replacewith(seqGet<[beta]>(seq,idx)) \heuristics(simplify) Choices: sequences:on} ----------------------------------------------------- @@ -3562,15 +3562,15 @@ Choices: true} ----------------------------------------------------- == closeType (closeType) ========================================= closeType { -\assumes ([]==>[equals(G::instance(t1),TRUE)]) -\find(equals(GSub::instance(t1),TRUE)==>) +\assumes ([]==>[equals(instance<[G]>(t1),TRUE)]) +\find(equals(instance<[GSub]>(t1),TRUE)==>) \closegoal\heuristics(closure) Choices: true} ----------------------------------------------------- == closeTypeSwitched (closeType) ========================================= closeTypeSwitched { -\assumes ([equals(GSub::instance(t1),TRUE)]==>[]) -\find(==>equals(G::instance(t1),TRUE)) +\assumes ([equals(instance<[GSub]>(t1),TRUE)]==>[]) +\find(==>equals(instance<[G]>(t1),TRUE)) \closegoal\heuristics(closure) Choices: true} ----------------------------------------------------- @@ -5163,14 +5163,14 @@ Choices: true} createdInHeapToElementOf { \find(createdInHeap(s,h)) \varcond(\notFreeIn(fv (variable), h (Heap term)), \notFreeIn(fv (variable), s (LocSet term)), \notFreeIn(ov (variable), h (Heap term)), \notFreeIn(ov (variable), s (LocSet term))) -\replacewith(all{ov (variable)}(all{fv (variable)}(imp(elementOf(ov,fv,s),or(equals(ov,null),equals(select<[boolean]>(h,ov,java.lang.Object::#$created),TRUE)))))) +\replacewith(all{ov (variable)}(all{fv (variable)}(imp(elementOf(ov,fv,s),or(equals(ov,null),equals(select<[boolean]>(h,ov,java.lang.Object::#$created),TRUE)))))) \heuristics(classAxiom) Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithAllFields (createdInHeapWithAllFields) ========================================= createdInHeapWithAllFields { \find(createdInHeap(allFields(o),h)) -\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) +\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5178,14 +5178,14 @@ Choices: programRules:Java} createdInHeapWithAllFieldsEQ { \assumes ([equals(allFields(o),EQ)]==>[]) \find(createdInHeap(EQ,h)) -\sameUpdateLevel\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) +\sameUpdateLevel\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithArrayRange (createdInHeapWithArrayRange) ========================================= createdInHeapWithArrayRange { \find(createdInHeap(arrayRange(o,lower,upper),h)) -\replacewith(or(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)),lt(upper,lower))) +\replacewith(or(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)),lt(upper,lower))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5193,7 +5193,7 @@ Choices: programRules:Java} createdInHeapWithArrayRangeEQ { \assumes ([equals(arrayRange(o,lower,upper),EQ)]==>[]) \find(createdInHeap(EQ,h)) -\sameUpdateLevel\replacewith(or(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)),lt(upper,lower))) +\sameUpdateLevel\replacewith(or(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)),lt(upper,lower))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5223,14 +5223,14 @@ Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithSelect (createdInHeapWithSelect) ========================================= createdInHeapWithSelect { -\find(==>createdInHeap(LocSet::select(h,o,f),h)) +\find(==>createdInHeap(select<[LocSet]>(h,o,f),h)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == createdInHeapWithSelectEQ (createdInHeapWithSelectEQ) ========================================= createdInHeapWithSelectEQ { -\assumes ([equals(LocSet::select(h,o,f),EQ)]==>[]) +\assumes ([equals(select<[LocSet]>(h,o,f),EQ)]==>[]) \find(==>createdInHeap(EQ,h)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) @@ -5254,7 +5254,7 @@ Choices: programRules:Java} == createdInHeapWithSingleton (createdInHeapWithSingleton) ========================================= createdInHeapWithSingleton { \find(createdInHeap(singleton(o,f),h)) -\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) +\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5262,7 +5262,7 @@ Choices: programRules:Java} createdInHeapWithSingletonEQ { \assumes ([equals(singleton(o,f),EQ)]==>[]) \find(createdInHeap(EQ,h)) -\sameUpdateLevel\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) +\sameUpdateLevel\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -5335,7 +5335,7 @@ Choices: true} defInDomainImpliesCreated { \find(inDomainImpliesCreated(m)) \varcond(\notFreeIn(o (variable), m (Map term))) -\replacewith(all{o (variable)}(imp(inDomain(m,o),equals(select<[boolean]>(heap,o,java.lang.Object::#$created),TRUE)))) +\replacewith(all{o (variable)}(imp(inDomain(m,o),equals(select<[boolean]>(heap,o,java.lang.Object::#$created),TRUE)))) \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- @@ -5343,7 +5343,7 @@ Choices: true} defIsFinite { \find(isFinite(m)) \varcond(\notFreeIn(s (variable), m (Map term)), \notFreeIn(vx (variable), m (Map term))) -\replacewith(exists{s (variable)}(all{vx (variable)}(equiv(inDomain(m,vx),exists{ix (variable)}(and(and(leq(Z(0(#)),ix),lt(ix,seqLen(s))),equals(any::seqGet(s,ix),vx))))))) +\replacewith(exists{s (variable)}(all{vx (variable)}(equiv(inDomain(m,vx),exists{ix (variable)}(and(and(leq(Z(0(#)),ix),lt(ix,seqLen(s))),equals(seqGet<[any]>(s,ix),vx))))))) Choices: true} ----------------------------------------------------- @@ -5382,7 +5382,7 @@ Choices: true} defMapSingleton { \find(mapSingleton(xa,y)) \varcond(\notFreeIn(vy (variable), y (any term)), \notFreeIn(vy (variable), xa (alpha term))) -\replacewith(mapForeach{vy (variable)}(if-then-else(equals(vy,any::cast(xa)),TRUE,FALSE),y)) +\replacewith(mapForeach{vy (variable)}(if-then-else(equals(vy,cast<[any]>(xa)),TRUE,FALSE),y)) Choices: true} ----------------------------------------------------- @@ -5406,7 +5406,7 @@ Choices: sequences:on} defOfSeqConcat { \find(seqConcat(seq1,seq2)) \varcond(\notFreeIn(uSub (variable), seq2 (Seq term)), \notFreeIn(uSub (variable), seq1 (Seq term))) -\replacewith(seqDef{uSub (variable)}(Z(0(#)),add(seqLen(seq1),seqLen(seq2)),if-then-else(lt(uSub,seqLen(seq1)),any::seqGet(seq1,uSub),any::seqGet(seq2,sub(uSub,seqLen(seq1)))))) +\replacewith(seqDef{uSub (variable)}(Z(0(#)),add(seqLen(seq1),seqLen(seq2)),if-then-else(lt(uSub,seqLen(seq1)),seqGet<[any]>(seq1,uSub),seqGet<[any]>(seq2,sub(uSub,seqLen(seq1)))))) Choices: sequences:on} ----------------------------------------------------- @@ -5414,7 +5414,7 @@ Choices: sequences:on} defOfSeqReverse { \find(seqReverse(seq)) \varcond(\notFreeIn(uSub (variable), seq (Seq term))) -\replacewith(seqDef{uSub (variable)}(Z(0(#)),seqLen(seq),any::seqGet(seq,sub(sub(seqLen(seq),uSub),Z(1(#)))))) +\replacewith(seqDef{uSub (variable)}(Z(0(#)),seqLen(seq),seqGet<[any]>(seq,sub(sub(seqLen(seq),uSub),Z(1(#)))))) Choices: sequences:on} ----------------------------------------------------- @@ -5430,7 +5430,7 @@ Choices: sequences:on} defOfSeqSub { \find(seqSub(seq,from,to)) \varcond(\notFreeIn(uSub (variable), to (int term)), \notFreeIn(uSub (variable), from (int term)), \notFreeIn(uSub (variable), seq (Seq term))) -\replacewith(seqDef{uSub (variable)}(from,to,any::seqGet(seq,uSub))) +\replacewith(seqDef{uSub (variable)}(from,to,seqGet<[any]>(seq,uSub))) Choices: sequences:on} ----------------------------------------------------- @@ -5438,7 +5438,7 @@ Choices: sequences:on} defOfSeqUpd { \find(seqUpd(seq,idx,value)) \varcond(\notFreeIn(uSub (variable), seq (Seq term)), \notFreeIn(uSub (variable), value (any term)), \notFreeIn(uSub (variable), idx (int term))) -\replacewith(seqDef{uSub (variable)}(Z(0(#)),seqLen(seq),if-then-else(equals(uSub,idx),value,any::seqGet(seq,uSub)))) +\replacewith(seqDef{uSub (variable)}(Z(0(#)),seqLen(seq),if-then-else(equals(uSub,idx),value,seqGet<[any]>(seq,uSub)))) Choices: sequences:on} ----------------------------------------------------- @@ -5446,7 +5446,7 @@ Choices: sequences:on} defSeq2Map { \find(seq2map(s)) \varcond(\notFreeIn(ix (variable), s (Seq term))) -\replacewith(mapForeach{ix (variable)}(if-then-else(and(leq(Z(0(#)),ix),lt(ix,seqLen(s))),TRUE,FALSE),any::seqGet(s,ix))) +\replacewith(mapForeach{ix (variable)}(if-then-else(and(leq(Z(0(#)),ix),lt(ix,seqLen(s))),TRUE,FALSE),seqGet<[any]>(s,ix))) Choices: true} ----------------------------------------------------- @@ -5461,7 +5461,7 @@ Choices: true} definitionAllElementsOfArray { \find(allElementsOfArray(h,array,singleton(o,f))) \varcond(\notFreeIn(j (variable), f (Field term)), \notFreeIn(j (variable), o (java.lang.Object term)), \notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),singleton(java.lang.Object::select(h,array,arr(j)),f),empty))) +\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),singleton(select<[java.lang.Object]>(h,array,arr(j)),f),empty))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -5469,7 +5469,7 @@ Choices: programRules:Java} definitionAllElementsOfArray2 { \find(allElementsOfArray(h,array,allFields(o))) \varcond(\notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),allFields(java.lang.Object::select(h,array,arr(j))),empty))) +\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),allFields(select<[java.lang.Object]>(h,array,arr(j))),empty))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -5477,7 +5477,7 @@ Choices: programRules:Java} definitionAllElementsOfArrayLocsets { \find(allElementsOfArrayLocsets(h,array,singleton(o,f))) \varcond(\notFreeIn(j (variable), f (Field term)), \notFreeIn(j (variable), o (java.lang.Object term)), \notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),LocSet::select(h,java.lang.Object::select(h,array,arr(j)),f),empty))) +\replacewith(infiniteUnion{j (variable)}(if-then-else(and(leq(Z(0(#)),j),lt(j,length(array))),select<[LocSet]>(h,select<[java.lang.Object]>(h,array,arr(j)),f),empty))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -5495,7 +5495,7 @@ Choices: true} definitionOfNewOnHeap { \find(==>newOnHeap(h,s)) \varcond(\notFreeIn(i (variable), h (Heap term)), \notFreeIn(i (variable), s (Seq term))) -\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s))),and(imp(equals(java.lang.Object::instance(any::seqGet(s,i)),TRUE),equals(select<[boolean]>(h,java.lang.Object::seqGet(s,i),java.lang.Object::#$created),FALSE)),imp(equals(Seq::instance(any::seqGet(s,i)),TRUE),newOnHeap(h,Seq::seqGet(s,i))))))]) +\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s))),and(imp(equals(instance<[java.lang.Object]>(seqGet<[any]>(s,i)),TRUE),equals(select<[boolean]>(h,seqGet<[java.lang.Object]>(s,i),java.lang.Object::#$created),FALSE)),imp(equals(instance<[Seq]>(seqGet<[any]>(s,i)),TRUE),newOnHeap(h,seqGet<[Seq]>(s,i))))))]) \heuristics(comprehensions) Choices: true} ----------------------------------------------------- @@ -5503,7 +5503,7 @@ Choices: true} definitionOfObjectIsomorphic { \find(==>objectIsomorphic(s1,o1,s2,o2)) \varcond(\notFreeIn(i (variable), o2 (java.lang.Object term)), \notFreeIn(i (variable), o1 (java.lang.Object term)), \notFreeIn(i (variable), s2 (Seq term)), \notFreeIn(i (variable), s1 (Seq term))) -\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s1))),and(imp(equals(java.lang.Object::instance(any::seqGet(s1,i)),TRUE),equiv(equals(java.lang.Object::seqGet(s1,i),o1),equals(java.lang.Object::seqGet(s2,i),o2))),imp(equals(Seq::instance(any::seqGet(s1,i)),TRUE),objectIsomorphic(Seq::seqGet(s1,i),o1,Seq::seqGet(s2,i),o2)))))]) +\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s1))),and(imp(equals(instance<[java.lang.Object]>(seqGet<[any]>(s1,i)),TRUE),equiv(equals(seqGet<[java.lang.Object]>(s1,i),o1),equals(seqGet<[java.lang.Object]>(s2,i),o2))),imp(equals(instance<[Seq]>(seqGet<[any]>(s1,i)),TRUE),objectIsomorphic(seqGet<[Seq]>(s1,i),o1,seqGet<[Seq]>(s2,i),o2)))))]) \heuristics(comprehensions) Choices: true} ----------------------------------------------------- @@ -5511,7 +5511,7 @@ Choices: true} definitionOfObjectsIsomorphic { \find(==>objectsIsomorphic(s1,t1,s2,t2)) \varcond(\notFreeIn(i (variable), t2 (Seq term)), \notFreeIn(i (variable), t1 (Seq term)), \notFreeIn(i (variable), s2 (Seq term)), \notFreeIn(i (variable), s1 (Seq term))) -\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(t1))),and(imp(equals(java.lang.Object::instance(any::seqGet(t1,i)),TRUE),objectIsomorphic(s1,java.lang.Object::seqGet(t1,i),s2,java.lang.Object::seqGet(t2,i))),imp(equals(Seq::instance(any::seqGet(t1,i)),TRUE),objectsIsomorphic(s1,Seq::seqGet(t1,i),s2,Seq::seqGet(t2,i))))))]) +\replacewith([]==>[all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(t1))),and(imp(equals(instance<[java.lang.Object]>(seqGet<[any]>(t1,i)),TRUE),objectIsomorphic(s1,seqGet<[java.lang.Object]>(t1,i),s2,seqGet<[java.lang.Object]>(t2,i))),imp(equals(instance<[Seq]>(seqGet<[any]>(t1,i)),TRUE),objectsIsomorphic(s1,seqGet<[Seq]>(t1,i),s2,seqGet<[Seq]>(t2,i))))))]) \heuristics(comprehensions) Choices: true} ----------------------------------------------------- @@ -5519,7 +5519,7 @@ Choices: true} definitionOfSameTypes { \find(==>sameTypes(s1,s2)) \varcond(\notFreeIn(i (variable), s2 (Seq term)), \notFreeIn(i (variable), s1 (Seq term))) -\replacewith([]==>[and(equals(seqLen(s1),seqLen(s2)),all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s1))),and(sameType(any::seqGet(s1,i),any::seqGet(s2,i)),imp(equals(Seq::instance(any::seqGet(s1,i)),TRUE),sameTypes(Seq::seqGet(s1,i),Seq::seqGet(s2,i)))))))]) +\replacewith([]==>[and(equals(seqLen(s1),seqLen(s2)),all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,seqLen(s1))),and(sameType(seqGet<[any]>(s1,i),seqGet<[any]>(s2,i)),imp(equals(instance<[Seq]>(seqGet<[any]>(s1,i)),TRUE),sameTypes(seqGet<[Seq]>(s1,i),seqGet<[Seq]>(s2,i)))))))]) \heuristics(comprehensions) Choices: true} ----------------------------------------------------- @@ -5527,7 +5527,7 @@ Choices: true} definitionSeqdefWorkaround { \find(seq_def_workaround(h,lower,upper,array)) \varcond(\notFreeIn(j (variable), upper (int term)), \notFreeIn(j (variable), lower (int term)), \notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(seqDef{j (variable)}(lower,upper,any::select(h,array,arr(j)))) +\replacewith(seqDef{j (variable)}(lower,upper,select<[any]>(h,array,arr(j)))) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- @@ -5535,7 +5535,7 @@ Choices: sequences:on} definitionSeqdefWorkaround2 { \find(seq_def_workaround2(h,lower,upper,array,singleton(o,f))) \varcond(\notFreeIn(j (variable), upper (int term)), \notFreeIn(j (variable), lower (int term)), \notFreeIn(j (variable), array (java.lang.Object term)), \notFreeIn(j (variable), f (Field term)), \notFreeIn(j (variable), h (Heap term))) -\replacewith(seqDef{j (variable)}(lower,upper,any::select(h,java.lang.Object::select(h,array,arr(j)),f))) +\replacewith(seqDef{j (variable)}(lower,upper,select<[any]>(h,select<[java.lang.Object]>(h,array,arr(j)),f))) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- @@ -5554,7 +5554,7 @@ delete_unnecessary_cast { #lhs = (#npit) #se; ... }}| (post)) \sameUpdateLevel\varcond(\hasSort(#npit (program NonPrimitiveType), G), \sub(\typeof(#se (program SimpleExpression)), G)) -\add [or(equals(#se,null),equals(G::instance(#se),TRUE))]==>[] \replacewith(update-application(elem-update(#lhs (program LeftHandSide))(#addCast(#se,#lhs)),#allmodal(post))) +\add [or(equals(#se,null),equals(instance<[G]>(#se),TRUE))]==>[] \replacewith(update-application(elem-update(#lhs (program LeftHandSide))(#addCast(#se,#lhs)),#allmodal(post))) \heuristics(simplify_prog) Choices: programRules:Java} ----------------------------------------------------- @@ -5817,18 +5817,18 @@ Choices: programRules:Java} ----------------------------------------------------- == dismissNonSelectedField (dismissNonSelectedField) ========================================= dismissNonSelectedField { -\find(alpha::select(store(h,o,f1,x),u,f2)) +\find(select<[alpha]>(store(h,o,f1,x),u,f2)) \varcond(\differentFields (f1 (Field term), f2 (Field term))) -\replacewith(alpha::select(h,u,f2)) +\replacewith(select<[alpha]>(h,u,f2)) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- == dismissNonSelectedFieldEQ (dismissNonSelectedFieldEQ) ========================================= dismissNonSelectedFieldEQ { \assumes ([equals(store(h,o,f1,x),EQ)]==>[]) -\find(alpha::select(EQ,u,f2)) +\find(select<[alpha]>(EQ,u,f2)) \sameUpdateLevel\varcond(\differentFields (f1 (Field term), f2 (Field term))) -\replacewith(alpha::select(h,u,f2)) +\replacewith(select<[alpha]>(h,u,f2)) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -6246,9 +6246,9 @@ Choices: programRules:Java} ----------------------------------------------------- == dynamic_type_for_null (dynamic_type_for_null) ========================================= dynamic_type_for_null { -\find(G::exactInstance(null)) +\find(exactInstance<[G]>(null)) \varcond(\not\same(G, Null)) -\replacewith(FALSE) +\replacewith(FALSE) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- @@ -6307,7 +6307,7 @@ Choices: programRules:Java} == elementOfFreshLocs (elementOfFreshLocs) ========================================= elementOfFreshLocs { \find(elementOf(o,f,freshLocs(h))) -\replacewith(and(not(equals(o,null)),not(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)))) +\replacewith(and(not(equals(o,null)),not(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)))) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- @@ -6616,7 +6616,7 @@ Choices: true} elim_exists2 { \find(exists{Gvar (variable)}(equals(Gvar,Hterm))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(equals(G::instance(Hterm),TRUE)) +\replacewith(equals(instance<[G]>(Hterm),TRUE)) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6624,7 +6624,7 @@ Choices: true} elim_exists3 { \find(exists{Gvar (variable)}(equals(Hterm,Gvar))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(equals(G::instance(Hterm),TRUE)) +\replacewith(equals(instance<[G]>(Hterm),TRUE)) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6648,7 +6648,7 @@ Choices: true} elim_exists6 { \find(exists{Gvar (variable)}(and(phi,equals(Gvar,Hterm)))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(and(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),TRUE))) +\replacewith(and(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),TRUE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6656,7 +6656,7 @@ Choices: true} elim_exists7 { \find(exists{Gvar (variable)}(and(phi,equals(Hterm,Gvar)))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(and(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),TRUE))) +\replacewith(and(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),TRUE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6760,7 +6760,7 @@ Choices: true} elim_forall10 { \find(all{Gvar (variable)}(imp(equals(Gvar,Hterm),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6768,7 +6768,7 @@ Choices: true} elim_forall11 { \find(all{Gvar (variable)}(imp(equals(Hterm,Gvar),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6792,7 +6792,7 @@ Choices: true} elim_forall14 { \find(all{Gvar (variable)}(imp(and(psi,equals(Gvar,Hterm)),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),imp(psi,phi)),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),imp(psi,phi)),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6800,7 +6800,7 @@ Choices: true} elim_forall15 { \find(all{Gvar (variable)}(imp(and(psi,equals(Hterm,Gvar)),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),imp(psi,phi)),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),imp(psi,phi)),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6824,7 +6824,7 @@ Choices: true} elim_forall18 { \find(all{Gvar (variable)}(imp(and(equals(Gvar,Hterm),psi),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),imp(psi,phi)),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),imp(psi,phi)),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6832,7 +6832,7 @@ Choices: true} elim_forall19 { \find(all{Gvar (variable)}(imp(and(equals(Hterm,Gvar),psi),phi))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),imp(psi,phi)),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),imp(psi,phi)),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6840,7 +6840,7 @@ Choices: true} elim_forall2 { \find(all{Gvar (variable)}(not(equals(Gvar,Hterm)))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(equals(G::instance(Hterm),FALSE)) +\replacewith(equals(instance<[G]>(Hterm),FALSE)) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6848,7 +6848,7 @@ Choices: true} elim_forall3 { \find(all{Gvar (variable)}(not(equals(Hterm,Gvar)))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(equals(G::instance(Hterm),FALSE)) +\replacewith(equals(instance<[G]>(Hterm),FALSE)) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6872,7 +6872,7 @@ Choices: true} elim_forall6 { \find(all{Gvar (variable)}(or(phi,not(equals(Gvar,Hterm))))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -6880,7 +6880,7 @@ Choices: true} elim_forall7 { \find(all{Gvar (variable)}(or(phi,not(equals(Hterm,Gvar))))) \varcond(\notFreeIn(Gvar (variable), Hterm (H term))) -\replacewith(or(subst{Gvar (variable)}(G::cast(Hterm),phi),equals(G::instance(Hterm),FALSE))) +\replacewith(or(subst{Gvar (variable)}(cast<[G]>(Hterm),phi),equals(instance<[G]>(Hterm),FALSE))) \heuristics(elimQuantifierWithCast, elimQuantifier) Choices: true} ----------------------------------------------------- @@ -7320,7 +7320,7 @@ Choices: programRules:Java} equalityToSelect { \find(equals(h,h2)) \varcond(\notFreeIn(fv (variable), h2 (Heap term)), \notFreeIn(fv (variable), h (Heap term)), \notFreeIn(ov (variable), h2 (Heap term)), \notFreeIn(ov (variable), h (Heap term))) -\replacewith(all{ov (variable)}(all{fv (variable)}(equals(any::select(h,ov,fv),any::select(h2,ov,fv))))) +\replacewith(all{ov (variable)}(all{fv (variable)}(equals(select<[any]>(h,ov,fv),select<[any]>(h2,ov,fv))))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- @@ -7328,7 +7328,7 @@ Choices: programRules:Java} equalityToSeqGetAndSeqLen { \find(equals(left,right)) \varcond(\notFreeIn(iv (variable), right (Seq term)), \notFreeIn(iv (variable), left (Seq term))) -\replacewith(and(equals(seqLen(left),seqLen(right)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(left))),equals(any::seqGet(left,iv),any::seqGet(right,iv)))))) +\replacewith(and(equals(seqLen(left),seqLen(right)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(left))),equals(seqGet<[any]>(left,iv),seqGet<[any]>(right,iv)))))) \heuristics(defOpsSeqEquality) Choices: sequences:on} ----------------------------------------------------- @@ -7336,7 +7336,7 @@ Choices: sequences:on} equalityToSeqGetAndSeqLenLeft { \find(equals(s,s2)==>) \varcond(\notFreeIn(iv (variable), s2 (Seq term)), \notFreeIn(iv (variable), s (Seq term))) -\add [and(equals(seqLen(s),seqLen(s2)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(any::seqGet(s,iv),any::seqGet(s2,iv)))))]==>[] +\add [and(equals(seqLen(s),seqLen(s2)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(seqGet<[any]>(s,iv),seqGet<[any]>(s2,iv)))))]==>[] \heuristics(inReachableStateImplication) Choices: sequences:on} ----------------------------------------------------- @@ -7344,7 +7344,7 @@ Choices: sequences:on} equalityToSeqGetAndSeqLenRight { \find(==>equals(s,s2)) \varcond(\notFreeIn(iv (variable), s2 (Seq term)), \notFreeIn(iv (variable), s (Seq term))) -\replacewith([]==>[and(equals(seqLen(s),seqLen(s2)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(any::seqGet(s,iv),any::seqGet(s2,iv)))))]) +\replacewith([]==>[and(equals(seqLen(s),seqLen(s2)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(seqGet<[any]>(s,iv),seqGet<[any]>(s2,iv)))))]) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- @@ -8000,7 +8000,7 @@ Choices: true} ----------------------------------------------------- == exact_instance_definition_boolean (exact_instance_definition_boolean) ========================================= exact_instance_definition_boolean { -\find(equals(boolean::exactInstance(bool),TRUE)) +\find(equals(exactInstance<[boolean]>(bool),TRUE)) \varcond(\notFreeIn(bv (variable), bool (boolean term))) \replacewith(exists{bv (variable)}(equals(bool,bv))) \heuristics(simplify) @@ -8008,7 +8008,7 @@ Choices: programRules:Java} ----------------------------------------------------- == exact_instance_definition_int (exact_instance_definition_int) ========================================= exact_instance_definition_int { -\find(equals(int::exactInstance(idx0),TRUE)) +\find(equals(exactInstance<[int]>(idx0),TRUE)) \varcond(\notFreeIn(iv (variable), idx0 (int term))) \replacewith(exists{iv (variable)}(equals(idx0,iv))) \heuristics(simplify) @@ -8016,7 +8016,7 @@ Choices: programRules:Java} ----------------------------------------------------- == exact_instance_definition_null (exact_instance_definition_null) ========================================= exact_instance_definition_null { -\find(equals(Null::exactInstance(obj),TRUE)) +\find(equals(exactInstance<[Null]>(obj),TRUE)) \varcond(\notFreeIn(bv (variable), bool (boolean term))) \replacewith(equals(obj,null)) \heuristics(simplify) @@ -8024,7 +8024,7 @@ Choices: programRules:Java} ----------------------------------------------------- == exact_instance_for_interfaces_or_abstract_classes (interfaces or abstract classes have no exact instances) ========================================= exact_instance_for_interfaces_or_abstract_classes { -\find(G::exactInstance(obj)) +\find(exactInstance<[G]>(obj)) \varcond(\isAbstractOrInterface (G)) \replacewith(FALSE) \heuristics(simplify) @@ -8032,8 +8032,8 @@ Choices: programRules:Java} ----------------------------------------------------- == exact_instance_known_dynamic_type (exact_instance_known_dynamic_type) ========================================= exact_instance_known_dynamic_type { -\assumes ([equals(G::exactInstance(a),TRUE)]==>[]) -\find(H::exactInstance(a)) +\assumes ([equals(exactInstance<[G]>(a),TRUE)]==>[]) +\find(exactInstance<[H]>(a)) \sameUpdateLevel\varcond(\not\same(G, H)) \replacewith(FALSE) \heuristics(evaluate_instanceof, simplify) @@ -9588,9 +9588,9 @@ Choices: true} ----------------------------------------------------- == getAnyOfArray2seq (getAnyOfArray2seq) ========================================= getAnyOfArray2seq { -\find(any::seqGet(array2seq(h,a),idx)) -\add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; -\replacewith(any::select(h,a,arr(idx))) +\find(seqGet<[any]>(array2seq(h,a),idx)) +\sameUpdateLevel\add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; +\replacewith(select<[any]>(h,a,arr(idx))) Choices: sequences:on} ----------------------------------------------------- @@ -9602,15 +9602,15 @@ getJavaCardTransient { #jcsystemType.#getTransient(#se)@#jcsystemType; ... }}| (post)) \replacewith([]==>[not(equals(#se,null))]) ; -\replacewith([]==>[update-application(elem-update(#lhs (program LeftHandSide))(select<[int]>(heap,#se,java.lang.Object::#$transient)),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(#lhs (program LeftHandSide))(select<[int]>(heap,#se,java.lang.Object::#$transient)),#allmodal(post))]) \heuristics(simplify_prog) Choices: (programRules:Java & JavaCard:on)} ----------------------------------------------------- == getOfArray2seq (getOfArray2seq) ========================================= getOfArray2seq { -\find(alpha::seqGet(array2seq(h,a),idx)) -\add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; -\replacewith(alpha::select(h,a,arr(idx))) +\find(seqGet<[alpha]>(array2seq(h,a),idx)) +\sameUpdateLevel\add []==>[and(leq(Z(0(#)),idx),lt(idx,length(a)))] ; +\replacewith(select<[alpha]>(h,a,arr(idx))) Choices: sequences:on} ----------------------------------------------------- @@ -9624,7 +9624,7 @@ Choices: true} == getOfMapForeach (getOfMapForeach) ========================================= getOfMapForeach { \find(mapGet(mapForeach{v (variable)}(b,y),x)) -\sameUpdateLevel\replacewith(if-then-else(inDomain(mapForeach{v (variable)}(b,y),x),subst{v (variable)}(alpha::cast(x),y),mapUndef)) +\sameUpdateLevel\replacewith(if-then-else(inDomain(mapForeach{v (variable)}(b,y),x),subst{v (variable)}(cast<[alpha]>(x),y),mapUndef)) \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- @@ -9659,98 +9659,98 @@ Choices: true} == getOfSeq2Map (getOfSeq2Map) ========================================= getOfSeq2Map { \find(mapGet(seq2map(s),x)) -\sameUpdateLevel\replacewith(if-then-else(and(and(equals(int::instance(x),TRUE),leq(Z(0(#)),int::cast(x))),lt(int::cast(x),seqLen(s))),any::seqGet(s,int::cast(x)),mapUndef)) +\sameUpdateLevel\replacewith(if-then-else(and(and(equals(instance<[int]>(x),TRUE),leq(Z(0(#)),cast<[int]>(x))),lt(cast<[int]>(x),seqLen(s))),seqGet<[any]>(s,cast<[int]>(x)),mapUndef)) \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- == getOfSeqConcat (getOfSeqConcat) ========================================= getOfSeqConcat { -\find(alpha::seqGet(seqConcat(seq,seq2),idx)) -\replacewith(if-then-else(lt(idx,seqLen(seq)),alpha::seqGet(seq,idx),alpha::seqGet(seq2,sub(idx,seqLen(seq))))) +\find(seqGet<[alpha]>(seqConcat(seq,seq2),idx)) +\replacewith(if-then-else(lt(idx,seqLen(seq)),seqGet<[alpha]>(seq,idx),seqGet<[alpha]>(seq2,sub(idx,seqLen(seq))))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqConcatEQ (getOfSeqConcat) ========================================= getOfSeqConcatEQ { \assumes ([equals(seqConcat(seq,seq2),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) -\sameUpdateLevel\replacewith(if-then-else(lt(idx,seqLen(seq)),alpha::seqGet(seq,idx),alpha::seqGet(seq2,sub(idx,seqLen(seq))))) +\find(seqGet<[alpha]>(EQ,idx)) +\sameUpdateLevel\replacewith(if-then-else(lt(idx,seqLen(seq)),seqGet<[alpha]>(seq,idx),seqGet<[alpha]>(seq2,sub(idx,seqLen(seq))))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- == getOfSeqDef (getOfSeqDef) ========================================= getOfSeqDef { -\find(alpha::seqGet(seqDef{uSub (variable)}(from,to,t),idx)) +\find(seqGet<[alpha]>(seqDef{uSub (variable)}(from,to,t),idx)) \varcond(\notFreeIn(uSub (variable), to (int term)), \notFreeIn(uSub (variable), from (int term))) -\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),alpha::cast(subst{uSub (variable)}(add(idx,from),t)),alpha::cast(seqGetOutside))) +\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),cast<[alpha]>(subst{uSub (variable)}(add(idx,from),t)),cast<[alpha]>(seqGetOutside))) \heuristics(simplify) Choices: sequences:on} ----------------------------------------------------- == getOfSeqDefEQ (getOfSeqDef) ========================================= getOfSeqDefEQ { \assumes ([equals(seqDef{uSub (variable)}(from,to,t),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) +\find(seqGet<[alpha]>(EQ,idx)) \sameUpdateLevel\varcond(\notFreeIn(uSub (variable), to (int term)), \notFreeIn(uSub (variable), from (int term))) -\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),alpha::cast(subst{uSub (variable)}(add(idx,from),t)),alpha::cast(seqGetOutside))) +\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),cast<[alpha]>(subst{uSub (variable)}(add(idx,from),t)),cast<[alpha]>(seqGetOutside))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqReverse (getOfSeqReverse) ========================================= getOfSeqReverse { -\find(alpha::seqGet(seqReverse(seq),idx)) -\replacewith(alpha::seqGet(seq,sub(sub(seqLen(seq),Z(1(#))),idx))) +\find(seqGet<[alpha]>(seqReverse(seq),idx)) +\replacewith(seqGet<[alpha]>(seq,sub(sub(seqLen(seq),Z(1(#))),idx))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqReverseEQ (getOfSeqReverse) ========================================= getOfSeqReverseEQ { \assumes ([equals(seqReverse(seq),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) -\sameUpdateLevel\replacewith(alpha::seqGet(seq,sub(sub(seqLen(seq),Z(1(#))),idx))) +\find(seqGet<[alpha]>(EQ,idx)) +\sameUpdateLevel\replacewith(seqGet<[alpha]>(seq,sub(sub(seqLen(seq),Z(1(#))),idx))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSingleton (getOfSeqSingleton) ========================================= getOfSeqSingleton { -\find(alpha::seqGet(seqSingleton(x),idx)) -\replacewith(if-then-else(equals(idx,Z(0(#))),alpha::cast(x),alpha::cast(seqGetOutside))) +\find(seqGet<[alpha]>(seqSingleton(x),idx)) +\replacewith(if-then-else(equals(idx,Z(0(#))),cast<[alpha]>(x),cast<[alpha]>(seqGetOutside))) \heuristics(simplify) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSingletonConcrete (getOfSeqSingletonConcrete) ========================================= getOfSeqSingletonConcrete { -\find(alpha::seqGet(seqSingleton(x),Z(0(#)))) -\replacewith(alpha::cast(x)) +\find(seqGet<[alpha]>(seqSingleton(x),Z(0(#)))) +\replacewith(cast<[alpha]>(x)) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSingletonEQ (getOfSeqSingleton) ========================================= getOfSeqSingletonEQ { \assumes ([equals(seqSingleton(x),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) -\sameUpdateLevel\replacewith(if-then-else(equals(idx,Z(0(#))),alpha::cast(x),alpha::cast(seqGetOutside))) +\find(seqGet<[alpha]>(EQ,idx)) +\sameUpdateLevel\replacewith(if-then-else(equals(idx,Z(0(#))),cast<[alpha]>(x),cast<[alpha]>(seqGetOutside))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSub (getOfSeqSub) ========================================= getOfSeqSub { -\find(alpha::seqGet(seqSub(seq,from,to),idx)) -\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),alpha::seqGet(seq,add(idx,from)),alpha::cast(seqGetOutside))) +\find(seqGet<[alpha]>(seqSub(seq,from,to),idx)) +\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),seqGet<[alpha]>(seq,add(idx,from)),cast<[alpha]>(seqGetOutside))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSubEQ (getOfSeqSub) ========================================= getOfSeqSubEQ { \assumes ([equals(seqSub(seq,from,to),EQ)]==>[]) -\find(alpha::seqGet(EQ,idx)) -\sameUpdateLevel\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),alpha::seqGet(seq,add(idx,from)),alpha::cast(seqGetOutside))) +\find(seqGet<[alpha]>(EQ,idx)) +\sameUpdateLevel\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),seqGet<[alpha]>(seq,add(idx,from)),cast<[alpha]>(seqGetOutside))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- == getOfSeqUpd (getOfSeqUpd) ========================================= getOfSeqUpd { -\find(alpha::seqGet(seqUpd(seq,idx,value),jdx)) -\replacewith(if-then-else(and(and(leq(Z(0(#)),jdx),lt(jdx,seqLen(seq))),equals(idx,jdx)),alpha::cast(value),alpha::seqGet(seq,jdx))) +\find(seqGet<[alpha]>(seqUpd(seq,idx,value),jdx)) +\replacewith(if-then-else(and(and(leq(Z(0(#)),jdx),lt(jdx,seqLen(seq))),equals(idx,jdx)),cast<[alpha]>(value),seqGet<[alpha]>(seq,jdx))) \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- @@ -10610,7 +10610,7 @@ Choices: true} == inDomainOfMapForeach (inDomainOfMapForeach) ========================================= inDomainOfMapForeach { \find(inDomain(mapForeach{v (variable)}(b,y),x)) -\replacewith(and(equals(subst{v (variable)}(alpha::cast(x),b),TRUE),equals(alpha::instance(x),TRUE))) +\replacewith(and(equals(subst{v (variable)}(cast<[alpha]>(x),b),TRUE),equals(instance<[alpha]>(x),TRUE))) \heuristics(simplify) Choices: true} ----------------------------------------------------- @@ -10645,7 +10645,7 @@ Choices: true} == inDomainOfSeq2Map (inDomainOfSeq2Map) ========================================= inDomainOfSeq2Map { \find(inDomain(seq2map(s),x)) -\replacewith(and(and(equals(int::instance(x),TRUE),leq(Z(0(#)),int::cast(x))),lt(int::cast(x),seqLen(s)))) +\replacewith(and(and(equals(instance<[int]>(x),TRUE),leq(Z(0(#)),cast<[int]>(x))),lt(cast<[int]>(x),seqLen(s)))) \heuristics(simplify) Choices: true} ----------------------------------------------------- @@ -11185,7 +11185,7 @@ Choices: true} indexOf { \find(clIndexOfChar(l,c,i)) \varcond(\notFreeIn(iv (variable), i (int term)), \notFreeIn(iv (variable), c (int term)), \notFreeIn(iv (variable), l (Seq term))) -\replacewith(ifExThenElse{iv (variable)}(and(and(and(geq(i,Z(0(#))),geq(iv,i)),lt(iv,seqLen(l))),equals(int::seqGet(l,iv),c)),iv,Z(neglit(1(#))))) +\replacewith(ifExThenElse{iv (variable)}(and(and(and(geq(i,Z(0(#))),geq(iv,i)),lt(iv,seqLen(l))),equals(seqGet<[int]>(l,iv),c)),iv,Z(neglit(1(#))))) \heuristics(stringsExpandDefNormalOp) Choices: Strings:on} ----------------------------------------------------- @@ -11193,7 +11193,7 @@ Choices: Strings:on} indexOfSeqConcatFirst { \find(seqIndexOf(seqConcat(s1,s2),x)) \sameUpdateLevel\varcond(\notFreeIn(idx (variable), x (any term)), \notFreeIn(idx (variable), s2 (Seq term)), \notFreeIn(idx (variable), s1 (Seq term))) -\add []==>[exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s1))),equals(any::seqGet(s1,idx),x)))] ; +\add []==>[exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s1))),equals(seqGet<[any]>(s1,idx),x)))] ; \replacewith(seqIndexOf(s1,x)) Choices: sequences:on} @@ -11202,7 +11202,7 @@ Choices: sequences:on} indexOfSeqConcatSecond { \find(seqIndexOf(seqConcat(s1,s2),x)) \sameUpdateLevel\varcond(\notFreeIn(idx (variable), x (any term)), \notFreeIn(idx (variable), s2 (Seq term)), \notFreeIn(idx (variable), s1 (Seq term))) -\add []==>[and(not(exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s1))),equals(any::seqGet(s1,idx),x)))),exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s2))),equals(any::seqGet(s2,idx),x))))] ; +\add []==>[and(not(exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s1))),equals(seqGet<[any]>(s1,idx),x)))),exists{idx (variable)}(and(and(leq(Z(0(#)),idx),lt(idx,seqLen(s2))),equals(seqGet<[any]>(s2,idx),x))))] ; \replacewith(add(seqIndexOf(s2,x),seqLen(s1))) Choices: sequences:on} @@ -11218,7 +11218,7 @@ Choices: sequences:on} indexOfSeqSub { \find(seqIndexOf(seqSub(s,from,to),x)) \sameUpdateLevel\varcond(\notFreeIn(nx (variable), to (int term)), \notFreeIn(nx (variable), from (int term)), \notFreeIn(nx (variable), x (any term)), \notFreeIn(nx (variable), s (Seq term))) -\add []==>[and(and(and(leq(from,seqIndexOf(s,x)),lt(seqIndexOf(s,x),to)),leq(Z(0(#)),from)),exists{nx (variable)}(and(and(leq(Z(0(#)),nx),lt(nx,seqLen(s))),equals(any::seqGet(s,nx),x))))] ; +\add []==>[and(and(and(leq(from,seqIndexOf(s,x)),lt(seqIndexOf(s,x),to)),leq(Z(0(#)),from)),exists{nx (variable)}(and(and(leq(Z(0(#)),nx),lt(nx,seqLen(s))),equals(seqGet<[any]>(s,nx),x))))] ; \replacewith(sub(seqIndexOf(s,x),from)) Choices: sequences:on} @@ -11233,25 +11233,25 @@ Choices: Strings:on} ----------------------------------------------------- == ineffectiveCast (ineffectiveCast) ========================================= ineffectiveCast { -\assumes ([equals(H::instance(t),TRUE)]==>[]) -\find(H::cast(t)) -\sameUpdateLevel\add [equals(H::cast(t),t)]==>[] +\assumes ([equals(instance<[H]>(t),TRUE)]==>[]) +\find(cast<[H]>(t)) +\sameUpdateLevel\add [equals(cast<[H]>(t),t)]==>[] \heuristics(inReachableStateImplication) Choices: true} ----------------------------------------------------- == ineffectiveCast2 (ineffectiveCast2) ========================================= ineffectiveCast2 { \assumes ([equals(cs,gt)]==>[]) -\find(C::cast(gt)) -\sameUpdateLevel\add [equals(C::cast(gt),gt)]==>[] +\find(cast<[C]>(gt)) +\sameUpdateLevel\add [equals(cast<[C]>(gt),gt)]==>[] \heuristics(inReachableStateImplication) Choices: true} ----------------------------------------------------- == ineffectiveCast3 (ineffectiveCast3) ========================================= ineffectiveCast3 { -\assumes ([equals(H::exactInstance(t),TRUE)]==>[]) -\find(H::cast(t)) -\sameUpdateLevel\add [equals(H::cast(t),t)]==>[] +\assumes ([equals(exactInstance<[H]>(t),TRUE)]==>[]) +\find(cast<[H]>(t)) +\sameUpdateLevel\add [equals(cast<[H]>(t),t)]==>[] \heuristics(inReachableStateImplication) Choices: true} ----------------------------------------------------- @@ -11307,7 +11307,7 @@ Choices: programRules:Java} insert_constant_string_value { \assumes ([wellFormed(heap)]==>[]) \find(#csv) -\sameUpdateLevel\add [or(equals(#constantvalue(#csv),null),and(not(equals(strPool(Seq::cast(#constantvalue(#csv))),null)),equals(select<[boolean]>(heap,strPool(Seq::cast(#constantvalue(#csv))),java.lang.Object::#$created),TRUE)))]==>[] \replacewith(if-then-else(equals(#constantvalue(#csv),null),null,strPool(Seq::cast(#constantvalue(#csv))))) +\sameUpdateLevel\add [or(equals(#constantvalue(#csv),null),and(not(equals(strPool(cast<[Seq]>(#constantvalue(#csv))),null)),equals(select<[boolean]>(heap,strPool(cast<[Seq]>(#constantvalue(#csv))),java.lang.Object::#$created),TRUE)))]==>[] \replacewith(if-then-else(equals(#constantvalue(#csv),null),null,strPool(cast<[Seq]>(#constantvalue(#csv))))) \heuristics(concrete) Choices: true} ----------------------------------------------------- @@ -11442,8 +11442,8 @@ Choices: programRules:Java} ----------------------------------------------------- == instance_for_final_types (instance_for_final_types) ========================================= instance_for_final_types { -\assumes ([]==>[equals(J::exactInstance(a),TRUE)]) -\find(equals(J::instance(a),TRUE)==>) +\assumes ([]==>[equals(exactInstance<[J]>(a),TRUE)]) +\find(equals(instance<[J]>(a),TRUE)==>) \varcond(\isFinal (J)) \replacewith([equals(a,null)]==>[]) \heuristics(simplify) @@ -11464,8 +11464,8 @@ Choices: programRules:Java} ----------------------------------------------------- == instanceof_known_dynamic_type (instanceof_known_dynamic_type) ========================================= instanceof_known_dynamic_type { -\assumes ([equals(G::exactInstance(a),TRUE)]==>[]) -\find(H::instance(a)) +\assumes ([equals(exactInstance<[G]>(a),TRUE)]==>[]) +\find(instance<[H]>(a)) \sameUpdateLevel\varcond(\sub(G, H)) \replacewith(TRUE) \heuristics(evaluate_instanceof, simplify) @@ -11473,8 +11473,8 @@ Choices: true} ----------------------------------------------------- == instanceof_known_dynamic_type_2 (instanceof_known_dynamic_type_2) ========================================= instanceof_known_dynamic_type_2 { -\assumes ([equals(G::exactInstance(a),TRUE)]==>[]) -\find(H::instance(a)) +\assumes ([equals(exactInstance<[G]>(a),TRUE)]==>[]) +\find(instance<[H]>(a)) \sameUpdateLevel\varcond(\not\sub(G, H)) \replacewith(FALSE) \heuristics(evaluate_instanceof, simplify) @@ -11482,7 +11482,7 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible (instanceof disjoint type) ========================================= instanceof_not_compatible { -\find(equals(G::instance(a),TRUE)) +\find(equals(instance<[G]>(a),TRUE)) \varcond(\sub(Null, G), \disjointModuloNull(G, \typeof(a (any term)))) \replacewith(equals(a,null)) \heuristics(evaluate_instanceof, concrete) @@ -11490,7 +11490,7 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible_2 (instanceof disjoint type) ========================================= instanceof_not_compatible_2 { -\find(equals(G::instance(a),FALSE)) +\find(equals(instance<[G]>(a),FALSE)) \varcond(\sub(Null, G), \disjointModuloNull(G, \typeof(a (any term)))) \replacewith(not(equals(a,null))) \heuristics(evaluate_instanceof, concrete) @@ -11498,7 +11498,7 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible_3 (instanceof disjoint type) ========================================= instanceof_not_compatible_3 { -\find(equals(G::instance(a),TRUE)) +\find(equals(instance<[G]>(a),TRUE)) \varcond(\not\sub(Null, G), \disjointModuloNull(G, \typeof(a (any term)))) \replacewith(false) \heuristics(evaluate_instanceof, concrete) @@ -11506,7 +11506,7 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible_4 (instanceof disjoint type) ========================================= instanceof_not_compatible_4 { -\find(equals(G::instance(a),FALSE)) +\find(equals(instance<[G]>(a),FALSE)) \varcond(\not\sub(Null, G), \disjointModuloNull(G, \typeof(a (any term)))) \replacewith(true) \heuristics(evaluate_instanceof, concrete) @@ -11514,8 +11514,8 @@ Choices: true} ----------------------------------------------------- == instanceof_not_compatible_5 (instanceof disjoint type) ========================================= instanceof_not_compatible_5 { -\assumes ([equals(H::instance(a),TRUE)]==>[]) -\find(equals(G::instance(a),TRUE)) +\assumes ([equals(instance<[H]>(a),TRUE)]==>[]) +\find(equals(instance<[G]>(a),TRUE)) \varcond(\sub(Null, G), \disjointModuloNull(G, H)) \replacewith(equals(a,null)) \heuristics(evaluate_instanceof, concrete) @@ -11523,7 +11523,7 @@ Choices: true} ----------------------------------------------------- == instanceof_static_type (instanceof static supertype) ========================================= instanceof_static_type { -\find(G::instance(a)) +\find(instance<[G]>(a)) \varcond(\sub(\typeof(a (any term)), G)) \replacewith(TRUE) \heuristics(evaluate_instanceof, concrete) @@ -11532,7 +11532,7 @@ Choices: true} == instanceof_static_type_2 (instanceof static supertype) ========================================= instanceof_static_type_2 { \assumes ([equals(a2,a)]==>[]) -\find(G::instance(a)) +\find(instance<[G]>(a)) \sameUpdateLevel\varcond(\sub(\typeof(a2 (any term)), G)) \replacewith(TRUE) \heuristics(evaluate_instanceof, concrete) @@ -11550,7 +11550,7 @@ intLongToFloatAddition1 { \find(#normalassign ((modal operator))|{{ .. #loc = #seLong + #seFloat; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(float::cast(#seLong),#seFloat)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(cast<[float]>(#seLong),#seFloat)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -11559,7 +11559,7 @@ intToFloatAddition { \find(#normalassign ((modal operator))|{{ .. #loc = #seCharByteShortInt + #seFloat; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(float::cast(#seCharByteShortInt),#seFloat)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(javaAddFloat(cast<[float]>(#seCharByteShortInt),#seFloat)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -11581,7 +11581,7 @@ Choices: true} == intersectAllFieldsFreshLocs (intersectAllFieldsFreshLocs) ========================================= intersectAllFieldsFreshLocs { \find(equals(intersect(allFields(o),freshLocs(h)),empty)) -\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) +\replacewith(or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -12058,7 +12058,7 @@ Choices: true} lastIndexOf { \find(clLastIndexOfChar(sourceStr,c,i)) \varcond(\notFreeIn(iv (variable), sourceStr (Seq term)), \notFreeIn(iv (variable), i (int term)), \notFreeIn(iv (variable), c (int term))) -\replacewith(ifExThenElse{iv (variable)}(and(and(and(gt(iv,Z(0(#))),geq(i,iv)),lt(sub(i,iv),seqLen(sourceStr))),equals(int::seqGet(sourceStr,sub(i,iv)),c)),sub(i,iv),Z(neglit(1(#))))) +\replacewith(ifExThenElse{iv (variable)}(and(and(and(gt(iv,Z(0(#))),geq(i,iv)),lt(sub(i,iv),seqLen(sourceStr))),equals(seqGet<[int]>(sourceStr,sub(i,iv)),c)),sub(i,iv),Z(neglit(1(#))))) \heuristics(stringsExpandDefNormalOp) Choices: Strings:on} ----------------------------------------------------- @@ -13545,35 +13545,35 @@ Choices: integerSimplificationRules:full} == narrowFinalArrayType (narrowFinalArrayType) ========================================= narrowFinalArrayType { \assumes ([]==>[equals(o,null)]) -\find(beta::final(o,arr(idx))) +\find(final<[beta]>(o,arr(idx))) \sameUpdateLevel\varcond(\hasSort(\elemSort(o (java.lang.Object term)), alpha), \strict\sub(alpha, beta)) -\replacewith(alpha::final(o,arr(idx))) +\replacewith(final<[alpha]>(o,arr(idx))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- == narrowSelectArrayType (narrowSelectArrayType) ========================================= narrowSelectArrayType { \assumes ([wellFormed(h)]==>[equals(o,null)]) -\find(beta::select(h,o,arr(idx))) +\find(select<[beta]>(h,o,arr(idx))) \sameUpdateLevel\varcond(\hasSort(\elemSort(o (java.lang.Object term)), alpha), \strict\sub(alpha, beta)) -\replacewith(alpha::select(h,o,arr(idx))) +\replacewith(select<[alpha]>(h,o,arr(idx))) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- == narrowSelectType (narrowSelectType) ========================================= narrowSelectType { \assumes ([wellFormed(h)]==>[]) -\find(beta::select(h,o,f)) +\find(select<[beta]>(h,o,f)) \varcond(\fieldType(f (Field term), alpha), \strict\sub(alpha, beta)) -\replacewith(alpha::select(h,o,f)) +\replacewith(select<[alpha]>(h,o,f)) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- == narrowTypeFinal (narrowTypeFinal) ========================================= narrowTypeFinal { -\find(beta::final(o,f)) +\find(final<[beta]>(o,f)) \varcond(\fieldType(f (Field term), alpha), \strict\sub(alpha, beta)) -\replacewith(alpha::final(o,f)) +\replacewith(final<[alpha]>(o,f)) \heuristics(simplify) Choices: programRules:Java} ----------------------------------------------------- @@ -13618,7 +13618,7 @@ narrowingCastFloatToInt { \find(#normalassign ((modal operator))|{{ .. #loc = (int) #seFloat; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(int::cast(#seFloat)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(cast<[int]>(#seFloat)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -13627,7 +13627,7 @@ narrowingCastFloatToLong { \find(#normalassign ((modal operator))|{{ .. #loc = (long) #seFloat; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(int::cast(#seFloat)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(cast<[int]>(#seFloat)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -13875,7 +13875,7 @@ Choices: programRules:Java} nonNull { \find(nonNull(heapSV,o,depth)) \varcond(\notFreeIn(i (variable), depth (int term)), \notFreeIn(i (variable), heapSV (Heap term)), \notFreeIn(i (variable), o (java.lang.Object term)), \isReferenceArray(o (java.lang.Object term))) -\replacewith(and(not(equals(o,null)),imp(gt(depth,Z(0(#))),all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,length(o))),nonNull(heapSV,java.lang.Object::select(heapSV,o,arr(i)),sub(depth,Z(1(#))))))))) +\replacewith(and(not(equals(o,null)),imp(gt(depth,Z(0(#))),all{i (variable)}(imp(and(leq(Z(0(#)),i),lt(i,length(o))),nonNull(heapSV,select<[java.lang.Object]>(heapSV,o,arr(i)),sub(depth,Z(1(#))))))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -13909,7 +13909,7 @@ Choices: true} ----------------------------------------------------- == nullCreated (nullCreated) ========================================= nullCreated { -\add [or(all{h (variable)}(equals(select<[boolean]>(h,null,java.lang.Object::#$created),TRUE)),all{h (variable)}(equals(select<[boolean]>(h,null,java.lang.Object::#$created),FALSE)))]==>[] +\add [or(all{h (variable)}(equals(select<[boolean]>(h,null,java.lang.Object::#$created),TRUE)),all{h (variable)}(equals(select<[boolean]>(h,null,java.lang.Object::#$created),FALSE)))]==>[] Choices: programRules:Java} ----------------------------------------------------- @@ -13975,32 +13975,32 @@ Choices: programRules:Java} == onlyCreatedObjectsAreInLocSets (onlyCreatedObjectsAreInLocSets) ========================================= onlyCreatedObjectsAreInLocSets { \assumes ([wellFormed(h)]==>[]) -\find(elementOf(o2,f2,LocSet::select(h,o,f))==>) -\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\find(elementOf(o2,f2,select<[LocSet]>(h,o,f))==>) +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreInLocSetsEQ (onlyCreatedObjectsAreInLocSetsEQ) ========================================= onlyCreatedObjectsAreInLocSetsEQ { -\assumes ([wellFormed(h),equals(LocSet::select(h,o,f),EQ)]==>[]) +\assumes ([wellFormed(h),equals(select<[LocSet]>(h,o,f),EQ)]==>[]) \find(elementOf(o2,f2,EQ)==>) -\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreInLocSetsEQFinal (onlyCreatedObjectsAreInLocSetsEQFinal) ========================================= onlyCreatedObjectsAreInLocSetsEQFinal { -\assumes ([wellFormed(h),equals(LocSet::final(o,f),EQ)]==>[]) +\assumes ([wellFormed(h),equals(final<[LocSet]>(o,f),EQ)]==>[]) \find(elementOf(o2,f2,EQ)==>) -\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreInLocSetsFinal (onlyCreatedObjectsAreInLocSetsFinal) ========================================= onlyCreatedObjectsAreInLocSetsFinal { \assumes ([wellFormed(h)]==>[]) -\find(elementOf(o2,f2,LocSet::final(o,f))==>) -\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\find(elementOf(o2,f2,final<[LocSet]>(o,f))==>) +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14008,7 +14008,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreObserved { \find(obs) \sameUpdateLevel\varcond(\isObserver (obs (deltaObject term), h (Heap term))) -\add [or(equals(obs,null),equals(select<[boolean]>(h,obs,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(obs,null),equals(select<[boolean]>(h,obs,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14016,7 +14016,7 @@ Choices: programRules:Java} onlyCreatedObjectsAreObservedInLocSets { \find(elementOf(o,f,obs)==>) \varcond(\isObserver (obs (LocSet term), h (Heap term))) -\add [or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14025,23 +14025,23 @@ onlyCreatedObjectsAreObservedInLocSetsEQ { \assumes ([equals(obs,EQ)]==>[]) \find(elementOf(o,f,EQ)==>) \varcond(\isObserver (obs (LocSet term), h (Heap term))) -\add [or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))]==>[] +\add [or(equals(o,null),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreReferenced (onlyCreatedObjectsAreReferenced) ========================================= onlyCreatedObjectsAreReferenced { \assumes ([wellFormed(h)]==>[]) -\find(deltaObject::select(h,o,f)) -\sameUpdateLevel\add [or(equals(deltaObject::select(h,o,f),null),equals(select<[boolean]>(h,deltaObject::select(h,o,f),java.lang.Object::#$created),TRUE))]==>[] +\find(select<[deltaObject]>(h,o,f)) +\sameUpdateLevel\add [or(equals(select<[deltaObject]>(h,o,f),null),equals(select<[boolean]>(h,select<[deltaObject]>(h,o,f),java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreReferencedFinal (onlyCreatedObjectsAreReferencedFinal) ========================================= onlyCreatedObjectsAreReferencedFinal { -\assumes ([wellFormed(h),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)]==>[]) -\find(deltaObject::final(o,f)) -\sameUpdateLevel\add [or(equals(deltaObject::final(o,f),null),equals(select<[boolean]>(h,deltaObject::final(o,f),java.lang.Object::#$created),TRUE))]==>[] +\assumes ([wellFormed(h),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)]==>[]) +\find(final<[deltaObject]>(o,f)) +\sameUpdateLevel\add [or(equals(final<[deltaObject]>(o,f),null),equals(select<[boolean]>(h,final<[deltaObject]>(o,f),java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- @@ -14049,7 +14049,7 @@ Choices: programRules:Java} only_created_objects_are_reachable { \assumes ([wellFormed(h)]==>[equals(o,null)]) \find(reach(h,s,o,o2,n)==>) -\add [or(not(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\add [or(not(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE)),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) Choices: reach:on} ----------------------------------------------------- @@ -14127,7 +14127,7 @@ Choices: true} ----------------------------------------------------- == permissionDefaultValue (permissionDefaultValue) ========================================= permissionDefaultValue { -\find(Permission::defaultValue) +\find(defaultValue<[Permission]>) \replacewith(initFullPermission) \heuristics(simplify) Choices: true} @@ -14770,7 +14770,7 @@ Choices: true} precOfSeq { \find(prec(s1,s2)) \varcond(\notFreeIn(jv (variable), s2 (Seq term)), \notFreeIn(jv (variable), s1 (Seq term)), \notFreeIn(iv (variable), s2 (Seq term)), \notFreeIn(iv (variable), s1 (Seq term))) -\replacewith(or(and(equals(seqLen(s1),seqLen(s2)),exists{iv (variable)}(and(and(and(leq(Z(0(#)),iv),lt(iv,seqLen(s1))),prec(any::seqGet(s1,iv),any::seqGet(s2,iv))),all{jv (variable)}(imp(and(leq(Z(0(#)),jv),lt(jv,iv)),equals(any::seqGet(s1,jv),any::seqGet(s2,jv))))))),lt(seqLen(s1),seqLen(s2)))) +\replacewith(or(and(equals(seqLen(s1),seqLen(s2)),exists{iv (variable)}(and(and(and(leq(Z(0(#)),iv),lt(iv,seqLen(s1))),prec(seqGet<[any]>(s1,iv),seqGet<[any]>(s2,iv))),all{jv (variable)}(imp(and(leq(Z(0(#)),jv),lt(jv,iv)),equals(seqGet<[any]>(s1,jv),seqGet<[any]>(s2,jv))))))),lt(seqLen(s1),seqLen(s2)))) Choices: true} ----------------------------------------------------- @@ -14959,8 +14959,8 @@ Choices: true} ----------------------------------------------------- == pullOutSelect (pullOutSelect) ========================================= pullOutSelect { -\find(beta::select(h,o,f)) -\sameUpdateLevel\add [equals(beta::select(h,o,f),selectSK<>)]==>[] \replacewith(selectSK<>) +\find(select<[beta]>(h,o,f)) +\sameUpdateLevel\add [equals(select<[beta]>(h,o,f),selectSK<>)]==>[] \replacewith(selectSK<>) \heuristics(pull_out_select) Choices: programRules:Java} ----------------------------------------------------- @@ -15086,7 +15086,7 @@ Choices: reach:on} ----------------------------------------------------- == reachEndOfUniquePath (reachEndOfUniquePath) ========================================= reachEndOfUniquePath { -\assumes ([reach(h,allObjects(f),o,o2,n),equals(alpha::select(h,o2,f),null),equals(alpha::select(h,o3,f),null)]==>[]) +\assumes ([reach(h,allObjects(f),o,o2,n),equals(select<[alpha]>(h,o2,f),null),equals(select<[alpha]>(h,o3,f),null)]==>[]) \find(reach(h,allObjects(f),o,o3,n2)==>) \varcond(\different (n (int term), n2 (int term))) \add [and(equals(o2,o3),equals(n,n2))]==>[] @@ -15095,7 +15095,7 @@ Choices: reach:on} ----------------------------------------------------- == reachEndOfUniquePath2 (reachEndOfUniquePath2) ========================================= reachEndOfUniquePath2 { -\assumes ([reach(h,allObjects(f),o,o2,n),equals(alpha::select(h,o2,f),null)]==>[]) +\assumes ([reach(h,allObjects(f),o,o2,n),equals(select<[alpha]>(h,o2,f),null)]==>[]) \find(reach(h,allObjects(f),o,o3,n2)==>) \varcond(\different (o (java.lang.Object term), o2 (java.lang.Object term)), \different (n (int term), n2 (int term))) \add [or(lt(n2,n),and(equals(o2,o3),equals(n,n2)))]==>[] @@ -15177,30 +15177,30 @@ reference_type_cast { #lhs = (#npit) #se; ... }}| (post)) \varcond(\hasSort(#npit (program NonPrimitiveType), G), \not\sub(\typeof(#se (program SimpleExpression)), G)) -\add []==>[or(equals(#se,null),equals(G::instance(#se),TRUE))] \replacewith([]==>[false]) ; +\add []==>[or(equals(#se,null),equals(instance<[G]>(#se),TRUE))] \replacewith([]==>[false]) ; \replacewith([]==>[update-application(elem-update(#lhs (program LeftHandSide))(#addCast(#se,#lhs)),#allmodal(post))]) \heuristics(simplify_prog) Choices: (programRules:Java & runtimeExceptions:ban)} ----------------------------------------------------- == referencedObjectIsCreatedRighFinalEQ (referencedObjectIsCreatedRighFinalEQ) ========================================= referencedObjectIsCreatedRighFinalEQ { -\assumes ([equals(deltaObject::final(o,f),EQ)]==>[equals(EQ,null)]) +\assumes ([equals(final<[deltaObject]>(o,f),EQ)]==>[equals(EQ,null)]) \find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::#$created),TRUE)) -\add []==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))] +\add []==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))] \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == referencedObjectIsCreatedRight (referencedObjectIsCreatedRight) ========================================= referencedObjectIsCreatedRight { -\assumes ([]==>[equals(deltaObject::select(h,o,f),null)]) -\find(==>equals(select<[boolean]>(h,deltaObject::select(h,o,f),java.lang.Object::#$created),TRUE)) +\assumes ([]==>[equals(select<[deltaObject]>(h,o,f),null)]) +\find(==>equals(select<[boolean]>(h,select<[deltaObject]>(h,o,f),java.lang.Object::#$created),TRUE)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- == referencedObjectIsCreatedRightEQ (referencedObjectIsCreatedRightEQ) ========================================= referencedObjectIsCreatedRightEQ { -\assumes ([equals(deltaObject::select(h,o,f),EQ)]==>[equals(EQ,null)]) +\assumes ([equals(select<[deltaObject]>(h,o,f),EQ)]==>[equals(EQ,null)]) \find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::#$created),TRUE)) \replacewith([]==>[wellFormed(h)]) \heuristics(concrete) @@ -15208,9 +15208,9 @@ Choices: programRules:Java} ----------------------------------------------------- == referencedObjectIsCreatedRightFinal (referencedObjectIsCreatedRightFinal) ========================================= referencedObjectIsCreatedRightFinal { -\assumes ([]==>[equals(deltaObject::final(o,f),null)]) -\find(==>equals(select<[boolean]>(h,deltaObject::final(o,f),java.lang.Object::#$created),TRUE)) -\replacewith([]==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))]) +\assumes ([]==>[equals(final<[deltaObject]>(o,f),null)]) +\find(==>equals(select<[boolean]>(h,final<[deltaObject]>(o,f),java.lang.Object::#$created),TRUE)) +\replacewith([]==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))]) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -15290,7 +15290,7 @@ Choices: Strings:on} == removeZeros (removeZeros) ========================================= removeZeros { \find(clRemoveZeros(l)) -\replacewith(if-then-else(or(equals(l,seqEmpty),equals(int::seqGet(l,Z(0(#))),C(8(4(#))))),l,clRemoveZeros(seqSub(l,Z(1(#)),seqLen(l))))) +\replacewith(if-then-else(or(equals(l,seqEmpty),equals(seqGet<[int]>(l,Z(0(#))),C(8(4(#))))),l,clRemoveZeros(seqSub(l,Z(1(#)),seqLen(l))))) \heuristics(integerToString) Choices: Strings:on} ----------------------------------------------------- @@ -15390,7 +15390,7 @@ Choices: Strings:on} replaceDef { \find(clReplace(str,searchChar,replChar)) \sameUpdateLevel\varcond(\notFreeIn(pos (variable), replChar (int term)), \notFreeIn(pos (variable), searchChar (int term)), \notFreeIn(pos (variable), str (Seq term))) -\add [and(equals(clReplace(str,searchChar,replChar),newSym),equals(seqDef{pos (variable)}(Z(0(#)),seqLen(str),if-then-else(equals(int::seqGet(str,pos),searchChar),replChar,int::seqGet(str,pos))),newSym))]==>[] +\add [and(equals(clReplace(str,searchChar,replChar),newSym),equals(seqDef{pos (variable)}(Z(0(#)),seqLen(str),if-then-else(equals(seqGet<[int]>(str,pos),searchChar),replChar,seqGet<[int]>(str,pos))),newSym))]==>[] \heuristics(stringsIntroduceNewSym, defOpsReplace) Choices: Strings:on} ----------------------------------------------------- @@ -15601,7 +15601,7 @@ Choices: true} ----------------------------------------------------- == sameTypeFalse (sameTypeFalse) ========================================= sameTypeFalse { -\assumes ([equals(G::exactInstance(x1),TRUE),equals(H::exactInstance(x2),TRUE)]==>[]) +\assumes ([equals(exactInstance<[G]>(x1),TRUE),equals(exactInstance<[H]>(x2),TRUE)]==>[]) \find(sameType(x1,x2)) \varcond(\not\same(G, H)) \replacewith(false) @@ -15610,7 +15610,7 @@ Choices: true} ----------------------------------------------------- == sameTypeTrue (sameTypeTrue) ========================================= sameTypeTrue { -\assumes ([equals(G::exactInstance(x1),TRUE),equals(G::exactInstance(x2),TRUE)]==>[]) +\assumes ([equals(exactInstance<[G]>(x1),TRUE),equals(exactInstance<[G]>(x2),TRUE)]==>[]) \find(sameType(x1,x2)) \replacewith(true) \heuristics(concrete) @@ -15676,7 +15676,7 @@ Choices: programRules:Java} schiffl_lemma_2 { \find(seqPerm(s,t)==>) \varcond(\notFreeIn(y (variable), t (Seq term)), \notFreeIn(y (variable), s (Seq term)), \notFreeIn(x (variable), t (Seq term)), \notFreeIn(x (variable), s (Seq term)), \notFreeIn(r (variable), t (Seq term)), \notFreeIn(r (variable), s (Seq term)), \notFreeIn(iv (variable), t (Seq term)), \notFreeIn(iv (variable), s (Seq term))) -\add [all{x (variable)}(all{y (variable)}(imp(and(and(and(and(and(equals(any::seqGet(s,x),any::seqGet(t,x)),equals(any::seqGet(s,y),any::seqGet(t,y))),leq(Z(0(#)),x)),lt(x,seqLen(s))),leq(Z(0(#)),y)),lt(y,seqLen(s))),exists{r (variable)}(and(and(and(and(equals(seqLen(r),seqLen(s)),seqNPerm(r)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(any::seqGet(s,iv),any::seqGet(t,int::seqGet(r,iv)))))),equals(int::seqGet(r,x),x)),equals(int::seqGet(r,y),y))))))]==>[] +\add [all{x (variable)}(all{y (variable)}(imp(and(and(and(and(and(equals(seqGet<[any]>(s,x),seqGet<[any]>(t,x)),equals(seqGet<[any]>(s,y),seqGet<[any]>(t,y))),leq(Z(0(#)),x)),lt(x,seqLen(s))),leq(Z(0(#)),y)),lt(y,seqLen(s))),exists{r (variable)}(and(and(and(and(equals(seqLen(r),seqLen(s)),seqNPerm(r)),all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),equals(seqGet<[any]>(s,iv),seqGet<[any]>(t,seqGet<[int]>(r,iv)))))),equals(seqGet<[int]>(r,x),x)),equals(seqGet<[int]>(r,y),y))))))]==>[] Choices: true} ----------------------------------------------------- @@ -15684,7 +15684,7 @@ Choices: true} schiffl_thm_1 { \find(seqPerm(s,t)==>) \varcond(\notFreeIn(idx (variable), t (Seq term)), \notFreeIn(idx (variable), s (Seq term)), \notFreeIn(idx (variable), b (any term)), \notFreeIn(idx (variable), a (any term)), \notFreeIn(idx (variable), y (int term)), \notFreeIn(idx (variable), x (int term))) -\add [imp(and(and(and(and(and(and(seqPerm(s,t),equals(any::seqGet(s,x),any::seqGet(t,x))),equals(any::seqGet(s,y),any::seqGet(t,y))),leq(Z(0(#)),x)),lt(x,seqLen(s))),leq(Z(0(#)),y)),lt(y,seqLen(s))),seqPerm(seqDef{idx (variable)}(Z(0(#)),seqLen(s),if-then-else(equals(idx,y),b,if-then-else(equals(idx,x),a,any::seqGet(s,idx)))),seqDef{idx (variable)}(Z(0(#)),seqLen(s),if-then-else(equals(idx,y),b,if-then-else(equals(idx,x),a,any::seqGet(t,idx))))))]==>[] +\add [imp(and(and(and(and(and(and(seqPerm(s,t),equals(seqGet<[any]>(s,x),seqGet<[any]>(t,x))),equals(seqGet<[any]>(s,y),seqGet<[any]>(t,y))),leq(Z(0(#)),x)),lt(x,seqLen(s))),leq(Z(0(#)),y)),lt(y,seqLen(s))),seqPerm(seqDef{idx (variable)}(Z(0(#)),seqLen(s),if-then-else(equals(idx,y),b,if-then-else(equals(idx,x),a,seqGet<[any]>(s,idx)))),seqDef{idx (variable)}(Z(0(#)),seqLen(s),if-then-else(equals(idx,y),b,if-then-else(equals(idx,x),a,seqGet<[any]>(t,idx))))))]==>[] Choices: true} ----------------------------------------------------- @@ -15698,14 +15698,14 @@ Choices: true} == selectCreatedOfAnon (selectCreatedOfAnon) ========================================= selectCreatedOfAnon { \find(select<[boolean]>(anon(h,s,h2),o,java.lang.Object::#$created)) -\replacewith(if-then-else(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),TRUE,select<[boolean]>(h2,o,java.lang.Object::#$created))) +\replacewith(if-then-else(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),TRUE,select<[boolean]>(h2,o,java.lang.Object::#$created))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectCreatedOfAnonAsFormula (selectCreatedOfAnonAsFormula) ========================================= selectCreatedOfAnonAsFormula { \find(equals(select<[boolean]>(anon(h,s,h2),o,java.lang.Object::#$created),TRUE)) -\replacewith(or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(select<[boolean]>(h2,o,java.lang.Object::#$created),TRUE))) +\replacewith(or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(select<[boolean]>(h2,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_ENLARGING) Choices: programRules:Java} ----------------------------------------------------- @@ -15713,7 +15713,7 @@ Choices: programRules:Java} selectCreatedOfAnonAsFormulaEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) \find(equals(select<[boolean]>(EQ,o,java.lang.Object::#$created),TRUE)) -\sameUpdateLevel\replacewith(or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(select<[boolean]>(h2,o,java.lang.Object::#$created),TRUE))) +\sameUpdateLevel\replacewith(or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(select<[boolean]>(h2,o,java.lang.Object::#$created),TRUE))) \heuristics(simplify_ENLARGING) Choices: programRules:Java} ----------------------------------------------------- @@ -15721,67 +15721,67 @@ Choices: programRules:Java} selectCreatedOfAnonEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) \find(select<[boolean]>(EQ,o,java.lang.Object::#$created)) -\sameUpdateLevel\replacewith(if-then-else(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),TRUE,select<[boolean]>(h2,o,java.lang.Object::#$created))) +\sameUpdateLevel\replacewith(if-then-else(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),TRUE,select<[boolean]>(h2,o,java.lang.Object::#$created))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectOfAnon (selectOfAnon) ========================================= selectOfAnon { -\find(beta::select(anon(h,s,h2),o,f)) -\replacewith(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),elementOf(o,f,freshLocs(h))),beta::select(h2,o,f),beta::select(h,o,f))) +\find(select<[beta]>(anon(h,s,h2),o,f)) +\replacewith(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),elementOf(o,f,freshLocs(h))),select<[beta]>(h2,o,f),select<[beta]>(h,o,f))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- == selectOfAnonEQ (selectOfAnonEQ) ========================================= selectOfAnonEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) -\find(beta::select(EQ,o,f)) -\sameUpdateLevel\replacewith(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),elementOf(o,f,freshLocs(h))),beta::select(h2,o,f),beta::select(h,o,f))) +\find(select<[beta]>(EQ,o,f)) +\sameUpdateLevel\replacewith(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),elementOf(o,f,freshLocs(h))),select<[beta]>(h2,o,f),select<[beta]>(h,o,f))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectOfCreate (selectOfCreate) ========================================= selectOfCreate { -\find(beta::select(create(h,o),o2,f)) -\replacewith(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::#$created)),beta::cast(TRUE),beta::select(h,o2,f))) +\find(select<[beta]>(create(h,o),o2,f)) +\replacewith(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::#$created)),cast<[beta]>(TRUE),select<[beta]>(h,o2,f))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- == selectOfCreateEQ (selectOfCreateEQ) ========================================= selectOfCreateEQ { \assumes ([equals(create(h,o),EQ)]==>[]) -\find(beta::select(EQ,o2,f)) -\sameUpdateLevel\replacewith(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::#$created)),beta::cast(TRUE),beta::select(h,o2,f))) +\find(select<[beta]>(EQ,o2,f)) +\sameUpdateLevel\replacewith(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::#$created)),cast<[beta]>(TRUE),select<[beta]>(h,o2,f))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectOfMemset (selectOfMemset) ========================================= selectOfMemset { -\find(beta::select(memset(h,s,x),o,f)) -\replacewith(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),beta::cast(x),beta::select(h,o,f))) +\find(select<[beta]>(memset(h,s,x),o,f)) +\replacewith(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),cast<[beta]>(x),select<[beta]>(h,o,f))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- == selectOfMemsetEQ (selectOfMemsetEQ) ========================================= selectOfMemsetEQ { \assumes ([equals(memset(h,s,x),EQ)]==>[]) -\find(beta::select(EQ,o,f)) -\sameUpdateLevel\replacewith(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),beta::cast(x),beta::select(h,o,f))) +\find(select<[beta]>(EQ,o,f)) +\sameUpdateLevel\replacewith(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),cast<[beta]>(x),select<[beta]>(h,o,f))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- == selectOfStore (selectOfStore) ========================================= selectOfStore { -\find(beta::select(store(h,o,f,x),o2,f2)) -\replacewith(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::#$created))),beta::cast(x),beta::select(h,o2,f2))) +\find(select<[beta]>(store(h,o,f,x),o2,f2)) +\replacewith(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::#$created))),cast<[beta]>(x),select<[beta]>(h,o2,f2))) \heuristics(semantics_blasting) Choices: programRules:Java} ----------------------------------------------------- == selectOfStoreEQ (selectOfStoreEQ) ========================================= selectOfStoreEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) -\find(beta::select(EQ,o2,f2)) -\sameUpdateLevel\replacewith(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::#$created))),beta::cast(x),beta::select(h,o2,f2))) +\find(select<[beta]>(EQ,o2,f2)) +\sameUpdateLevel\replacewith(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::#$created))),cast<[beta]>(x),select<[beta]>(h,o2,f2))) \heuristics(simplify_heap_high_costs) Choices: programRules:Java} ----------------------------------------------------- @@ -15827,7 +15827,7 @@ Choices: sequences:on} ----------------------------------------------------- == seqDefOfSeq (seqDefOfSeq) ========================================= seqDefOfSeq { -\find(seqDef{u (variable)}(Z(0(#)),x,any::seqGet(s,u))) +\find(seqDef{u (variable)}(Z(0(#)),x,seqGet<[any]>(s,u))) \varcond(\notFreeIn(v (variable), s (Seq term)), \notFreeIn(v (variable), x (int term)), \notFreeIn(u (variable), s (Seq term)), \notFreeIn(u (variable), x (int term))) \replacewith(if-then-else(equals(seqLen(s),x),s,if-then-else(gt(seqLen(s),x),seqSub(s,Z(0(#)),x),seqConcat(s,seqDef{v (variable)}(seqLen(s),x,seqGetOutside))))) \heuristics(simplify_enlarging) @@ -15885,7 +15885,7 @@ Choices: sequences:on} == seqDef_one_summand (seqDef_one_summand) ========================================= seqDef_one_summand { \find(seqDef{uSub (variable)}(from,idx,t)) -\sameUpdateLevel\varcond(\notFreeIn(uSub (variable), idx (int term)), \notFreeIn(uSub (variable), from (int term))) +\varcond(\notFreeIn(uSub (variable), idx (int term)), \notFreeIn(uSub (variable), from (int term))) \replacewith(if-then-else(equals(add(from,Z(1(#))),idx),seqSingleton(subst{uSub (variable)}(from,t)),seqDef{uSub (variable)}(from,idx,t))) Choices: sequences:on} @@ -15909,8 +15909,8 @@ Choices: sequences:on} ----------------------------------------------------- == seqGetAlphaCast (seqGetAlphaCast) ========================================= seqGetAlphaCast { -\find(alpha::seqGet(seq,at)) -\add [equals(alpha::cast(any::seqGet(seq,at)),alpha::seqGet(seq,at))]==>[] +\find(seqGet<[alpha]>(seq,at)) +\add [equals(cast<[alpha]>(seqGet<[any]>(seq,at)),seqGet<[alpha]>(seq,at))]==>[] \heuristics(inReachableStateImplication) Choices: sequences:on} ----------------------------------------------------- @@ -15944,7 +15944,7 @@ Choices: programRules:Java} seqIndexOf { \find(seqIndexOf(s,t)) \varcond(\notFreeIn(m (variable), t (any term)), \notFreeIn(m (variable), s (Seq term)), \notFreeIn(n (variable), t (any term)), \notFreeIn(n (variable), s (Seq term))) -\add [imp(exists{n (variable)}(and(and(leq(Z(0(#)),n),lt(n,seqLen(s))),equals(any::seqGet(s,n),t))),and(and(and(leq(Z(0(#)),seqIndexOf(s,t)),lt(seqIndexOf(s,t),seqLen(s))),equals(any::seqGet(s,seqIndexOf(s,t)),t)),all{m (variable)}(imp(and(leq(Z(0(#)),m),lt(m,seqIndexOf(s,t))),not(equals(any::seqGet(s,m),t))))))]==>[] +\add [imp(exists{n (variable)}(and(and(leq(Z(0(#)),n),lt(n,seqLen(s))),equals(seqGet<[any]>(s,n),t))),and(and(and(leq(Z(0(#)),seqIndexOf(s,t)),lt(seqIndexOf(s,t),seqLen(s))),equals(seqGet<[any]>(s,seqIndexOf(s,t)),t)),all{m (variable)}(imp(and(leq(Z(0(#)),m),lt(m,seqIndexOf(s,t))),not(equals(seqGet<[any]>(s,m),t))))))]==>[] Choices: sequences:on} ----------------------------------------------------- @@ -15990,7 +15990,7 @@ Choices: programRules:Java} == seqOutsideValue (seqOutsideValue) ========================================= seqOutsideValue { \find(seqGetOutside) -\add [all{s (variable)}(all{iv (variable)}(imp(or(lt(iv,Z(0(#))),leq(seqLen(s),iv)),equals(any::seqGet(s,iv),seqGetOutside))))]==>[] +\add [all{s (variable)}(all{iv (variable)}(imp(or(lt(iv,Z(0(#))),leq(seqLen(s),iv)),equals(seqGet<[any]>(s,iv),seqGetOutside))))]==>[] Choices: sequences:on} ----------------------------------------------------- @@ -16017,14 +16017,14 @@ Choices: programRules:Java} == seqSelfDefinition (seqSelfDefinition) ========================================= seqSelfDefinition { \find(seq) -\add [all{s (variable)}(equals(s,seqDef{u (variable)}(Z(0(#)),seqLen(s),any::seqGet(s,u))))]==>[] +\add [all{s (variable)}(equals(s,seqDef{u (variable)}(Z(0(#)),seqLen(s),seqGet<[any]>(s,u))))]==>[] Choices: sequences:on} ----------------------------------------------------- == seqSelfDefinitionEQ2 (seqSelfDefinition) ========================================= seqSelfDefinitionEQ2 { \assumes ([equals(seqLen(s),x)]==>[]) -\find(seqDef{u (variable)}(Z(0(#)),x,any::seqGet(s,u))) +\find(seqDef{u (variable)}(Z(0(#)),x,seqGet<[any]>(s,u))) \sameUpdateLevel\varcond(\notFreeIn(u (variable), s (Seq term)), \notFreeIn(u (variable), x (int term))) \replacewith(s) \heuristics(simplify) @@ -16135,7 +16135,7 @@ setJavaCardTransient { #jcsystemType.#setTransient(#se, #se1)@#jcsystemType; ... }}| (post)) \replacewith([]==>[not(equals(#se,null))]) ; -\replacewith([]==>[update-application(elem-update(heap)(store(heap,#se,java.lang.Object::#$transient,#se1)),#allmodal(post))]) +\replacewith([]==>[update-application(elem-update(heap)(store(heap,#se,java.lang.Object::#$transient,#se1)),#allmodal(post))]) \heuristics(simplify_prog) Choices: (programRules:Java & JavaCard:on)} ----------------------------------------------------- @@ -16340,93 +16340,93 @@ Choices: true} ----------------------------------------------------- == simplifySelectOfAnon (simplifySelectOfAnon) ========================================= simplifySelectOfAnon { -\find(equals(beta::select(anon(h,s,h2),o,f),sk)==>) +\find(equals(select<[beta]>(anon(h,s,h2),o,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(anon(h,s,h2),o,f)) +\find(select<[beta]>(anon(h,s,h2),o,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),elementOf(o,f,freshLocs(h))),beta::select(h2,o,f),beta::select(h,o,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),elementOf(o,f,freshLocs(h))),select<[beta]>(h2,o,f),select<[beta]>(h,o,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfAnonEQ (simplifySelectOfAnonEQ) ========================================= simplifySelectOfAnonEQ { \assumes ([equals(anon(h,s,h2),EQ)]==>[]) -\find(equals(beta::select(EQ,o,f),sk)==>) +\find(equals(select<[beta]>(EQ,o,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(EQ,o,f)) +\find(select<[beta]>(EQ,o,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),elementOf(o,f,freshLocs(h))),beta::select(h2,o,f),beta::select(h,o,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(or(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),elementOf(o,f,freshLocs(h))),select<[beta]>(h2,o,f),select<[beta]>(h,o,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfCreate (simplifySelectOfCreate) ========================================= simplifySelectOfCreate { -\find(equals(beta::select(create(h,o),o2,f),sk)==>) +\find(equals(select<[beta]>(create(h,o),o2,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(create(h,o),o2,f)) +\find(select<[beta]>(create(h,o),o2,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::#$created)),beta::cast(TRUE),beta::select(h,o2,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::#$created)),cast<[beta]>(TRUE),select<[beta]>(h,o2,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfCreateEQ (simplifySelectOfCreateEQ) ========================================= simplifySelectOfCreateEQ { \assumes ([equals(create(h,o),EQ)]==>[]) -\find(equals(beta::select(EQ,o2,f),sk)==>) +\find(equals(select<[beta]>(EQ,o2,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(EQ,o2,f)) +\find(select<[beta]>(EQ,o2,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::#$created)),beta::cast(TRUE),beta::select(h,o2,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),not(equals(o,null))),equals(f,java.lang.Object::#$created)),cast<[beta]>(TRUE),select<[beta]>(h,o2,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfMemset (simplifySelectOfMemset) ========================================= simplifySelectOfMemset { -\find(equals(beta::select(memset(h,s,x),o,f),sk)==>) +\find(equals(select<[beta]>(memset(h,s,x),o,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(memset(h,s,x),o,f)) +\find(select<[beta]>(memset(h,s,x),o,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),x,beta::select(h,o,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),x,select<[beta]>(h,o,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfMemsetEQ (simplifySelectOfMemsetEQ) ========================================= simplifySelectOfMemsetEQ { \assumes ([equals(memset(h,s,x),EQ)]==>[]) -\find(equals(beta::select(EQ,o,f),sk)==>) +\find(equals(select<[beta]>(EQ,o,f),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(EQ,o,f)) +\find(select<[beta]>(EQ,o,f)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),x,beta::select(h,o,f)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(elementOf(o,f,s),not(equals(f,java.lang.Object::#$created))),x,select<[beta]>(h,o,f)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfStore (simplifySelectOfStore) ========================================= simplifySelectOfStore { -\find(equals(beta::select(store(h,o,f,x),o2,f2),sk)==>) +\find(equals(select<[beta]>(store(h,o,f,x),o2,f2),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(store(h,o,f,x),o2,f2)) +\find(select<[beta]>(store(h,o,f,x),o2,f2)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::#$created))),beta::cast(x),beta::select(h,o2,f2)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::#$created))),cast<[beta]>(x),select<[beta]>(h,o2,f2)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- == simplifySelectOfStoreEQ (simplifySelectOfStoreEQ) ========================================= simplifySelectOfStoreEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) -\find(equals(beta::select(EQ,o2,f2),sk)==>) +\find(equals(select<[beta]>(EQ,o2,f2),sk)==>) \addrules [replaceKnownSelect { -\find(beta::select(EQ,o2,f2)) +\find(select<[beta]>(EQ,o2,f2)) \inSequentState\replacewith(sk) \heuristics(concrete) -Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::#$created))),beta::cast(x),beta::select(h,o2,f2)),sk)]==>[]) +Choices: programRules:Java}] \replacewith([equals(if-then-else(and(and(equals(o,o2),equals(f,f2)),not(equals(f,java.lang.Object::#$created))),cast<[beta]>(x),select<[beta]>(h,o2,f2)),sk)]==>[]) \heuristics(simplify_select) Choices: programRules:Java} ----------------------------------------------------- @@ -16676,14 +16676,14 @@ Choices: true} ----------------------------------------------------- == ssubsortDirect (ssubsortDirect) ========================================= ssubsortDirect { -\find(ssubsort(alphSub::ssort,alph::ssort)) +\find(ssubsort(ssort<[alphSub]>,ssort<[alph]>)) \replacewith(true) \heuristics(simplify) Choices: true} ----------------------------------------------------- == ssubsortSup (ssubsortSup) ========================================= ssubsortSup { -\find(ssubsort(alph::ssort,alphSub::ssort)) +\find(ssubsort(ssort<[alph]>,ssort<[alphSub]>)) \varcond(\not\same(alphSub, alph)) \replacewith(false) \heuristics(simplify) @@ -16759,7 +16759,7 @@ stringAssignment { \find(#normalassign ((modal operator))|{{ .. #v = #slit; ... }}| (post)) -\sameUpdateLevel\add [not(equals(strPool(#slit),null)),equals(select<[boolean]>(heap,strPool(#slit),java.lang.Object::#$created),TRUE)]==>[] \replacewith(update-application(elem-update(#v (program Variable))(strPool(#slit)),#normalassign(post))) +\sameUpdateLevel\add [not(equals(strPool(#slit),null)),equals(select<[boolean]>(heap,strPool(#slit),java.lang.Object::#$created),TRUE)]==>[] \replacewith(update-application(elem-update(#v (program Variable))(strPool(#slit)),#normalassign(post))) \heuristics(simplify_prog_subset, simplify_prog) Choices: true} ----------------------------------------------------- @@ -16890,7 +16890,7 @@ Choices: sequences:on} subSeqConcatEQ { \assumes ([equals(seqConcat(s1,s2),EQ)]==>[]) \find(seqSub(EQ,l,u)) -\replacewith(seqConcat(seqSub(s1,l,if-then-else(lt(seqLen(s1),u),seqLen(s1),u)),seqSub(s2,if-then-else(lt(l,seqLen(s1)),Z(0(#)),sub(l,seqLen(s1))),sub(u,seqLen(s1))))) +\sameUpdateLevel\replacewith(seqConcat(seqSub(s1,l,if-then-else(lt(seqLen(s1),u),seqLen(s1),u)),seqSub(s2,if-then-else(lt(l,seqLen(s1)),Z(0(#)),sub(l,seqLen(s1))),sub(u,seqLen(s1))))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- @@ -16912,7 +16912,7 @@ Choices: sequences:on} subSeqHeadSeqDefEQ { \assumes ([equals(seqDef{i (variable)}(Z(0(#)),u,a),EQ)]==>[]) \find(seqSub(seqConcat(EQ,seq),Z(0(#)),u)) -\replacewith(seqDef{i (variable)}(Z(0(#)),u,a)) +\sameUpdateLevel\replacewith(seqDef{i (variable)}(Z(0(#)),u,a)) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- @@ -16934,7 +16934,7 @@ Choices: sequences:on} subSeqSingleton2EQ { \assumes ([equals(seqSingleton(x),EQ)]==>[]) \find(seqSub(EQ,l,u)) -\replacewith(seqConcat(seqSub(seqEmpty,if-then-else(lt(l,Z(0(#))),l,Z(0(#))),if-then-else(lt(u,Z(0(#))),u,Z(0(#)))),seqConcat(if-then-else(and(leq(l,Z(0(#))),geq(u,Z(1(#)))),seqSingleton(x),seqEmpty),seqSub(seqEmpty,if-then-else(gt(l,Z(0(#))),l,Z(1(#))),if-then-else(gt(u,Z(0(#))),u,Z(1(#))))))) +\sameUpdateLevel\replacewith(seqConcat(seqSub(seqEmpty,if-then-else(lt(l,Z(0(#))),l,Z(0(#))),if-then-else(lt(u,Z(0(#))),u,Z(0(#)))),seqConcat(if-then-else(and(leq(l,Z(0(#))),geq(u,Z(1(#)))),seqSingleton(x),seqEmpty),seqSub(seqEmpty,if-then-else(gt(l,Z(0(#))),l,Z(1(#))),if-then-else(gt(u,Z(0(#))),u,Z(1(#))))))) \heuristics(simplify_enlarging, no_self_application) Choices: sequences:on} ----------------------------------------------------- @@ -16942,7 +16942,7 @@ Choices: sequences:on} subSeqSingletonEQ { \assumes ([equals(seqSingleton(x),EQ)]==>[]) \find(seqSub(EQ,Z(0(#)),Z(1(#)))) -\replacewith(seqSingleton(x)) +\sameUpdateLevel\replacewith(seqSingleton(x)) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- @@ -18272,14 +18272,14 @@ Choices: programRules:Java} == typeEq (typeEq) ========================================= typeEq { \find(equals(s,t1)==>) -\add [equals(H::instance(s),TRUE),equals(G::instance(t1),TRUE)]==>[] +\add [equals(instance<[H]>(s),TRUE),equals(instance<[G]>(t1),TRUE)]==>[] Choices: true} ----------------------------------------------------- == typeEqDerived (typeEq) ========================================= typeEqDerived { \assumes ([equals(s,t1)]==>[]) -\find(H::instance(s)) +\find(instance<[H]>(s)) \sameUpdateLevel\replacewith(TRUE) \heuristics(concrete, simplify) Choices: true} @@ -18287,7 +18287,7 @@ Choices: true} == typeEqDerived2 (typeEq) ========================================= typeEqDerived2 { \assumes ([equals(s,t1)]==>[]) -\find(G::instance(t1)) +\find(instance<[G]>(t1)) \sameUpdateLevel\replacewith(TRUE) \heuristics(concrete, simplify) Choices: true} @@ -18295,7 +18295,7 @@ Choices: true} == typeStatic (typeStatic) ========================================= typeStatic { \find(s) -\sameUpdateLevel\add [equals(G::instance(s),TRUE)]==>[] +\sameUpdateLevel\add [equals(instance<[G]>(s),TRUE)]==>[] Choices: true} ----------------------------------------------------- @@ -18599,7 +18599,7 @@ Choices: programRules:Java} wellFormedMemsetArrayObject { \find(wellFormed(memset(h,arrayRange(ar,lo,up),x))) \succedentPolarity\varcond(\hasSort(\elemSort(ar (java.lang.Object term)), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),arrayStoreValid(ar,x))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),arrayStoreValid(ar,x))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18615,7 +18615,7 @@ Choices: programRules:Java} wellFormedStoreArray { \find(wellFormed(store(h,o,arr(idx),x))) \succedentPolarity\varcond(\hasSort(\elemSort(o (java.lang.Object term)), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),arrayStoreValid(o,x))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),arrayStoreValid(o,x))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18639,7 +18639,7 @@ Choices: programRules:Java} wellFormedStoreObject { \find(wellFormed(store(h,o,f,x))) \succedentPolarity\varcond(\fieldType(f (Field term), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),equals(alpha::instance(x),TRUE))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),equals(instance<[alpha]>(x),TRUE))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18648,7 +18648,7 @@ wellFormedStoreObjectEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) \find(wellFormed(EQ)) \sameUpdateLevel\succedentPolarity\varcond(\fieldType(f (Field term), alpha)) -\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),equals(alpha::instance(x),TRUE))))) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),equals(instance<[alpha]>(x),TRUE))))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18682,7 +18682,7 @@ wideningCastIntToFloat { \find(#normalassign ((modal operator))|{{ .. #loc = (float) #seCharByteShortInt; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(float::cast(#seCharByteShortInt)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(cast<[float]>(#seCharByteShortInt)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- @@ -18691,7 +18691,7 @@ wideningCastLongToFloat { \find(#normalassign ((modal operator))|{{ .. #loc = (float) #seLong; ... }}| (post)) -\replacewith(update-application(elem-update(#loc (program Variable))(float::cast(#seLong)),#normalassign(post))) +\replacewith(update-application(elem-update(#loc (program Variable))(cast<[float]>(#seLong)),#normalassign(post))) \heuristics(executeFloatAssignment) Choices: programRules:Java} ----------------------------------------------------- From a11861cc53e53c23861de87643719be95325d3b8 Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 30 Mar 2026 13:18:39 +0200 Subject: [PATCH 32/37] Rename polymorphic implicit fields --- .../java/de/uka/ilkd/key/ldt/HeapLDT.java | 12 +++---- .../de/uka/ilkd/key/proof/rules/heap.key | 8 ++--- .../de/uka/ilkd/key/proof/rules/javaRules.key | 32 +++++++++---------- .../objectOfErroneousClass.key | 24 +++++++------- 4 files changed, 38 insertions(+), 38 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java index 3b9fb200544..24cc75dacf0 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java @@ -115,11 +115,11 @@ public HeapLDT(TermServices services) { arr = addFunction(services, "arr"); created = addFunction(services, "java.lang.Object::#$created"); initialized = addFunction(services, "java.lang.Object::#$initialized"); - classPrepared = addParametricFunction(services, "#$classPrepared"); - classInitialized = addParametricFunction(services, "#$classInitialized"); + classPrepared = addParametricFunction(services, "$classPrepared"); + classInitialized = addParametricFunction(services, "$classInitialized"); classInitializationInProgress = - addParametricFunction(services, "#$classInitializationInProgress"); - classErroneous = addParametricFunction(services, "#$classErroneous"); + addParametricFunction(services, "$classInitializationInProgress"); + classErroneous = addParametricFunction(services, "$classErroneous"); length = addFunction(services, "length"); nullFunc = addFunction(services, "null"); acc = addFunction(services, "acc"); @@ -180,9 +180,9 @@ public record SplitFieldName(String className, String attributeName) { */ public static @Nullable SplitFieldName trySplitFieldName(Named symbol) { if (symbol instanceof ParametricFunctionInstance pfi) { - // e.g., #$classErroneous<[A]> + // e.g., $classErroneous<[A]> return new SplitFieldName(pfi.getArgs().head().sort().toString(), - pfi.getBase().name().toString().substring(1)); + pfi.getBase().name().toString()); } var name = symbol.name().toString(); diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key index 33a171b80ba..ce3223dd896 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heap.key @@ -31,10 +31,10 @@ \unique Field java.lang.Object::#$transactionConditionallyUpdated; \unique Field java.lang.Object::#$created; \unique Field java.lang.Object::#$initialized; - \unique Field #$classPrepared<[alpha]>; // static - \unique Field #$classInitialized<[alpha]>; // static - \unique Field #$classInitializationInProgress<[alpha]>; // static - \unique Field #$classErroneous<[alpha]>; // static + \unique Field $classPrepared<[alpha]>; // static + \unique Field $classInitialized<[alpha]>; // static + \unique Field $classInitializationInProgress<[alpha]>; // static + \unique Field $classErroneous<[alpha]>; // static // array length int length(Object); diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key index 6cdec4dfa9d..915ecc598ce 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/javaRules.key @@ -4052,8 +4052,8 @@ \rules(programRules:Java, initialisation:enableStaticInitialisation) { class_being_initialized_is_prepared { - \assumes(select<[boolean]>(heap, null, #$classInitializationInProgress<[alphaObj]>) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, #$classPrepared<[alphaObj]>)) + \assumes(select<[boolean]>(heap, null, $classInitializationInProgress<[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, $classPrepared<[alphaObj]>)) \sameUpdateLevel \replacewith(TRUE) \heuristics(confluence_restricted, simplify_java) @@ -4061,8 +4061,8 @@ }; initialized_class_is_prepared { - \assumes(select<[boolean]>(heap, null, #$classInitialized<[alphaObj]>) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, #$classPrepared<[alphaObj]>)) + \assumes(select<[boolean]>(heap, null, $classInitialized<[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, $classPrepared<[alphaObj]>)) \sameUpdateLevel \replacewith(TRUE) \heuristics(confluence_restricted, simplify_java) @@ -4070,8 +4070,8 @@ }; initialized_class_is_not_erroneous { - \assumes(select<[boolean]>(heap, null, #$classInitialized<[alphaObj]>) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, #$classErroneous<[alphaObj]>)) + \assumes(select<[boolean]>(heap, null, $classInitialized<[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, $classErroneous<[alphaObj]>)) \sameUpdateLevel \replacewith(FALSE) \heuristics(confluence_restricted, simplify_java) @@ -4079,8 +4079,8 @@ }; class_initialized_excludes_class_init_in_progress { - \assumes(select<[boolean]>(heap, null, #$classInitialized<[alphaObj]>) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, #$classInitializationInProgress<[alphaObj]>)) + \assumes(select<[boolean]>(heap, null, $classInitialized<[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, $classInitializationInProgress<[alphaObj]>)) \sameUpdateLevel \replacewith(FALSE) \heuristics(confluence_restricted, simplify_java) @@ -4088,8 +4088,8 @@ }; class_erroneous_excludes_class_in_init { - \assumes(select<[boolean]>(heap, null, #$classErroneous<[alphaObj]>) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, #$classInitializationInProgress<[alphaObj]>)) + \assumes(select<[boolean]>(heap, null, $classErroneous<[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, $classInitializationInProgress<[alphaObj]>)) \sameUpdateLevel \replacewith(FALSE) \heuristics(confluence_restricted, simplify_java) @@ -4097,8 +4097,8 @@ }; erroneous_class_has_no_initialized_sub_class { - \assumes(select<[boolean]>(heap, null, #$classErroneous<[alphaObj]>) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, #$classInitialized<[betaObj]>)) + \assumes(select<[boolean]>(heap, null, $classErroneous<[alphaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, $classInitialized<[betaObj]>)) \sameUpdateLevel \varcond(\sub(betaObj, alphaObj)) \replacewith(FALSE) @@ -4107,8 +4107,8 @@ }; superclasses_of_initialized_classes_are_initialized { - \assumes(select<[boolean]>(heap, null, #$classInitialized<[betaObj]>) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, #$classInitialized<[alphaObj]>)) + \assumes(select<[boolean]>(heap, null, $classInitialized<[betaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, $classInitialized<[alphaObj]>)) \sameUpdateLevel \varcond(\isReference [non_null](betaObj), \strict \sub(betaObj, alphaObj)) \replacewith(TRUE) @@ -4116,8 +4116,8 @@ }; superclasses_of_initialized_classes_are_prepared { - \assumes(select<[boolean]>(heap, null, #$classInitialized<[betaObj]>) = TRUE, wellFormed(heap) ==>) - \find(select<[boolean]>(heap, null, #$classPrepared<[alphaObj]>)) + \assumes(select<[boolean]>(heap, null, $classInitialized<[betaObj]>) = TRUE, wellFormed(heap) ==>) + \find(select<[boolean]>(heap, null, $classPrepared<[alphaObj]>)) \sameUpdateLevel \varcond(\sub(betaObj, alphaObj)) \replacewith(TRUE) diff --git a/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key b/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key index 0602fc3c207..2564a1a8184 100644 --- a/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key +++ b/key.ui/examples/standard_key/staticInitialisation/objectOfErroneousClass.key @@ -43,43 +43,43 @@ wellFormed(heap) & select<[boolean]>(heap, null, - #$classInitialized<[java.lang.NoClassDefFoundError]>) + $classInitialized<[java.lang.NoClassDefFoundError]>) = TRUE & select<[boolean]>(heap, null, - #$classInitialized<[java.lang.ArithmeticException]>) + $classInitialized<[java.lang.ArithmeticException]>) = TRUE & select<[boolean]>(heap, null, - #$classInitialized<[java.lang.NullPointerException]>) + $classInitialized<[java.lang.NullPointerException]>) = TRUE & select<[boolean]>(heap, null, - #$classInitialized<[A]>) + $classInitialized<[A]>) = FALSE - & select<[boolean]>(heap, null, #$classPrepared<[A]>) + & select<[boolean]>(heap, null, $classPrepared<[A]>) = FALSE & select<[boolean]>(heap, null, - #$classInitializationInProgress<[A]>) + $classInitializationInProgress<[A]>) = FALSE - & select<[boolean]>(heap, null, #$classErroneous<[A]>) + & select<[boolean]>(heap, null, $classErroneous<[A]>) = FALSE & select<[boolean]>(heap, null, - #$classInitialized<[FailedStaticInit]>) + $classInitialized<[FailedStaticInit]>) = FALSE & select<[boolean]>(heap, null, - #$classPrepared<[FailedStaticInit]>) + $classPrepared<[FailedStaticInit]>) = FALSE & select<[boolean]>(heap, null, - #$classInitializationInProgress<[FailedStaticInit]>) + $classInitializationInProgress<[FailedStaticInit]>) = FALSE & select<[boolean]>(heap, null, - #$classErroneous<[FailedStaticInit]>) + $classErroneous<[FailedStaticInit]>) = FALSE -> \<{ errorWhileProcessingMethod=false;try { @@ -91,7 +91,7 @@ } }\> ( select<[boolean]>(heap, null, - #$classErroneous<[FailedStaticInit]>) + $classErroneous<[FailedStaticInit]>) = TRUE & select<[int]>(heap, fsi, From 6d182bd23418b052fb7ba9044c0db344b8bcdf87 Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 31 Mar 2026 12:43:28 +0200 Subject: [PATCH 33/37] Fix conversion of fields --- key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java | 4 +++- key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java index 24cc75dacf0..7de29ff5cdd 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java @@ -448,7 +448,9 @@ public Function getFieldSymbolForPV(LocationVariable fieldPV, Services services) } final Name kind = new Name(name.toString().substring(index + 2)); - var firstInstance = services.getNamespaces().parametricFunctions().lookup(kind); + final String nameWithoutFieldPrefix = kind.toString().substring(1); + var firstInstance = + services.getNamespaces().parametricFunctions().lookup(nameWithoutFieldPrefix); if (firstInstance != null) { Sort sortDependingOn = fieldPV.getContainerType().getSort(); result = ParametricFunctionInstance.get(firstInstance, diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java index 3291924fa8a..a174d389878 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java @@ -149,8 +149,8 @@ protected boolean isJavaFieldConstant(JTerm fieldTerm) { } /* - * Determine whether the field constant is a generic object property. Those are surrounded by - * angle brackets, e.g. o.$created + * Determine whether the field constant is a generic object property. Those are prefixed by the + * separator `#` and the implicit symbol `$`, e.g. o.$created */ protected boolean isBuiltinObjectProperty(JTerm fieldTerm) { final String implicitFieldMarker = JavaDLFieldNames.SEPARATOR + From e5307d3de78d252cea725cb7eebc5e8c73f69967 Mon Sep 17 00:00:00 2001 From: Drodt Date: Tue, 31 Mar 2026 15:12:20 +0200 Subject: [PATCH 34/37] Fix lookup for fields named instance --- key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java index 7de29ff5cdd..e20fb9b1857 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java @@ -451,7 +451,7 @@ public Function getFieldSymbolForPV(LocationVariable fieldPV, Services services) final String nameWithoutFieldPrefix = kind.toString().substring(1); var firstInstance = services.getNamespaces().parametricFunctions().lookup(nameWithoutFieldPrefix); - if (firstInstance != null) { + if (firstInstance != null && firstInstance.sort().extendsTrans(fieldSort)) { Sort sortDependingOn = fieldPV.getContainerType().getSort(); result = ParametricFunctionInstance.get(firstInstance, ImmutableList.of(new GenericArgument(sortDependingOn)), services); From c13286cb10c39d33dde7da44cdddb8213d7bd962 Mon Sep 17 00:00:00 2001 From: Drodt Date: Wed, 1 Apr 2026 08:36:54 +0200 Subject: [PATCH 35/37] Remove implicit idents from lexer --- key.core/src/main/antlr4/KeYLexer.g4 | 1 - 1 file changed, 1 deletion(-) diff --git a/key.core/src/main/antlr4/KeYLexer.g4 b/key.core/src/main/antlr4/KeYLexer.g4 index 15c57919bbe..3b2dd941696 100644 --- a/key.core/src/main/antlr4/KeYLexer.g4 +++ b/key.core/src/main/antlr4/KeYLexer.g4 @@ -391,7 +391,6 @@ LESS: '<'; LESSEQUAL: '<' '=' | '\u2264'; LGUILLEMETS: '<' '<' | '«' | '‹'; RGUILLEMETS: '>''>' | '»' | '›'; -IMPLICIT_IDENT: '<' '$'? (LETTER)+ '>' ('$lmtd')? -> type(IDENT); EQV: '<->' | '\u2194'; CHAR_LITERAL From a0a4ce277487a96373a4e53430c02e78e4bfbe6f Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 20 Apr 2026 10:27:08 +0200 Subject: [PATCH 36/37] Improve comments and ncore lexer (thanks WP) --- key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java | 3 ++- key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java | 2 +- .../uka/ilkd/key/rule/metaconstruct/ArrayBaseInstanceOf.java | 4 ++-- key.ncore/src/main/antlr/KeYLexer.g4 | 4 ---- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java index a174d389878..4d4eb9869ba 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/FieldPrinter.java @@ -150,7 +150,8 @@ protected boolean isJavaFieldConstant(JTerm fieldTerm) { /* * Determine whether the field constant is a generic object property. Those are prefixed by the - * separator `#` and the implicit symbol `$`, e.g. o.$created + * separator `::`, the field prefix `#`, and the marker for implicit symbols `$`, e.g. + * `java.lang.Object::#$created` */ protected boolean isBuiltinObjectProperty(JTerm fieldTerm) { final String implicitFieldMarker = JavaDLFieldNames.SEPARATOR + diff --git a/key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java b/key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java index 2e1c8225c30..a77da0fd98e 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/pp/SelectPrinter.java @@ -237,7 +237,7 @@ private void printArraySelect(LogicPrinter lp, JTerm heapTerm, JTerm objectTerm, } /* - * Print a select-term of the following form: T::select( ... , ... , java.lang.Object::<...>) + * Print a select-term of the following form: select<[T]>( ... , ... , Classname::#fieldname) * For example: select<[boolean]>(heap, object, java.lang.Object::#$created) */ private void printBuiltinObjectProperty(LogicPrinter lp, JTerm t, JTerm heapTerm, diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayBaseInstanceOf.java b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayBaseInstanceOf.java index 6a4b7d44059..fe430fb8fe4 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayBaseInstanceOf.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/metaconstruct/ArrayBaseInstanceOf.java @@ -16,7 +16,7 @@ import org.key_project.logic.sort.Sort; /** - * Creates an Type::instance(..) term for the component type of the array. The component + * Creates an instance<[Type]>(..) term for the component type of the array. The component * type has to be a reference type. */ public final class ArrayBaseInstanceOf extends AbstractTermTransformer { @@ -26,7 +26,7 @@ public ArrayBaseInstanceOf() { } /** - * returns an G::instance(term.sub(1)) term for the element sort of the given array . + * returns an instance<[G]>(term.sub(1)) term for the element sort of the given array . * It is assumed that term.sub(0) is either a term of reference array sort or a term * with an exactInstance symbol as top level depending on a reference array sort. */ diff --git a/key.ncore/src/main/antlr/KeYLexer.g4 b/key.ncore/src/main/antlr/KeYLexer.g4 index ffdc0623c5e..82999d2f805 100644 --- a/key.ncore/src/main/antlr/KeYLexer.g4 +++ b/key.ncore/src/main/antlr/KeYLexer.g4 @@ -660,10 +660,6 @@ RGUILLEMETS | '›' ; -IMPLICIT_IDENT - : '<' (LETTER)+ '>' ('$lmtd')? -> type (IDENT) - ; - EQV : '<->' | '\u2194' From 2e5794809d32aa071e11c8e3acc6665dab6af21a Mon Sep 17 00:00:00 2001 From: Drodt Date: Mon, 20 Apr 2026 10:30:26 +0200 Subject: [PATCH 37/37] Comment --- key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java index e20fb9b1857..8c9a339c4f4 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java +++ b/key.core/src/main/java/de/uka/ilkd/key/ldt/HeapLDT.java @@ -448,7 +448,7 @@ public Function getFieldSymbolForPV(LocationVariable fieldPV, Services services) } final Name kind = new Name(name.toString().substring(index + 2)); - final String nameWithoutFieldPrefix = kind.toString().substring(1); + final String nameWithoutFieldPrefix = kind.toString().substring(1); // '#' var firstInstance = services.getNamespaces().parametricFunctions().lookup(nameWithoutFieldPrefix); if (firstInstance != null && firstInstance.sort().extendsTrans(fieldSort)) {